Hatena::ブログ(Diary)

hrendohの日記

2011-06-06

PHPFogでCakePHPアプリを動かしてみた

PHPFog(https://phpfog.com/)は、Ruby on RailsのPaaS HerokuのPHP版です。

PHPFogもHeroku同様にEC2上で提供されるサービスです。価格は、EC2をそのまま使うよりは割高ですが、運用の手間を考えるとプラットフォームのひとつとして検討したいところです。

以下、動かしてみたときのメモです。

サインアップ

右上の[SIGN UP]をクリックしてサインアップ開始、クレジットカードを登録しなくてもとりあえずアカウントは作成できます。

f:id:hrendoh:20110607014227p:image

アプリケーションを作成する

サインナップ後、引き続きアプリケーション作成のウィザードが表示されます。

f:id:hrendoh:20110607012155p:image

今回はCakePHPアプリケーションを選択しました。

次の画面でインスタンスのプランを選択します。

f:id:hrendoh:20110607011246p:image

SilverでMicroインスタンス相当29$、素でMicroインスタンス使った場合us-eastでも15$弱はするので十分安い気がする。

とりあえずFreeを選択しました。

次の画面では、CakePHPのユーザID/パスワードドメインの設定をします。

f:id:hrendoh:20110607012156p:image

ここで指定したユーザIDとパスワードデータベースのユーザIDとパスワードになります(ユーザIDは、「<指定したユーザID>-<自動に割り振られる数値>」になります)。

ドメインを取得していない場合は[or, use a phpfogapp.com domain name]をクリックするとphpfogのサブドメインで動作するように設定されます。

アプリケーションの作成が終わって、indexページにアクセスするとオールグリーンです。楽だ。

f:id:hrendoh:20110517004532p:image

アプリケーションデプロイ方法

PHPFogに作成したアプリケーションを更新するにはgitのコマンドを利用します。

(以降のアプリケーション設定のスクリーンショットは古くなっています。)

SSHキーを生成し登録する。

以下のページの説明にしたがってSSHキーを生成します。

http://docs.phpfog.com/index.php/features/article/generating_a_ssh_key

$ cd ~/.ssh

「そのようなファイルやディレクトリはありません」と言われたらディレクトリを作ります。

$ mkdir ~/.ssh
$ cd ~/.ssh

.sshディレクトリの中身を表示して、id_rsaおよびis_rsa.pubファイルがあったらバックアップして削除します。

$ ls
id_rsa	id_rsa.pub	known_hosts
$ mkdir key_backup
$ cp id_rsa* key_backup
$rm id_rsa*

キーを生成します。ファイル名はデフォルトパスワード無しだと以下のようにコンソールに表示されます。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hrendoh/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/hrendoh/.ssh/id_rsa.
Your public key has been saved in /home/hrendoh/.ssh/id_rsa.pub.
The key fingerprint is:
a1:28:72:04:87:5c:9f:2c:a8:93:67:db:ed:8a:16:f9 hrendoh@hrendoh-PC
The key's randomart image is:
+--[ RSA 2048]----+
|o.o.             |
|.+. o .          |
| ... +  .        |
|.o  .. . .       |
|= =.. . S        |
| *o+ .           |
|  .o. .          |
|  ..E.           |
| .. ...          |
+-----------------+

[MyAccounts]の[SSH Keys]タブを開き[Add another SSH Key]をクリックし、生成された.ssh/id_rsa.pubファイルをテキストエディタで表示し全体をコピーして、[SSH Public Key]テキストエリアに貼り付け保存します。

f:id:hrendoh:20110517001202p:image

Gitリポジトリを作成

AppConsoleの[Source code]タブを開くと作成したアプリケーションリポジトリを確認できます。

f:id:hrendoh:20110517001003p:image

gitが入っていない場合は

$ sudo apt-get install git
$ git clone git@git.phpfog.com:cakephp.phpfogapp.com

cakephp.phpfogapp.comディレクトリ以下にCakePHPのプロジェクトができる。

データベースの設定まで終わって居るので超簡単。

git cloneで以下のエラーが出た場合は

Agent admitted failure to sign using the key.
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

ssh-addしてみてください。

$ ssh-add ~/.ssh/id_rsa
データベースにテーブル定義

PHPMyAdminが使えます。

PHPMyAdminへのリンクはAppConsoleの[Source code]タブを開くとあります。

f:id:hrendoh:20110517003659p:image

phpmyadminパスワードは、CakePHPの場合はapp/config/database.phpでも確認できますが、アプリケーション作成のStep 3で指定したパスワードが設定されています。

アプリケーションコミット
$ cd cakephp.phpfogapp.com/
$ git add .
$ git commit . -m "commit cakephp app"
$ git push

PHPFogの特徴

今回試してみて、気づいた点をいくつか

.htaccess ini_setを利用可能

PaaSですが、結構柔軟な設定が可能です。

http://docs.phpfog.com/index.php/features/article/set_php.ini_values_using_.htaccess_and_set_ini

 外部ライブラリの利用について

PHPFogは、include_pathをアプリケーションで設定することはできないように設定されているようです。

http://help.phpfog.com/discussions/problems/729-open_basedir-restriction

CakePHPのvendorsはデフォルトでパスを通すとかして欲しい気もしますが、include_pathを出力してみると以下のパスが通っていることが分かります。

.:/usr/share/php:/usr/share/pear:/usr/share/php/libzend-framework-php:/var/fog/apps/app5868/tmp:/var/fog/apps/<アプリケーションID>/<アプリケーション名>.phpfogapp.com

PEARとZENDのライブラリアプリケーションのルートディレクトリにパスが通って要るので、これでやりくりする必要があるようです。

メールも送信できる

メールの送信も行えます。

http://docs.phpfog.com/index.php/features/article/sending_email

実際に、mb_send_mailでメール送信するアプリケーションを動かして見ましたが、日本語も化けずに送信できました。

35通/秒くらいの量であれば可能だが信頼性のある方法では無いと書いてある。

アプリケーションログが見れない

これが無いとまだ運用は無理か

試使用の制限はおおきい

アカウントごとに、6ヶ月間1アプリケーションだけ無料で使えます。

以上、まだRubyのHerokuほどの機能はありあせんが今後に期待ですね。

cakecake 2011/11/05 12:05 私もやってみたんですが、http://nari-cake.phpfogapp.com/のようになって、何も表示されないんですよね。何が足りてないか分かりますか?.htaccessは allow from all としてるんですが。さすがにcakeもgitも使ったことない人間には、難しい感じですかね。

pakuepakue 2011/12/08 10:42 サービスレベルが変更になりましたね。
今までは6ヶ月間は無料だったのが、実行環境としては永久無料になってます。(その代わり、DBサイズ等で課金される)また、3つのアプリまでは無料で公開することができるようになってます。
PaaSの競争が激化している影響ですかね。
詳しくはこちらに書かれてますので、この記事で気になったかたは一度目を通されると良いと思います。

http://blog.phpfog.com/2011/12/06/php-fog-is-free-forever-and-now-even-more-free/

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証