symfonyを使ったサイトをリリースするときに、チェックした方がよい項目をまとめました。
symfony version 1.0用になりますが、1.1系や1.2系でもほぼ同じだと思います。
2009-6-12 23:28 追記: 記事を書いた後にもっと良いサイト見つけました><。 http://symfony-check.org/en/
1. 動作環境チェック
以下のサイトから動作環境チェックスクリプトをダウンロードして、webディレクトリに配置。
$ wget http://sf-to.org/1.2/check.php
ブラウザから実際にたたいてみて結果を見てみる。
APCがないと怒られるけど、遅くて良いなら無視。short_open_tagはさすがに直さなきゃ。
本家サイトにあるように、コマンドラインからやると環境によっては正しい結果が得られないので、ブラウザからテストするのがお勧め。
用が済んだら、チェックスクリプトは削除すること。
参考: Getting Started with symfony | Prerequisites | symfony | Web PHP Framework.
2. PROD環境になっているか
symfonyでは開発環境(dev)と本番環境(prod)を切り分けて使っています。 間違ってdevの物を公開しまうと、内部の変数とか見えてしまって危険です。 フロントコントローラを目視でチェックしましょう。
$ cat web/index.php
<?php
define('SF_ROOT_DIR', realpath(dirname(__file__).'/..'));
define('SF_APP', 'frontend');
define('SF_ENVIRONMENT', 'prod');
define('SF_DEBUG', 0);
require_once(SF_ROOT_DIR.DIRECTORY_SEPARATOR.'apps'.DIRECTORY_SEPARATOR.SF_APP.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'config.php');
sfContext::getInstance()->getController()->dispatch();3. web/以下に不要なphpがないか
開発のとき便利なphpが本番サイトにも配備されていませんか?
web/frontend_dev.phpとかがあったら要注意です。
4. ログを有効化
/path/to/symfony-project/apps/{アプリケーション名}/config/logging.yml
--- prod: enabled: on level: err rotate: on period: 7 history: 10 purge: on
5. ログの監視
重大なバグはログをメールで送るようにすると便利です、 過去の記事を参考にしてください。
→ ログをとるときのおすすめ
6. ログのローテーション
logディレクトリが溢れるなんてことがあってはいけません。
rootで動かして良ければ/etc/cron.daily以下のようなスクリプトを置いて設定するのが簡単です。
#!/bin/sh cd /path/to/symfony-project && ./symfony log-rotate frontend prod
7. web/errors
以下の2つは置いておきましょう。
- web/error/error404.php
- web/error/unavaliable.php
中身は何でも良いのですが、
〜に以下のmetaタグを入れておくと良いようです。<meta name="robots" content="noindex"/> <met name="robots" content="nofollow"/>
参考: メンテナンスページで失敗しやすい3つのポイント : tech.kayac.com – KAYAC engineers’ blog.
8. web/.htaccess使わない
Apacheを使っていることが前提ですが、web/.htaccessは重いので本番環境では使わない方が良いです。
代わりにhttpd.confに以下のような設定をすると良いです。
<Directory "/path/to/symfony-project-dir/web">
AllowOverride None
RewriteEngine On
RewriteBase /
# maintenance mode
RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
RewriteCond %{REQUEST_URI} !¥.(css|js|jpg|gif|png|swf|ico)$
RewriteCond %{REQUEST_URI} !¥maintenance.html$
RewriteRule ^(.*) /maintenance.html [R,L]
RewriteCond %{REQUEST_FILENAME} !-f
# index.phpはフロントコントローラに適宜書き換えること
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>ついでにmod_rewriteの設定にmaintenance.htmlを置くとメンテモードが表示される設定も追加しておきました。
参考: メンテナンスページで失敗しやすい3つのポイント : tech.kayac.com – KAYAC engineers’ blog.
ほかにもお勧めのチェック項目があったらコメント欄などで教えてください。


