RSS RSS
tacchiの中身(Ruby on Railsのシステム開発)
2008.07.25
カテゴリ:サーバー - 役立ちツール

capistranoでmongrel,apache,rsync

こんにちはtacchiです。
以前TrinityTさんが書いてたcapistranoのすすめのつづきです。
更新されないので勝手に書いちゃいます。

以下の動作をさせたかったので、taskを自分で作ってみようと言う事になりました。
・特定のサーバのmongrelの起動、停止、再起動をさせたい
・特定サーバのapacheの起動、停止、再起動をさせたい
・rsyncでファイルを転送させたい

これがmongrelの起動、停止、再起動です。


  namespace :mongrel do
    desc 'app01,app02 mongrelのrestart'
    task :restart, :roles => [:app1, :app2] do
     run "source /home/hoge/.bash_profile;
          /etc/init.d/mongrel_cluster restart;
          isAlive=`ps -ef | grep 'ruby' | grep -v grep | wc -l`;
          if [ $isAlive == 0 ]; then
             echo 'error mongrel restart';
             exit 1;
          fi;
          echo 'success mongrel restart!';
          exit 0;"
    end

    desc 'app01,app02 mongrelのstart'
    task :start, :roles => [:app1, :app2] do
      run "source /home/hoge/.bash_profile;
          /etc/init.d/mongrel_cluster start;
          sleep 3;
          isAlive=`ps -ef | grep 'ruby' | grep -v grep | wc -l`;
          if [ $isAlive == 0 ]; then
             echo 'error mongrel start';
             exit 1;
          fi;
          echo 'success mongrel start!';
          exit 0;"
    end

    desc 'app01,app02 mongrelのstop'
    task :stop, :roles => [:app1, :app2] do
      run "source /home/hoge/.bash_profile;
          /etc/init.d/mongrel_cluster stop;
          sleep 3;
          isAlive=`ps -ef | grep 'ruby' | grep -v grep | wc -l`;
          if [ $isAlive != 0 ]; then
             echo 'error mongrel stop';
             exit 1;
          fi;
          echo 'success mongrel stop!';
          exit 0;"
    end
  end


これがapacheの起動、停止、再起動です。


  namespace :apache do
    task :start, :roles => [:web1,:web2] do
      sudo "/usr/local/apache2/bin/apachectl start;"
      run "ps -ef |grep http"
    end

    task :stop, :roles => [:web1, :web2] do
      sudo "/usr/local/apache2/bin/apachectl stop;"
      run "ps -ef |grep http"
    end

   task :restart, :roles => [:web1, :web2] do
      sudo "/usr/local/apache2/bin/apachectl restart;"
      run "ps -ef |grep http"
    end
  end


これがrsyncです


set(:parts_file) do
  Capistrano::CLI.ui.ask 'enter parts file: '
end

set(:parts_insert_server) do
  Capistrano::CLI.ui.ask 'enter remote server ip: '
end

set :deploy_to, "/path/to/project"

     desc '部分的なファイルを転送できます。プロジェクト以下のファイルを指定して下さい。'
  namespace :rsync do
     task :parts, :roles => :local do
       run "/usr/local/bin/rsync -avz --delete -e ssh #{deploy_to}/#{parts_file} #{parts_insert_server}:#{deploy_to}/#{parts_file}"
     end
  end

てかインデントの為に、nbsp入れないといけないのなんとかならないすかね。。。

ブックマークに追加する

.
web開発ならKBMJ
Rubyでのwebシステム開発は
実績豊富なKBMJにお任せ下さい
iPhone開発
iPhone開発は
KBMJにお任せ下さい
ブラウザゲーム エインヘリアル
ブラウザゲーム「エインへリアル」
サービス中
オープンソースECパッケージ エレコマ
オープンソースECパッケージ
「エレコマ」
Google Analytics徹底活用スクール
レベルに合わせた
実用的な活用スキルを徹底指導。
好評定期開催中です!

プロフィール

tacchi
tacchi
Ruby On Railsでバリバリ開発している会社に勤めてます。
新しい技術に興味もありますし、サーバにも興味ありますので
気になった事が合ったらジャンジャン書いて行きます!

最近チェックした記事

最新記事

アーカイブ

アクセスランキング

KBMJのWebソリューション
Ruby on railsの開発ならKBMJ
株式会社ケイビーエムジェイ