この設定はメモリの利用効率がよくて高速に動作するが、設定に手間がかかる。以降なら、mod_proxy_fcgiが使える。簡単にセットアップできるし高性能だ。使えない共有サーバーを見つけるほうが難しいだろう。最新バージョンが使えるかどうかは要注意だ。共有サーバーでは、あなただけでなく他の開発者も同じマシンにウェブサイトをデプロイする。その利点は、安上がりに使えるということだ。欠点もあって、同じサーバーに同居しているお隣さんが何をしでかすかがわからない。負荷のかかることをしてしまったり、セキュリティホールを作り込んでしまったりといった恐れがある。充分な予算があるのなら、できるだけ共有サーバーは避けよう。致命的な間違いを犯してしまう可能性もそのぶん増えてしまうんだ。したビルド手順にしたがうこと。自動化できるタスクには、こんなものがある。必要な資産のコンパイルテストの実行ドキュメントの生成パッケージングデプロイデプロイツールデプロイツールとは、ソフトウェアのデプロイにからむありがちな作業を処理するスクリプトをまとめたものだと言える。デプロイツール自体は君が作るソフトウェアの一部ではない。ソフトウェアを「外部から」支援するものだ。ビルド自動化やデプロイの助けとなるオープンソースのツールがたくさん公開されている。PHP製じゃないからといって、それを使わない理由はない。自分のやりたいことに適したツールがあるのなら、使うべきだ。いくつか例をあげよう。使えば、パッケージングやデプロイそしてテストといった処理をシンプルなXMLビルドファイルで設定できる。Webアプリのインストールやアップデートに必要となるタスク群を提供する。カスタムタスクで機能を追加することもでき、カスタムタスクはPHPで書ける。(設定をXMLファイルで管理するところとかね)。複数のリモートマシン上でコマンドを実行できる。アプリもデプロイできる。Capistranoを使いこなすには、RubyとRakeに関するそれなりの知識が必要だ。Capistranoに興味のあるPHP開発者への入門記事としておすすめだ。Laravelフレームワークの思想にヒントを得たものだ。高速かつエレガントであり、よく考えられたデフォルト設定で簡単に使えることを目標としている。複数サーバーや複数ステージ、アトミックなデプロイに対応していて、複数のデプロイを並列に実行できる。すべてのパーツは動かしたままでの交換や拡張に対応しているし、ぜんぶPHPで書かれている。PHPで書かれたデプロイツールで、シンプルかつ機能的だ。タスクを並列に実行し、アトミックなデプロイを行い、サーバー間の整合性を維持する。Framework、そしてYiiなどで使える、一般的なタスクのレシピが用意されている。Deployerを使ってアプリケーションをデプロイするためのよいチュートリアルになっている。PHPで書かれたツールで、YAMLでのシンプルな設定ができる。一般的なツールやフレームワークで使える組み込みのタスクが用意されている。already.サーバーの構成管理は、大量のサーバーを扱うようになると特に大変なタスクだ。いろんなツールが用意されているので、こういったインフラの構築を自動化できる。ツールを使えば、適切なサーバーが適切な構成になっていることを確実にできる。簡単にアプリケーションをスケールできるようになっている。YAMLファイルでインフラを管理するツールだ。気軽に使い始められるし、複雑で大規模なアプリケーションにも使える。対応したツールを使えば動的インベントリを通じてインスタンスを管理できる。独自の言語やファイルタイプを使ってサーバーや構成を管理する。マスター/クライアント形式で使うこともできるし、「マスターレス」モードで使うこともできる。新しい構成が見つかったら自分自身を更新する。マスターレスモードでは、変更内容を各ノードにプッシュする。サーバー環境や仮想マシンをまるごと構築できる。Servicesとも統合されていて、OpsWorksというサービスを通じて利用する。Servicesとの統合について扱った書籍LAMPアプリケーションのデプロイにChefやVagrantそしてEC2を使うというお題で書かれた全3回のシリーズChefのクックブック。チームのメンバーが自分たちの作業を頻繁に統合するというものだ。通常は、各自が少なくとも一日に一度は統合する。一日に何度も統合することもある。したソフトウェアをより素早く開発できるようになると実感している。マーティン・ファウラーPHPで継続的インテグレーションを実践する方法はいろいろある。したプロジェクトにも簡単に継続的インテグレーションを組み込めるようになった。CIは継続的インテグレーションのホスティング環境で、オープンソースコミュニティに開放されている。GitHubと統合されており、PHPを含むさまざまな言語に対応している。開発環境だの本番環境だの、いろいろ違う環境でアプリケーションを動かしていると、おかしなバグに出くわしてしまいかねない。「開発環境だと問題ないのに、本番環境だと動かない」みたいなやつだ。チームで開発しているときに、開発環境のいろんなライブラリのバージョンをきちんと統一しておくのも、面倒だ。仮想マシンを使うことを考えるべきだ。何も難しいことはない。仮想環境を簡単に準備するためのツールも用意されている。VagrantVagrantを使えば、既知の仮想環境を使って自分用のボックスを作れて、その環境の構成も、たったひとつの設定ファイルだけでできる。PuppetとかChefみたいな「プロビジョニング」ソフトにおまかせすることだってできる。ベースとなる環境を配布できるようにしておけば、複数の開発環境をまったく同じ状態に構築できる。いうのもいらなくなるってこと。まっさらな環境を用意するのもお手軽にできる。Vagrantは、フォルダを作って、ホストと仮想マシンの間でコードを共有する。ホストマシンで作ったり編集したりしたコードを、そのまま仮想マシンの中で実行できるっていうことだ。した手助けVagrantを使い始めるときの手助けになるのが、これらのサービスだ。PHPなどのオプション込みで、一般的なVagrantビルドを作ってくれるサービス。プロビジョニングにはChefを使う。PHPの開発用の仮想マシンを作ってくれる、シンプルなGUI。PHPに特化している。ローカルVM以外に、クラウドサービスにデプロイすることもできる。プロビジョニングにはPuppetを使う。ウェブ開発向けの仮想マシンを用意してくれる。ドキュメントを使って、仮想マシン上にインストールするすべてものを制御できる。