2010/06/06symfonyを使って小さなシステムを作っている。XAMPP)ではとりあえず動くレベルまで来たので、本番環境のLinuxに載せることにした。いうコマンドで簡単に本番環境への配備が行えるらしいので、その設定のやりかた。コマンドに関する説明は、本家のチュートリアルページを参照。1.4.5■必要なソフトのインストールproject:deployは内部でrsyncコマンドを使用している。Linuxであれば問題ないけど、Windowsの場合はわざわざインストールする必要があるので、こちらのページよりcwrsyncをダウンロードしてインストールする。このcwrsyncが曲者で、ssh経由だとうまく動かない(場合がある?)らしい。結論から言うと、このページからダウンロードできるcygnativeというプログラムを使えばOK。解凍してcwrsyncと同じフォルダに置く。別にPuTTYの設定なんて特に必要ないじゃん、と思うんだけど、これはやっておいた方がいい。言っても大した事はなくて、以下の情報を指定してセッションの「保存」をする。ここで保存したセッション名はとりあえずsession1としておく。接続するサーバーのホスト名ポート番号ログインユーザー名(これ重要)後は、自分の公開鍵をサーバーの.ssh/authorized_keysに登録しておく。これに関してはSSHの基本なのでここでは省略。Pageantに鍵を読み込ませた状態でPuTTYを立ち上げ、「セッション一覧」に表示されてるセッション名をダブルクリックするとそのサーバーにログインできるようになっていればOK。■symfonyのソース修正1つはバグ修正で、1つは公開鍵認証を使う為の機能追加。それぞれのtracでのチケットはここ(#8177)とここ(#6193)。前者は修正は完了してるけどまだ最新版(1.4.5)に取込まれていないっぽい。後者に関しては、symfonyはマイナーバージョンアップでは機能追加は取込まない方針なので、1.4系ではソース書き換えしか手がない。#8177の最後の方にも書いてあるけど、symfony/task/sfFilesystem.class.phpの291行目付近を以下のように(stderrのモードを"w"から"a"に)する。ちなみに#8177の最初のほうに書いてある修正は行う必要はない。stderr);もう1つは#6193に添付されているパッチをsymfony/task/project/sfProjectDeployTask.class.phpに適用する。これは相当試行錯誤したけど、結局は以下のようにすればOKだった。[production];ホスト名、ポート番号、ユーザー名はPuTTYのセッションを使うので不要;ただし、hostは空欄にするhost=;port=22;user=foodir=/var/www/html/appname;sshコマンドの代わりにcygnativeとplinkを組み合わせて使う。session1'"これで完了。後は次のコマンドを実行するとデプロイされる。実行した時に以下のような警告が出る。(セミコロン)で始める。上を見てもらえれば分かる通り、実際にやることはそれ程難しくないが、そこに至るまでは結構試行錯誤をした。1つめはWindows上でssh+rsyncがうまく動かないらしい。symfony以前の話。sshでググると沢山のページが出てくる。解決方法はいくつかあるみたいだけど、上述の通りcygnativeというプログラムを使う。1つはsymfonyのdeployタスクがWindowsではうまく動かない問題。上に書いた通り、ソース修正("w"→"a")で乗り切る。最後の問題は、deployタスクはパスワード認証にしか対応していないこと。これはソース修正+properties.iniへの設定追加で解決。トラブルシューティング中に発見した便利な技(?)自分用メモ。コメントをキャンセルメールアドレスが公開されることはありません。