Capistrano-Bereitstellung mit Subversion

Capistrano-Bereitstellung

Capistrano ist ein Tool zur Automatisierung des Anwendungsbereitstellungsprozesses. Capistrano wird hauptsächlich für die Bereitstellung von Rails-Apps verwendet. Änderungen, die an der Rails-App vorgenommen werden, können mithilfe von Cap Deploying einfach auf den Server übertragen werden. Capistrano kann mit jedem Versionskontrollsystem wie SVN/GIT für die Bereitstellung einer App konfiguriert werden. Außerdem können wir den Anwendungsservertyp (Mongrel, mod_rails/Fcgi) definieren, auf dem die App in Capistrano bereitgestellt wurde. Hier werde ich die Cap-Bereitstellung einer App mithilfe von SVN mit dem Mongrel-Cluster als Anwendungsserver besprechen.

Installation:

Capistrano kann wie unten gezeigt als Rubinstein installiert werden: $ Gem installiert Capistrano

Konfigurieren einer Rails-App für die Verwendung von Capistrano:

Dies kann durch Ausführen des folgenden Befehls in der Rails-App erfolgen:

$ capify .

Der obige Befehl erstellt eine Capfile Und config/deploy.rb Datei.

user@hostname [~/railsapp]$ capify . [hinzufügen] schreibend './Capfile' [hinzufügen] schreibend './config/deploy.rb'

user@hostname [~/railsapp]$ cat Capfile

„deploy“ laden, wenn „respond_to?(:namespace) # cap2 differentiator Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin|“. laden(Plugin) }

Load 'config/deploy' # Entfernen Sie diese Zeile, um das Laden einer der Standardaufgaben zu überspringen

user@hostname [~/railsapp]$ cat config/deploy.rb

set :application, „Legen Sie hier Ihren Anwendungsnamen fest“ set :repository, „Legen Sie hier Ihren Repository-Speicherort fest“

# Wenn Sie nicht in /u/apps/#{application} auf den Ziel-#-Servern bereitstellen (was die Standardeinstellung ist), können Sie den tatsächlichen Standort # über die Variable :deploy_to angeben: # set :deploy_to, „/var /www/#{application}“

# Wenn Sie Subversion nicht zum Verwalten Ihres Quellcodes verwenden, geben Sie unten Ihren SCM an: # set :scm, :subversion

Rolle :app, „Ihr App-Server hier“ Rolle :web, „Ihr Webserver hier“ Rolle :db, „Ihr Datenbankserver hier“, :primary => true

PS: Alternativ können wir auch direkt erstellen Capfile Und Deploy.rb Datei unter der Rails-App und laden Sie die erforderlichen Daten mit dem „vi“-Editor hinein.

Capfile und Deploy.rb:

Das Capfile enthält alle Aufgaben, die beim Cap-Deployment ausgeführt werden müssen. Alle Funktionen (Aufgaben) innerhalb der Capfile können mit dem Schlüsselwort „task“ definiert werden. Eine Gruppe von Funktionen wird als Namespace bezeichnet.

Beispiel-Capfile:

„deploy“ laden, wenn „respond_to?(:namespace) # cap2-Unterscheidungsmerkmal“.

„config/deploy“ laden

Namespace :deploy do

Aufgabe :start, :roles => :app do

Führen Sie „cd #{current_path} && mongrel_rails Cluster::configure -e Production -p #{mongrel_port} -N #{mongrel_nodes} -c #{current_path} –user #{user} –group #{user}“ aus.

Führen Sie „cd #{current_path} && mongrel_rails cluster::start“ aus.

Führen Sie „rm -rf /home/#{user}/public_html; ln -s #{current_path}/public /home/#{user}/public_html“

Führen Sie „mkdir -p #{deploy_to}/shared/config“ aus.

Führen Sie „mv #{current_path}/config/mongrel_cluster.yml #{deploy_to}/shared/config/mongrel_cluster.yml“ aus.

Führen Sie „ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml“ aus.

Ende

Aufgabe :restart, :roles => :app do

Führen Sie „ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml“ aus.

Führen Sie „cd #{current_path} && mongrel_rails cluster::restart“ aus.

Führen Sie „cd #{current_path} && chmod 755 #{chmod755}“ aus.

Ende

Ende

Die Datei config/deploy.rb enthält alle Variablen, die beim Cap-Deploying verwendet werden. Sagen wir, in der obigen Capfile greifen wir auf verschiedene Variablen wie – mongrel_port, user, chmod755 usw. zu. Dasselbe sollte zuerst in der Datei config/deploy.rb definiert werden, dann führt nur Capistrano die Aufgabe ordnungsgemäß aus.

Beispiel config/deploy.rb:

set:application, „railsapp“

set:domain, „hostname“

set :user, „user“

set :repository, „svn+ssh://#{user}@#{domain}/home/#{user}/svn/#{application}/trunk“

set :use_sudo, false

set:group_writable, false

set :deploy_to, „/home/#{user}/apps/#{application}“

set :deploy_via, :checkout

set :chmod755, „app config db lib public seller script script/* public/disp*“

set :mongrel_port, „4000“

set :mongrel_nodes, „2“

default_run_options[:pty] = true

Rolle: App, Domäne

Rolle:Web, Domäne

Rolle :db, Domäne, :primary => true

Hier müssen wir den entsprechenden Anwendungsnamen, Domänennamen und SSH-Benutzer platzieren. Die Rails-App sollte in das SVN-Repository importiert werden, bevor mit der Bereitstellung fortgefahren wird. Das SVN-Repository kann wie unten gezeigt eingerichtet werden.

Benutzer@Hostname [~]$ mkdir svn

user@hostname [~]$ svnadmin create ~/svn/railsapp

PS: Stellen Sie sicher, dass Sie auch im SVN-Repository denselben Namen der Rails-App angeben.

Sobald dies erledigt ist, können wir die Rails-App in das SVN-Repository importieren:

Benutzer@Hostname [~]$ mkdir -p ~/temp/railsapp/tags ~/temp/railsapp/branches

Benutzer@Hostname [~]$ cp -pR ~/railsapp ~/temp/railsapp/trunk

Stellen Sie hier sicher, dass Sie beim Erstellen des Trunk-Verzeichnisses den vollständigen Pfad zu „railsapp“ (Ihrem Rails-App-Verzeichnis) angeben. Außerdem müssen in der Datei „trunk/config/deploy.rb“ der richtige Benutzer, die richtige Anwendung und die richtige Domäne angegeben werden.

Die Rails-App befindet sich im Trunk-Verzeichnis und kann jetzt in das SVN-Repository importiert werden.

user@hostname [~]$ svn import temp/railsapp file:///home/user/svn/railsapp -m „message“

Die in das SVN-Repository importierte Rails-App (z. B. auf dem Server) kann wie unten gezeigt auf dem lokalen Computer ausgecheckt werden:

user@localmachine [~]$ svn co svn+ssh://user@hostname/home/user/svn/railsapp/trunk Ordnername

Passwort: SSH-Passwort des Benutzers

Jetzt können wir die bearbeitete Datei capfile und die Datei „deploy.rb“ im ausgecheckten Ordner finden. Führen Sie anschließend im RAILS_ROOT der lokalen Versionsanwendung den folgenden Befehl aus.

$-Cap-Deploy:Setup

$-Cap-Bereitstellung: kalt

Der Befehl „capploy:setup“ richtet die anfängliche Verzeichnisstruktur ein, die für die von cap bereitgestellte App erforderlich ist.

Sagen,

/home/user/apps

/home/user/apps/appname

/home/user/apps/appname/releases

/home/user/apps/appname/shared

Der Befehl „capploy:cold“ checkt die Rails-App aus dem SVN-Repository aus und platziert sie in einem Verzeichnis darin – /home/user/apps/appname/releases. Später wird ein Sym-Link von /home/user/apps/appname/releases/ /home/user/apps/appname/current erstellt. Außerdem wird das Dokumentstammverzeichnis auf das öffentliche Verzeichnis der aktuellen Version verwiesen, wie im Capfile erwähnt.

Das Release-Verzeichnis enthält die auf dem Server bereitgestellten Apps und der App-Ordner wird nach dem Datum und der Uhrzeit benannt, zu der die Rails-App bereitgestellt wurde.

Sagen,

Benutzer@Hostname [~/apps/railsapp/releases]$ ls -al

insgesamt 24

drwxrwxr-x 6 Benutzer Benutzer 4096 28. April 2009 .

drwxrwxr-x 4 Benutzer Benutzer 4096 9. Juli 2009 ..

drwxr-xr-x 16 Benutzer Benutzer 4096 15. Okt. 2008 20081015183834

drwxr-xr-x 21 Benutzer Benutzer 4096 3. Februar 2009 20081015183941

drwxr-xr-x 8 Benutzer Benutzer 4096 28. April 2009 20090428215604

drwxr-xr-x 8 Benutzer Benutzer 4096 28. April 2009 20090428221701

In der Rails-App übliche Verzeichnisse (z. B. Bilder, Konfigurationsdateien, Protokolldateien) werden im freigegebenen Verzeichnis abgelegt und mit der aktuellen Version verknüpft.

Verweise: http://www.capify.org/index.php/Capistrano http://www.hostingrails.com/Capistrano-2-x-Deploying-Your-Rails-Application-on-HostingRails-com

Mitwirkender: Vinayan

Nehmen Sie Kontakt mit uns auf.

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman