Aufbauend auf der Konfiguration mit Ruby 2.0.0, Passenger und NGINX =>(hier).
# Den Benutzer "deployer" hinzufügen.
useradd -m -s /bin/bash deployer
su deployer
cd
mkdir .ssh
# Authorized Keys kopieren (wieder als "root")
cp ~/.ssh/authorized_keys /home/deployer/.ssh/
chown deployer:deployer /home/deployer/.ssh/authorized_keys
chmod 0600 /home/deployer/.ssh/authorized_keys
# Bundler installieren
gem install bundler
# Ordnerstruktur für das Deployment erstellen, Beispiel "/var/www"
mkdir -pv /var/www/my-site.net/shared /var/www/my-site.net/releases
chown deployer:deployer /var/www/my-site.net /var/www/my-site.net/shared /var/www/my-site.net/releases
Wichtig: Der Deployer benötigt in der Regel einen SSH-Key um das Git-Repo vom SCM zu holen.
# Deployer sein
su deployer
cd
# SSH-Key generieren
ssh-keygen
# Public Key zum SCM kopieren
vi .ssh/id_rsa.pub
Nun in das Projekt wechseln.
# Capistrano im Gemfile hinzufügen:
group :development, :test do
gem "capistrano"
gem "capistrano-rails"
end
# Capistrano installieren
bundle exec cap install
# im Capfile
require "capistrano/rails"
# deploy.rb anpassen
vi config/deploy.rb
...
Und dann die deploy.rb
set :application, "MySite"
set :repo_url, "git@bitbucket.org:mysite/my-site.git"
set :scm, :git
set :format, :pretty
set :log_level, :info # wenn es irgendwo failed, diese Zeile auskommentieren um die Fehler zu sehen.
set :pty, true
set :deploy_to, "/var/www/my-site.net"
set :rails_env, "production"
set :branch, "master"
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
set :keep_releases, 5
namespace :deploy do
desc "Restart application"
task :restart do
on roles(:app), in: :sequence, wait: 5 do
execute "touch #{ File.join(current_path, "tmp", "restart.txt") }"
end
end
after :finishing, "deploy:cleanup"
end