日々の出来事や思い出を語るチラシの裏。言ってもプログラムの話がメイン。fabricでデプロイサムライファクトリーの平成コンビがお送りするWebサービスダイナシ!画像にコメントをつけて、ぜひ楽しんでください。前回はnginxとuwsgiを連携してアプリを動作する方法を紹介しました。前回までのエントリーPyramidのインストールまでサーバーの起動までMySQLの設定Nginxとuwsgiホームディレクトリ以下に保存されたアプリをそのままuwsgiで動かしていましたが、このままだと不便なことが多々あります。以上の問題をfabricで解決してみたいと思います。fabricはpythonで記述できるデプロイツールです。ssh経由でのコマンド実行やrsyncでのファイル同期など簡単な記述で実現できます。今回は以下の構成を前提とします。■開発環境ホスト名:devユーザー:yoshi■本番環境ホスト名:proユーザー:webyoshi@devからweb@proへsshでログインできること。今回もFabricをsetup.pyに追記します。develop」を実行すればFabricがインストールされます。好みによりますがfabricはデプロイツールなので直接pipでインストールでも良いかもしれません。インストールが成功すると「fab」コマンドが実行できるようになります。fabコマンドはカレントディレクトリにあるfabfile.pyを実行してくれます。fabricに変更するために各種設定ファイルを変更します。/var/www/test.hoge.com/env-----------------fabfile.pyを用意します。start()-----------------pro側にデプロイ用ディレクトリを用意しておきます。rsync」を実行するとproにアプリがインストールされます。fabの後にpythonの関数を並べた順番に処理が実行されます。env変数はfabricで利用される環境変数になります。「env.user」「env.key_filename」「env.hosts」は予め決められた変数でそれぞれ「接続先のユーザー名」「ローカルの秘密鍵ファイルパス」「実行するホストリスト」を設定してます。「env.hosts」に複数のホストを設定するとrsync関数が各ホストに対して実行されます。「project.rsync_project」はrsyncを実行します。第1引数にデプロイ先のディレクトリ、第2引数にローカルのディレクトリを指定します。「../sample/」と相対パスで指定しているのは実際デプロイされるディレクトリとローカルのプロジェクトのディレクトリが異なる場合に必要となります。「/」で終了しているのも意味があります。あとは、excludeで同期しないファイルリスト、delete=Trueでローカルに存在しないファイルはproから削除するように設定しています。pro側にもpythonbrewとpythonをインストールして新しい仮想環境を用意してアプリを構築します。envsetup.pyに依存ライブラリを記述しているので簡単に同一環境を用意することが出来ます。前回用意したnginx、uwsgiの設定ファイルをすべてproにコピーして一部修正します。start」を実行するとuwsgi、nginxの順でサービスが起動されます。fabricの「local」「run」「sudo」はそれぞれ「ローカルのコマンド実行」「ssh経由でコマンド実行」「ssh経由でsudoでコマンド実行」となっています。デプロイ以外でも色々と利便性の高いツールです。途中間が開いてしまいましたが、nginxとpythonとpyramidを利用したアプリ構築について記載してみました。途中で環境やバージョンが変わってしまったので記載通りに動かない場合がありましたら、コメントやメールフォームでご指摘頂けると助かります。nginxとuwsgi>>。