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版で開発する場合の開発、リリース手順を考えてみました。
初回開発フェーズ
- (ローカル)pearでsymfonyをインストール
- (ローカル)開発開始
- (ローカル)開発完了
- (ローカル)symfony cc でキャッシュ削除(cache,logディレクトリの中身も削除しておいたほうがよいかもですね)
- (ローカル)symfony freeze でsandbox版にプロジェクトを変更
- (ローカル)FTPなりでサーバーにアップロード
- (サーバー)symfony fix-perms でパーミッション修正
- (サーバー)symfony clear-controllers で製品環境以外のコントローラーを削除
で、運用開始。
追加開発フェーズ
- (ローカル)symfony unfreeze でsandbox版から通常版に戻す
- (ローカル)追加開発開始
- (ローカル)追加開発終了
- (ローカル)FTPで開発分の差分をアップロード
- (サーバー)symfony fix-perms
- (サーバー)symfony cc
で、開発終了
運用フェーズ(symfonyのバージョンアップ対応)
- (ローカル)pear upgrade symfony/symfony でsymfonyをアップグレード
- (ローカル)symfony unfreeze でアップグレードしたsymfonyをプロジェクトにコピー
- (ローカル)FTPでlibディレクトリのsymfonyとdataディレクトリのsymfonyをアップロード
- (サーバー)symfony cc
- (サーバー)symfony -V でアップグレードされたのを確認。。
で、バージョンアップ完了
1.0系のバージョンアップであればバグFIXが中心のためこのような対応でも問題は起こりにくいはずです。(絶対とはいえませんが)
もちろん、アップロード中にアクセスされたら困るとか(設定ファイルで制御できるのですが)配慮すべき手順はありますが、こんな感じでできますよーということが伝わればいいかなと。
どうも、symfonyは敷居が高いように思われますが、意外と低いんですというお話。
問題は他のフレームワークに比べてオーバーヘッドが。。。とかですが、それはキャッシュ機能なりを(ry