symfonyは専用サーバーでないとインストールできない?

CakePHPはダウンロードしたファイルをアップロードするだけで動くからいい」から導入を決めたという話を聞きました。

確かにそうです。そして、「symfonyでも同じことができるよ」というと「専用サーバーでないと駄目なんでしょ?」と言われました。

いえ。できます。正確に言うと
「専用サーバーであればsymfony自体のバージョン管理、開発がさらに楽になる」
ということです。

あんまりsandbox版のsymfonyの作成は知られていないようです。。
symfonyのsandboxとは? (The Definitive Guide to symfony)

お試しにはもってこいのsandbox版で配布されているsymfonyですが、自身でsandbox版を作ることができます。
つまり、ローカル環境にて作成したアプリケーションをパッケージ化できるのです。
(sf_sandboxならぬ my_sandboxですね)
しかも、

  $ symfony freeze

たったこれだけのコマンドで、symfonyのコアライブラリ類もプロジェクトにコピーしてくれます。
あとは、プロジェクトディレクトリをFTPなりでサーバーに転送するだけ。
Linux系のサーバーであれば、アップロード後のパーミッション

  $ ./symfony fix-perms

で解決。

もちろん、デメリットもあります。symfony自身のアップデートの管理がサーバー上で難しいということです。
でも、これはFTPでがっつりとアップロードしたCakePHPでも同じことが言えます。

そこで、symfonyのsandbox版で開発する場合の開発、リリース手順を考えてみました。

初回開発フェーズ

  • (ローカル)pearsymfonyをインストール
  • (ローカル)開発開始
  • (ローカル)開発完了
  • (ローカル)symfony cc でキャッシュ削除(cache,logディレクトリの中身も削除しておいたほうがよいかもですね)
  • (ローカル)symfony freeze でsandbox版にプロジェクトを変更
  • (ローカル)FTPなりでサーバーにアップロード
  • (サーバー)symfony fix-perms でパーミッション修正
  • (サーバー)symfony clear-controllers で製品環境以外のコントローラーを削除

で、運用開始。

追加開発フェーズ

  • (ローカル)symfony unfreeze でsandbox版から通常版に戻す
  • (ローカル)追加開発開始
  • (ローカル)追加開発終了
  • (ローカル)FTPで開発分の差分をアップロード
  • (サーバー)symfony fix-perms
  • (サーバー)symfony cc

で、開発終了

運用フェーズ(symfonyのバージョンアップ対応)

で、バージョンアップ完了

1.0系のバージョンアップであればバグFIXが中心のためこのような対応でも問題は起こりにくいはずです。(絶対とはいえませんが)
もちろん、アップロード中にアクセスされたら困るとか(設定ファイルで制御できるのですが)配慮すべき手順はありますが、こんな感じでできますよーということが伝わればいいかなと。

どうも、symfonyは敷居が高いように思われますが、意外と低いんですというお話。
問題は他のフレームワークに比べてオーバーヘッドが。。。とかですが、それはキャッシュ機能なりを(ry