Capistranoを使ってみる
まずはインストール
# gem install capistrano
railsアプリケーションに組み込んでみる
$ cap --apply-to ~/project/garakuta
設定ファイルを眺め(LAN内の設定なのでサーバー名などは適当)
$ emacs ~/project/garakuta/config/deploy.rb set :application, "garakuta" set :repository, "svn://vaio/var/svn/project/garakuta/trunk" role :web, "vaio" role :app, "vaio" role :db, "vaio", :primary => true set :deploy_to, "/home/garakuta/webapp" set :user, "garakuta"
公開用サーバーをセットアップしてみる
$ cd ~/project/garakuta $ rake remote:setup (in /home/jet/project/garakuta) Capistrano/Rake integration is deprecated. Please invoke the 'cap' command directly: `cap setup' * executing task setup * executing "umask 02 &&\n mkdir -p /home/garakuta/webapp /home/garakuta/webapp/releases /home/garakuta/webapp/shared /home/garakuta/webapp/shared/system &&\n mkdir -p /home/garakuta/webapp/shared/log &&\n mkdir -p /home/garakuta/webapp/shared/pids" servers: ["vaio"] rake aborted! no such file to load -- openssl (See full trace by running task with --trace)
opensslが無いといわれるのでgem で探してみる
# gem search openssl --remoteREMOTE GEMS ***
# gem search ssl --remoteもう一回setupしてみるREMOTE GEMS ***
eassl (0.1.1643, 0.1.1635) EaSSL is a library aimed at making openSSL certificate generation and management easier and more ruby-ish. # gem install eassl$ rake remote:setup Please invoke the 'cap' command directly: `cap setup' * executing task setup * executing "umask 02 &&\n mkdir -p /home/garakuta/webapp /home/garakuta/webapp/releases /home/garakuta/webapp/shared /home/garakuta/webapp/shared/system &&\n mkdir -p /home/garakuta/webapp/shared/log &&\n mkdir -p /home/garakuta/webapp/shared/pids" servers: ["vaio"] rake aborted! no such file to load -- openssl (See full trace by running task with --trace)やっぱりダメなので次はaptでopensslを探してみる$ apt-cache search openssl | grep ruby libopenssl-ruby - OpenSSL interface for Ruby libopenssl-ruby1.9 - OpenSSL interface for Ruby 1.9 ruby1.8 - Interpreter of object-oriented scripting language Ruby 1.8 libopenssl-ruby1.8 - OpenSSL interface for Ruby 1.8 # apt-get install libopenssl-rubyそしてトライ$ rake remote:setup (in /home/jet/project/garakuta) Capistrano/Rake integration is deprecated. Please invoke the 'cap' command directly: `cap setup' * executing task setup * executing "umask 02 &&\n mkdir -p /home/garakuta/webapp /home/garakuta/webapp/releases /home/garakuta/webapp/shared /home/garakuta/webapp/shared/system &&\n mkdir -p /home/garakuta/webapp/shared/log &&\n mkdir -p /home/garakuta/webapp/shared/pids" servers: ["vaio"] WARNING: Password will echo -- install the 'termios' gem to hide your password. Password:パスワードを求められるが公開サーバーはもともとパスワードログインは認めていないので鍵認証でログインできるようにしてdeploy.rbに鍵のパスを書く$ scp ~/.ssh/id_rsa.pub garakuta@vaio:~/ $ ssh user@vaio @vaio $ su - @vaio # mv /home/user/id_rsa.pub /home/garakuta/ @vaio # su - garakuta @vaio $ mkdir .ssh @vaio $ cat id_rsa.pub >> .ssh/authorized_keys @vaio $ exit @vaio # exit @vaio $ exit $ emacs config/deploy.rb ssh_options[:keys] = %w(/home/jet/.ssh/id_rsa)そしてトライ$ rake remote:setup Capistrano/Rake integration is deprecated. Please invoke the 'cap' command directly: `cap setup' * executing task setup * executing "umask 02 &&\n mkdir -p /home/garakuta/webapp /home/garakuta/webapp/releases /home/garakuta/webapp/shared /home/garakuta/webapp/shared/system &&\n mkdir -p /home/garakuta/webapp/shared/log &&\n mkdir -p /home/garakuta/webapp/shared/pids" servers: ["vaio"] [vaio] executing command command finishedうまくいったっぽい。公開サーバーのgarakutaユーザーディレクトリにwebappができているので成功。 ひきつづきdeployしてみる$ rake deploy (省略)command "sudo /home/garakuta/webapp/current/script/process/reaper" failed on vaio rake aborted! command "sudo /home/garakuta/webapp/current/script/process/reaper" failed on vaiosudo ないとか言われるのでインストールする。ついでにvisoduもしておく@vaio # apt-get install sudo @vaio # visudo garakuta ALL=(ALL)ALLんでトライ$ rake remote:daploy (省略) //途中でgarakutaユーザーのパスワードを聞かれたりする。 command finished