Hatena::ブログ(Diary)

西新宿のプログラマの日記 このページをアンテナに追加 RSSフィード

2012-12-19

はてな 引退します

はてながあれなので、止めます。

このブログの記事はlilylaboサイト移転させます。

このブログは、記事移転が終わったら削除予定です。その他のはてなサービスは折を見て閉鎖していく予定です。

移転サイト lilylabo http://lily.la/

ご連絡などはTwitterまで @shinjuku_pg http://twitter.com/shinjuku_pg

2012-10-03

Zend server のMySQLが動かない in mountain lion OS X 10.8

良くわからないけど、現状だけ記録しておく。



OS X 10.8.2

Zend Server 5.6.0

MySQLに接続が出来なくなったので、動作確認をしようとしたところ、動いていない。

$ mysqladmin status
/usr/local/zend/mysql/bin/mysqladmin.client: connect to server at 'localhost' failed
error: 'Can't connect to local MySQL server through socket '/usr/local/zend/mysql/tmp/mysql.sock' (2)'
Check that mysqld is running and that the socket: '/usr/local/zend/mysql/tmp/mysql.sock' exists!


$ mysqladmin start

とやってみても、上と同じようにソケットがないって言われる。

Zend Serverごと再インストールすると直るが、恐らく再起動のタイミングで再び同じ現象に。


そこで、Zend Serverごと再起動してみる。

$ sudo  /usr/local/bin/zendctl.sh restart
Stopping Deployment [OK]
Starting Deployment [OK]
[03.10.2012 08:40:44 SYSTEM] watchdog for zdd is running.
[03.10.2012 08:40:44 SYSTEM] zdd is running.
Stopping Zend Server Monitor node [OK]
Starting Zend Server Monitor node [OK]
[03.10.2012 08:40:50 SYSTEM] watchdog for monitor is running.
[03.10.2012 08:40:50 SYSTEM] monitor is running.
-e /usr/local/zend/bin/apachectl stop [OK]
-e /usr/local/zend/bin/apachectl start [OK]
Stopping Zend Server GUI [Lighttpd] [OK]
spawn-fcgi: child spawned successfully: PID: 936
Starting Zend Server GUI [Lighttpd] [OK]
Stopping Java bridge [OK]
Starting Java bridge [OK]
Stopping JobQueue [OK]
Starting JobQueue [OK]

あれれ?MySQLでてこないよ。

良くわからないので、MySQLをzendctlから起動してみると

$ sudo  /usr/local/bin/zendctl.sh restart-mysql

 ERROR! MySQL manager or server PID file could not be found!
Starting MySQL
. SUCCESS!

MySQLのPIDみつからないよー

MySQLスタートさせるよー

成功したよ!」って感じ。



あらら?起動した。アプリケーションも正常に動作します。

なんだろなぁ〜これ。


OSの起動時にZendServerのスタートプロセスってどれが呼ばれてるのかな?こういうのどうやって調べるのか忘れた。

まあ最悪、shellファイル作ってスタートアップに登録でいけるかな。


どうも、昔もこんな現象あった気がするんだけど、どうやって解決したか覚えてないのです。デジャブかな。

2011-11-05

CORE SERVERでIP制限とパスワード認証をサイト全体に導入する方法

備忘録です。

軽く調べたらIP制限については情報がなかったので、実際に試してちゃんと動作したのでめもめも。

とりあえず、パスワード生成して、.htpasswdに保存する。

パスワード生成はいろいろ方法があるけど、CORE SERVERのコントロールパネルから「ツール」=>「htpasswdの生成」でフォームを入力するとテキストが出てくるので、それをコピーして、認証をかけたいディレクトリに「.htpasswd」というファイルを作成して貼り付ける。「name:aisrVYJBuecKI」こんな感じのテキストです。

例えば、shinjuku_pg.com というサイト全体に認証をかけたい場合、

「/virtual/USERNAME/public_html/shinjuku_pg/.htpasswd」にファイルを作成する。「USERNAME」は自分ユーザー名に置き換えてください。

コントロールパネルのファイルマネージャからだと。USERNAMEまで省略されて表示されるので、「/public_html/shinjuku_pg/.htpasswd」ですね。

次に、.htaccessファイルを作成。

上のパスワードファイルと同じ場所に「.htaccess」というファイルを作成。

下記内容を書き込む。

order deny,allow

deny from all

allow from 123.456.789.001

allow from 123.456.789.002

AuthUserFile /virtual/USERNAME/public_html/DOMAIN.COM/.htpasswd

AuthGroupFile /dev/null

AuthName "Contact me!@shinjuku_pg"

AuthType Basic

require valid-user

allow from 123.456.789.001

IP部分は許可したいIPに書き換える。複数のIPを許可したい場合は、alow~の行を複数書けばよい。

「USERNAME」は自分ユーザー名に置き換えてください。

「DOMAIN.COM」は制限したいドメイン名もしくはディレクトリです。

「AuthName」の項目は好きに書いてokです。

これだけで、許可したIPアドレスからしかアクセスができなくなります。許可IPからでもパスワードが必要です。

個人的にはこんな設定が必要になることなんてあり得ないんですけどね。

セキュリティ的にbasic認証なんて気休めだけど、core serverはdigest認証使えなかった気がするし仕方ないのか。せめて共有SSL使わないと。

安いサーバセキュリティ求められてもムリですし。

2011-03-15

Zend_DateでTwitterの日付を整形・変換

Twitterの日付フォーマットはZend_Dateでは「"EEE MMM dd HH:mm:ss Z YYYY"」となっているはずなのだが、上手くいかない。

めんどくさいので、Zend_Dateのバグと言う事にして回避策を講じてみた。

$response->created_at = "Mon Mar 14 10:27:05 +0000 2011"

$date = new Zend_Date(strtotime($response->created_at));
print_r($date->toArray());

Array
(
    [day] => 14
    [month] => 3
    [year] => 2011
    [hour] => 19
    [minute] => 27
    [second] => 05
    [timezone] => JST
    [timestamp] => 1300098425
    [weekday] => 1
    [dayofyear] => 72
    [week] => 11
    [gmtsecs] => 32400
)

とりあえず、strtotimeが優秀で、誤変換なども今のところなく動いている。

言ってしまえば、Zend_Dateを使う意味が全く無いのだが・・・

ちなみに、本来ならきっと動くはずのZend_Dateを使ったやり方。

間違いがあったら、是非ご教授頂きたいです。

$date = new Zend_Date($response->created_at, "EEE MMM dd HH:mm:ss Z YYYY");
print_r($date->toArray());

Array
(
    [day] => 14
    [month] => 3
    [year] => 0
    [hour] => 10
    [minute] => 27
    [second] => 05
    [timezone] => JST
    [timestamp] => -62161047175
    [weekday] => 5
    [dayofyear] => 73
    [week] => 11
    [gmtsecs] => 0
)

ご覧の通り、yearの判別が上手くいかないです。

2011-01-27

MacローカルのZendFrameworkとNetBeansでコマンドラインツールが動かないときの対処

Warning: include_once(NetBeansCommandsProvider.php): failed to open stream: No such file or directory in /usr/local/zend/share/ZendFramework/library/Zend/Loader.php on line 146

コマンドラインでzfコマンドを使ったらこんなエラーが発生した。

たぶん、NetBeansZend Frameworkの設定をした時のみ発生すると思われる。

結論から言うと、ZendFFのバグで.zf.iniを修正することで回避できる。

$ vim ~/.zf.ini 

コマンドラインツールの設定を編集

php.includepath = "/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/php/zend:.:/usr/local/zend/share/ZendFramework/library:/usr/local/zend/share/pear"

上記のような内容になってるはずなので、以下の様に修正。

php.include_path = "/Applications/NetBeans/NetBeans 6.9.1.app/Contents/Resources/NetBeans/php/zend:.:/usr/local/zend/share/ZendFramework/library:/usr/local/zend/share/pear"

冒頭のphp.includepathをphp.include_pathに治すだけです。

これで、

$ zf show version
Zend Framework Version: 1.10.1

こんな風にちゃんと動きます。

ソースはこちら。

https://netbeans.org/bugzilla/show_bug.cgi?format=multiple&id=187234