symfonyを使ったサイトリリース時のチェック項目

symfonyを使ったサイトをリリースするときに、チェックした方がよい項目をまとめました。

  1. 環境チェック
  2. PROD環境になっているか
  3. web/以下に不要なphpがないか
  4. ログを有効化
  5. ログの監視
  6. ログのローテーション
  7. web/errors
  8. web/.htaccess使わない

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

ブラウザから実際にたたいてみて結果を見てみる。

symfony_check_configuration

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.


ほかにもお勧めのチェック項目があったらコメント欄などで教えてください。

Leave a Reply

Name (required)
Mail (will not be published) (required)

Your Comments:

Spam Protection by WP-SpamFree