インストールマニアックスとWindows Azure Companion   1 comment

Posted at 2:00 pm in internet

こんにちは。
毎日休みで周りの冷たい視線にも耐えられる鉄よりも硬くゴムのようにしなやかな強靱な精神力の持ち主だと自負しているのですが、現実問題としてお金の方も意外と好きなので、実のところたまには働いている山本です。

で、先月からはどんなことをして糊口をしのいでいたのかというと、インストールマニアックス4というイベントに関わっていたわけです。twitterなどでフォローしている奇特な人たちはとっくにご存じかもしれませんが、プレイングマネージャーとして(若干嘘)参加者に混じってインストールしながらtwitterの中の人なんかをやっておりました。

で、予選期間も終わったので、インストールマニアックス4とそこで初心者のみんなが特典をゲットするために使用したであろうWindows Azure Companionについて個人的にまとめておきたいと思います。もちろん事務局とは全く関係ありませんよ。


とりあえず、インストールマニアックス4ですが、皆様お疲れさまでした。鋭意チェック&審査中ですので今しばらくお待ちください。

で、参加者の方ですが、ほとんどの人がWindows Azure Companionを使用されていたようです。まあ、これを使うとwamp的な環境が簡単にAzure上に構築できるのだからむべなるかなという印象です。10月に発表されたのですが、これがなければ「とりあえず1つインストール」の敷居がとてつもなく上がっていた気がするので天恵だったわけですが、逆にWindows Azureとはなんぞや?という部分がちょっと曖昧になった気がしなくもないです。

これを読んでWindows AzureとCompanionに興味を持った方は、クレジットはないですが私の書いたWindow Azureの登録の仕方できる!?Windows Azure Companionなどをお読み頂ければちょっとくらいは役に立てるかもしれません。MSDNの750時間無料ライセンスなんかを持っているけど使ってないようという人は入れてみるのもいいかもしれません。

とはいえVM RoleやらSDK1.3やらいろいろ発表されているので時代の徒花になってしまうかもしれませんが、参加してつかんだWindows Azure CompanionでたくさんOSSをインストールするにあたってのバッドノウハウをちょっとだけ。

その前にCompanionってどうよ?とか思っている人はこのスライドでも見てみてください(ちょっと間違いがありますが)。

・Include Pathを設定しないと死ぬ
デフォルトではInclude Pathがちゃんと設定されていないらしく、include()やrequire()が基本的にエラーになります。
個々にset_include_path(‘./’);
を追加するというのも考えたのですが、さすがにアレなので、
php.iniにカレントディレクトリを追加します。
コメントアウトされているinclude_pathのコメントを外せばいいのかと思ってたら
実は下にもう1つあって、そこの設定に追加する必要があって気付くまでに数時間(涙)

・内部ポートと外部ポートが違う
Companionの大きな問題点の1つが外向けにはポート80で待ち受けているWebサーバが実は内部では20000で待ち受けているということがあります。プロキシなりが処理しているので外からは問題ではないのですが、内部からプログラムがアクセスしたときには自分のポートを20000だと正直に返してしまうので、ポートを見て80だったら、http://bogus.jp/、80じゃなかったらhttp://bogus.jp:8080/みたいにして返す↓のような親切なコードがあると死亡ってかんじです。

if($_SERVER['SERVER_PORT']!=80)
$hostname .= ':'.$_SERVER['SERVER_PORT'];

動くようにするには↑のような処理を片っ端から削除するか、URLがハードコードできるなら設定すると動くようになると思いますが、まあ、面倒です。環境変数を書き換えるって手もあるのかもしれませんがやり方は知りません。

・データベースのポートが20003
Azure CompanionではMySQLの代わりにMySQLクローンのMariaDBというのを使ってて、ほぼ問題なくMySQLを使うアプリは動作するのですが、それとは関係なくポート番号がデフォルトの3306でなく20003で動いているのが問題になります。
前のようにWebサーバのポート番号は厭になるほどチェックしているのですが、DBのポートはデフォルト前提で作られているOSSが多いようで、普通にバグだと思うのですが、ポートの指定ができないものや、ポートを指定すると動かないものが結構あるようです。
対応方法は、DB接続のところにポート番号を埋め込んでみたり、DB接続のコードを書き換えてみたりと、普通にOSSソース書き換えできてよかった\(^o^)/みたいなかんじです。server@localhost:20003みたいなところの処理でどうして:以下を削除するコードとか書くかな(愚痴)

・ディスク容量の問題
で、Companionですが、仮想ドライブが1Gしかないのです。で、突っ込んだソースやデータが1Gに近づくとどうなるかということですが、入れすぎると壊れます。いろいろ聞いたところと経験したところを総合しますと、まずDBが壊れるみたいです。そしてヘタに再起動なんかしたら、サイトごと動かなくなって今までのインストールしたアプリとかけた時間は(号泣)ということになります(実際になった)。
で、入れすぎてパンク、となったときに何をすればいいかというと、まず、使わないデータを削除して、そして再起動なり再デプロイなりをすれば、うまく行けば復旧するらしいです。僕はいろいろやって復旧しなかったのでしりません。
ぶっちゃけディスク容量を増やせばいいのですが、コードのビルドもできないようなアホタンの私にはどうしようもないので(ソース読めよ)我慢するしかありません。

・Web.configを消すと死ぬ
あと、細かい問題ですが、ドキュメントルートにあるWeb.configファイルを消すとサイトにアクセスできなくなります。焦ると思いますが、Companionから「PHP Web Site」をRestartすれば復活できますのでご安心を。

このようにインストールは簡単ですが、いろいろ面倒なところもあるWindows Azure Companionですが、興味のある方は使ってみるのもいいのではないでしょうか。

Written by bogus on 12月 16th, 2010