Was ist Capistrano?
Desweiteren sollten Sie public key authentication eingerichtet haben, wie das geht erfahren Sie hier. Außerdem nehmen wir an, dass Sie auf Ihrem Desktop Rechner eine Rails-Anwendung im Verzeichnis ~/projekte/test liegen haben, die unter Versionskontrolle mit Git liegt. Wie das funktioniert erfähren Sie im Git-Howto
Sollten Sie in dieser Anleitung auf die Begriffe serverXX bzw. webXX stoßen, so müssen Sie diese mit Ihrem jeweiligen Servernamen / Benutzernamen austauschen.
1. Bereiten Sie Ihr Projekt für die Verwendung von Capistrano vorInstallieren Sie Capistrano Version 2.x gem install capistrano -v=2.15.5 Öffnen Sie bitte ein Terminal (Shell) und wechseln Sie in das root-Verzeichnis Ihrer Rails Applikation. cd ~/projekte/test Führen Sie nun folgenden Befehl aus: capify . Ausgabe[add] writing `./Capfile' [add] writing `./config/deploy.rb' [done] capified!Nun wurden die beiden Dateien ./Capfile und ./config/deploy.rb erstellt, wie wir im nächsten Schritt bearbeiten. |
2. deploy.rb anpassenJetzt öffnen Sie die soeben erstellte Datei deploy.rb aus dem Verzeichnis config pico config/deploy.rb Inhaltset :application, "set your application name here" set :repository, "set your repository location here" # If you have previously been relying upon the code to start, stop # and restart your mongrel application, or if you rely on the database # migration code, please uncomment the lines you require below # If you are deploying a rails app you probably need these: # load 'ext/rails-database-migrations.rb' # load 'ext/rails-shared-directories.rb' # There are also new utility libaries shipped with the core these # include the following, please see individual files for more # documentation, or run `cap -vT` with the following lines commented # out to see what they make available. # load 'ext/spinner.rb' # Designed for use with script/spin # load 'ext/passenger-mod-rails.rb' # Restart task for use with mod_rails # load 'ext/web-disable-enable.rb' # Gives you web:disable and web:enable # If you aren't deploying to /u/apps/#{application} on the target # servers (which is the default), you can specify the actual location # via the :deploy_to variable: # set :deploy_to, "/var/www/#{application}" # If you aren't using Subversion to manage your source code, specify # your SCM below: # set :scm, :subversion # see a full list by running "gem contents capistrano | grep 'scm/'" role :web, "your web-server here"Ersetzen Sie diese Datei bitte mit folgendem Inhalt oder laden Sie sich die Datei hier runter. Beachten Sie bitte, dass diese deploy.rb für mod_rails vorgesehen ist. set :application, "test" set :repository, "/var/www/htdocs/webXX/files/repositories/git/test.git" set :local_repository, "~/projekte/test/.git" set :webserver, "railshosting.de" set :deploy_to, "/var/www/htdocs/webXX/files/rails/#{application}" set :symlink_path, "/var/www/htdocs/webXX/html/rails/#{application}" set :scm, :git set :user, "webXX" ssh_options[:port] = 981 set :use_sudo, false set :normalize_asset_timestamps, false set :deploy_via, :remote_cache role :app, webserver role :web, webserver role :db, webserver, :primary => true # copy shared files after update task :update_config, :roles => :app do run "cp -Rf #{shared_path}/config/* #{release_path}/config/" end # create symlink after setup task :symlink_config, :roles => :app do run "mkdir -p /var/www/htdocs/#{user}/html/rails" run "ln -nfs #{current_path}/public #{symlink_path}" end after "deploy:setup", :symlink_config after "deploy:update_code", :update_config # mod_rails (phusion_passenger) stuff namespace :deploy do desc "Restart Application" task :restart, :roles => :app, :except => { :no_release => true } do run "touch #{current_path}/tmp/restart.txt" end [:start, :stop].each do |t| desc "start/stop is not necessary with mod_rails" task t, :roles => :app do # nothing end end endNachdem Sie das Script für Ihren Account angepasst haben fügen Sie die beiden Dateien zu Ihrem Repository hinzu git add Capfile config/deploy.rb git commit -m "added capistrano config" Um das Release Ihrem remote server bekannt zu machen führen Sie einfach folgenden Befehl aus: git push railshosting.de |
3. Deployment vorbereitenAls nächstes lassen wir die benötigten Ordnerstrukturen und einen Symlink von Capistrano erstellen. Führen Sie hierzu einfach folgenden Befehl aus cap deploy:setup Wenn Sie nun auf Ihrem Server nachsehen, werden Sie feststellen, dass folgende Verzeichnisse angelegt wurden/files/rails/test/shared /files/rails/test/shared/system /files/rails/test/shared/pids /files/rails/test/shared/log /files/rails/test/releasesIm Verzeichnis /html/rails werden Sie zudem einem Symlink finden, der später auf das aktuelle (current) Release zeigen wird. Jetzt ist ein guter Zeitpunkt Ihre Datenbank-Konfigurationsdatei in den soeben erstellten shared-Ordner zu kopieren. Dateien in diesem Verzeichnis werden bei jedem deploy automatisch in das entsprechende Verzeichnis Ihres releases kopiert. Erstellen Sie einfach ein Verzeichnis mit dem Namen config und laden Sie diese Datei in dieses Verzeichnis runter und passen Sie sie entsprechend an. Anschließend speichern Sie den Ordner samt Datei via scp auf dem entfernten Server. scp -r ./config webXX@railshosting.de:/files/rails/test/shared |
4. Deployment durchführenAlles was Sie jetzt noch tun müssen ist folgenden Befehl auszuführen cap deploy fertig!Sie können nun in Ihrer Verwaltungsoberfläche Confixx das Zielverzeichnis (domain root) Ihrer Domain konfigurieren. Einstellungen -> Domains -> Domain auswählen -> ändern Hier tragen Sie folgendes ein /rails/test |