アプリケーションが一度完成したら、または、完成する前でさえも、デプロイしたいと 思うでしょう。CakePHP アプリケーションをデプロイするにあたり、いくつかのことを しなければなりません。
git commit とあなたのサーバ上で commit やリポジトリの pull や clone を作成し、
composer install
を実行することを奨励されます。git に関する幾つかの知識や
git
や composer
のインストールの知識が必要とされますが、このプロセスは、
ライブラリの依存関係やファイルやフォルダのパーミッションについて扱います。
FTP 経由でデプロイするとき、少なくともファイルやフォルダのパーミッションを 修正しなければならないことを理解してください。
ステージングやデモサーバ (試作品) をセットアップし、あなたの開発環境と同期を保つための デプロイ技術を使用することもできます。
app.php、特に debug
の値を調整することは非常に重要なことです。debug を
false
に変更することにより、開発に関連する部分で、決して広くインターネットに
晒されるべきでない部分を無効にすることができます。debug を無効とすることにより、
以下の種類のことが変更されます。
- :php:func:`pr()` 及び :php:func:`debug()` により生成されたデバッグメッセージが、 無効化されます。
- CakePHP コアのキャッシュが、開発時の 10 秒ごとの代わりに毎年 (約365日ごとに) 破棄されるようになります。
- エラービューの情報量は少なくなり、一般的なエラーメッセージしか表示されなくなります。
- PHP エラーは表示されなくなります。
- 例外のスタックトレースは無効化されます。
上記に加え、多くのプラグインとアプリケーションの拡張機能は、自らの振る舞いを
修正するために、 debug
を使用します。
環境間でデバッグレベルを動的にセットするため、環境変数に対してチェックを
かけることができます。このことにより、アプリケーションをデバッグ true
の状態で
デプロイすることを避けることができるだけでなく、毎回本番環境にデプロイする度に
デバッグレベルを変更せずに済むこととなります。
例えば、Apache の設定にて、環境変数をセットすることができます。
SetEnv CAKEPHP_DEBUG 1
それから、app.php にてデバッグレベルを動的にセットすることができます。
$debug = (bool)getenv('CAKEPHP_DEBUG'); return [ 'debug' => $debug, ..... ];
もしあなたがウェブ上の荒野にアプリケーションを解き放とうとするなら、 何か抜け穴がないかを確認しておくことをお勧めします。
- :doc:`/controllers/components/csrf` コンポーネントを使用していることを確認して 下さい。
- :doc:`/controllers/components/security` コンポーネントを有効化しておいた方が いいかもしれません。フォームの改ざんや一括代入 (mass-assignment) 脆弱性に関する 問題の発生可能性を削減することができます。
- 各モデルにおいて、正しい :doc:`/core-libraries/validation` ルールが 有効化されているかどうかを確認して下さい。
webroot
ディレクトリのみが公開されており、その他の秘密の部分(ソルト値や セキュリティキー等)は非公開でかつユニークな状態となっていることを確認して下さい。
アプリケーションでドキュメントルートを正しく指定することはコードをセキュアに、
またアプリケーションを安全に保つために重要なステップの内の一つです。
CakePHP のアプリケーションは、アプリケーションの webroot
に
ドキュメントルートを指定する必要があります。これによってアプリケーション、
設定のファイルが URL を通してアクセスすることができなくなります。
ドキュメントルートの指定の仕方はウェブサーバごとに異なります。
ウェブサーバ特有の情報については :ref:`url-rewriting` ドキュメントを見てください。
どの場合においても webroot/
をバーチャルホスト(バーチャルドメイン)の
ドキュメントルートに設定すべきでしょう。これは webroot ディレクトリの外側のファイルを
実行される可能性を取り除きます。
クラスローディングは、アプリケーションのプロセス時間の大部分を占めることがあります。 このような問題を避けるために、アプリケーションがデプロイされたら以下のコマンドを 本番サーバにて走らせることを推奨します。
php composer.phar dumpautoload -o
プラグインの画像や JavaScript、CSS ファイルなどの静的なアセットを扱う場合、
Dispatcher
を通すことはかなり非効率です。本番環境においては、次のように
シンボリックリンクにすることを強くお勧めします。これは、 plugin
シェルを
利用することで実行できます。
bin/cake plugin assets symlink
上記のコマンドは、アプリケーション内での webroot
ディレクトリの適切なパスに対して、
全てのロードされたプラグインの webroot
ディレクトリのシンボリックリンクします。
もし、あなたのファイルシステムがシンボリックリンクを作成できない場合、 ディレクトリをシンボリックリンクする代わりにコピーします。また、以下を使用して、 明示的にディレクトリをコピーすることができます。
bin/cake plugin assets copy
更新をデプロイした後、 :doc:`/console-and-shells/orm-cache` シェルの一部、
bin/cake orm_cache clear
を実行したい場合もあるかもしれません。