PHPer.jpでSymfony2のblogチュートリアルを動かすためにやったこと
http://phper.jp/でhttp://docs.symfony.gr.jp/sf2-blog-tutorial/を動してみたので、雑なまとめですが、やった設定の備忘録。
最終的に下記のような構成に。
/path/to/approot/ - .phper/ # phper.jp用設定ファイル群 - Symfony/ # blogチュートリアルアプリケーション - phpMyAdmin/ # 管理用phpMyAdmin
1. phper.jpに登録
http://phper.jp/quickstartを見てユーザ登録〜デプロイまで進める。
ドキュメントルートは Symfony/web にしておく。
2. phperコマンドのインストール
Ruby製のphperというCLIツールが用意されているので、http://blog.phper.jp/2011/03/07/94/を参考にRuby環境整えて
$ gem install phper
で、phperコマンドをインストール。
4. phper.jp用に設定の修正
■ Symfony/web/app_dev.php、Symfony/web/config.phpのアクセス制限変更
http://blog.phper.jp/2011/03/05/28/の構成を見るとフロントにproxyが居るので、
$_SERVER['REMOTE_ADDR']だけじゃなくて、$_SERVER['HTTP_X_FORWARDED_FOR']も見てやるようにする。
# /path/to/approot/Symfony/web/app_dev.php # /path/to/approot/Symfony/web/config.php <?php ... $remoteIpAddresses = array_merge( (array)@$_SERVER['REMOTE_ADDR'], array_map('trim', explode(',', @$_SERVER['HTTP_X_FORWARDED_FOR'])) ); $allowIpAddresses = array( '127.0.0.1', '::1', 'your-global-ip-address', // 自分の接続元グローバルIP ); if (count(array_intersect($remoteIpAddresses, $allowIpAddresses)) === 0) { header('HTTP/1.0 403 Forbidden'); die('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.'); } ...
■ .gitignore
下記をgitの管理対象外にする。
# /path/to/approot/Symfony/.gitignore */logs/* */cache/* app/config/parameters.ini
parameters.iniはローカル、phper.jp上で異なるのでgit管理対象外として、下記のようにした。
# /path/to/approot/Symfony/app/config/parameters.phper.ini [parameters] database_driver = pdo_mysql database_host = db.phper.jp database_name = yourname_appname database_user = yourname database_password = password
mysqlの接続情報などは、phper infoで確認できる。
$ phper info yourname-appname --> gitosis@git.phper.jp:yourname/appname.git --> mysql://yourname:password@db.phper.jp/yourname_appname
5. phpMyAdminを用意する
MySQLのコマンドラインクライアントが使えないのでphpMyAdminを入れる。
http://www.phpmyadmin.net/home_page/downloads.phpからDownloadして/path/to/approot/phpMyAdminに設置する。
また、できればphpMyAdminにはhttpsでアクセスしたい。
http://blog.phper.jp/2011/03/05/28/を見ると、phper.jpではエッジレイヤのNginxがSSLアクセラレーションするようなので、
SSL-Proxy下でphpMyAdminをSSLで動かす設定も入れておいた。
config.sample.inc.phpをコピーしてconfig.inc.phpを作成。下記を設定。
# /path/to/approot/phpMyAdmin/config.inc.php <?php .. // 書き換え $cfg['Servers'][$i]['host'] = 'db.phper.jp'; // SSL-Proxy下でSSLで動かす設定。 http://wiki.phpmyadmin.net/pma/Config#PmaAbsoluteUri $cfg['PmaAbsoluteUri'] = 'https://yourappname.phper.jp/pma/';
6. phper設定
プロジェクト直下の.phper/ディレクトリにいろいろとスクリプトや設定を記述できる。
詳しくはマニュアル参照。http://phper.jp/manual
■ deployの設定: /path/to/approot/.phper/deploy
#!/bin/sh ROOT_DIR=$(cd $(dirname $0)/..; pwd) # キャッシュの削除 rm -rf $ROOT_DIR/Symfony/app/cache/* # parameters.iniのシンボリックリンク作成 ln -sf $ROOT_DIR/Symfony/app/config/parameters.phper.ini $ROOT_DIR/Symfony/app/config/parameters.ini
■ アプリケーションサーバのApacheの設定: /path/to/approot/.phper/httpd.conf
/pmaでphpMyAdminにアクセス。後、Digest認証も一応かけておく。
Alias /pma "/var/www/sites/yourname-appname/phpMyAdmin" <Location pma> AuthType Digest AuthName "Secret Zone" AuthDigestDomain pma AuthDigestProvider file AuthUserFile "/var/www/sites/yourname-appname/.phper/.htdigest" Require valid-user </Location>
$ htdigest -c /path/to/approot/.phper/.htdigest "Secret Zone" user New password: **** Re-type new password: ****
7. デプロイする
$ git push
8. phper.jp上のデータベースにschema定義を流しこむ
blogチュートリアルのschema定義をdumpして、phpMyAdminから流しこむ。
$ app/console doctrine:schema:create --dump-sql ATTENTION: This operation should not be executed in an production enviroment. CREATE TABLE Post (id INT AUTO_INCREMENT NOT NULL, title VARCHAR(255) NOT NULL, body LONGTEXT NOT NULL, createdAt DATETIME NOT NULL, updatedAt DATETIME NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB
後はブラウザから動作確認して動くか確認。
実際はこんなにすんなり行かずに、トライアンドエラーを繰り返しました。PaaS楽しい!!
*1:gitに登録するのも嫌だが他の方法が思いつかなかったので