Create: 2013/07/03
LastUpdate: 2013/07/04
3.動作確認
ここでは、WEBアプリケーションのコミットからリリースまでの一連の流れを実施してみます。
3.1.WEBアプリケーションのコミット
テスト済みのWEBアプリケーションを Subversion のレポジトリにコミットして、リリース用にタグをつけます。
ここでは、「 2.テスト環境設定」で作成したテスト用のWEBアプリケーションを使用し、運用管理サーバに root ユーザでログインして、以下のように svn コマンドを実行します。
リリース番号は、"rel-1.0.0" としてタグをつけます。
# svn copy file:///home/svn/project1/trunc file:///home/svn/project1/tags/rel-1.0.0 -m 'release 1.0.0'ブラウザで以下のURLにアクセスして、tags ディレクトリを確認してみます。
- http://<IPアドレス>/repos/project1/tags/
3.2.Webアプリケーションのリリース
リリース番号が"rel-1.0.0" のWEBアプリケーションをsvn のレポジトリから取り出し、受け入れチェックがOKなら、WEBサーバに配布します。
以下のように Capistrano の u_deploy タスクを実行します。
# cap -s svn_tag=rel-1.0.0 -f /root/workspace/project1.cap u_deploy * 2013-07-04 10:20:11 executing `u_deploy' * 2013-07-04 10:20:11 executing `u_checkout' * executing "rm -rf /home/unyo/workspace/project1" servers: ["localhost"] [localhost] executing command command finished in 18ms * executing "svn export file:///home/svn/project1/tags/rel-1.0.0 /home/unyo/workspace/project1" servers: ["localhost"] [localhost] executing command ** [out :: localhost] A /home/unyo/workspace/project1 ** [out :: localhost] A /home/unyo/workspace/project1/phpinfo.php ** [out :: localhost] A /home/unyo/workspace/project1/trunc ** [out :: localhost] A /home/unyo/workspace/project1/trunc/sample.php ** [out :: localhost] A /home/unyo/workspace/project1/trunc/phpinfo.php ** [out :: localhost] リビジョン 4 をエクスポートしました。 command finished in 29ms * executing "echo 'rel-1.0.0' > /home/unyo/workspace/project1/Release" servers: ["localhost"] [localhost] executing command command finished in 15ms * 2013-07-04 10:20:12 executing `u_phpcs' * executing "phpcs --standard=PHPCS /home/unyo/workspace/project1/*.php" servers: ["localhost"] [localhost] executing command ** [out :: localhost] Time: 0 seconds, Memory: 7.00Mb ** [out :: localhost] command finished in 93ms * 2013-07-04 10:20:12 executing `u_upload' * executing multiple commands in parallel -> "else" :: "mkdir -p /var/www/bk" -> "else" :: "mkdir -p /var/www/bk" servers: ["192.168.1.61", "192.168.1.66"] [192.168.1.61] executing command [192.168.1.66] executing command command finished in 23ms * executing multiple commands in parallel -> "else" :: "rm -f /var/www/bk/project1.tgz" -> "else" :: "rm -f /var/www/bk/project1.tgz" servers: ["192.168.1.61", "192.168.1.66"] [192.168.1.66] executing command [192.168.1.61] executing command command finished in 54ms * executing multiple commands in parallel -> "else" :: "if [ -d /var/www/project1 ] ; then tar cvfzP /var/www/bk/project1.tgz /var/www/project1 ; fi" -> "else" :: "if [ -d /var/www/project1 ] ; then tar cvfzP /var/www/bk/project1.tgz /var/www/project1 ; fi" servers: ["192.168.1.61", "192.168.1.66"] [192.168.1.61] executing command [192.168.1.66] executing command ** [out :: 192.168.1.61] /var/www/project1/ ** [out :: 192.168.1.61] /var/www/project1/phpinfo.php ** [out :: 192.168.1.66] /var/www/project1/ ** [out :: 192.168.1.66] /var/www/project1/phpinfo.php command finished in 25ms * executing multiple commands in parallel -> "else" :: "rm -rf /var/www/project1" -> "else" :: "rm -rf /var/www/project1" servers: ["192.168.1.61", "192.168.1.66"] [192.168.1.66] executing command [192.168.1.61] executing command command finished in 52ms servers: ["192.168.1.61", "192.168.1.66"] ** scp upload /home/unyo/workspace/project1 -> /var/www/project1 [192.168.1.61] /home/unyo/workspace/project1/trunc/sample.php [192.168.1.66] /home/unyo/workspace/project1/trunc/sample.php [192.168.1.61] /home/unyo/workspace/project1/trunc/phpinfo.php [192.168.1.66] /home/unyo/workspace/project1/trunc/phpinfo.php [192.168.1.61] /home/unyo/workspace/project1/phpinfo.php [192.168.1.66] /home/unyo/workspace/project1/phpinfo.php [192.168.1.61] /home/unyo/workspace/project1/Release [192.168.1.66] /home/unyo/workspace/project1/Release * scp upload complete * executing multiple commands in parallel -> "else" :: "chown -R apache:apache /var/www/project1" -> "else" :: "chown -R apache:apache /var/www/project1" servers: ["192.168.1.61", "192.168.1.66"] [192.168.1.61] executing command [192.168.1.66] executing command command finished in 48ms※この実行例では、初回リリースなのでバックアップを作成していません。
3.3.Webアプリケーションのリリース番号チェック
WEBサーバー上のWEBアプリケーションのリリース番号を確認してみます。
以下のように Capistrano の u_relcheck タスクを実行します。
# cap -f /root/workspace/project1.cap u_relcheck * 2013-07-04 10:24:54 executing `u_relcheck' * executing multiple commands in parallel -> "else" :: "cat /var/www/project1/Release" -> "else" :: "cat /var/www/project1/Release" servers: ["192.168.1.61", "192.168.1.66"] [192.168.1.61] executing command [192.168.1.66] executing command ** [out :: 192.168.1.61] rel-1.0.0 ** [out :: 192.168.1.66] rel-1.0.0 command finished in 24ms赤字部分で、各WEBサーバのリリース番号が確認できます。
今回の場合は、"rel-1.0.0" と表示されたらリリースは成功です。
あとは、ブラウザで動作確認して、ちゃんと動けばOKです。
なお、リリースに問題があって、リリース前の状態に戻したい場合は、戻したいリリース番号を指定して u_deploy を実行するか、u_restore を実行してバックアップを戻します。