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.