Capistrano-utbyggnad med subversion

Capistrano-utbyggnad

Capistrano är ett verktyg som används för automatisering av applikationsdistributionsprocessen. Capistrano används främst för att distribuera rälsappar. Ändringar som gjorts i rails-appen kan enkelt överföras till servern med hjälp av cap-deploying. Capistrano kan konfigureras med alla versionskontrollsystem som SVN / GIT för att distribuera en app. Vi kan också definiera applikationsservertyp (mongrel, mod_rails / Fcgi) på vilken appen har distribuerats i Capistrano. Här ska jag diskutera cap-distribution av en app med SVN med Mongrel-kluster som applikationsserver.

Installation:

Capistrano kan installeras som en rubinpärla enligt bilden nedan: $ gem installera capistrano

Konfigurera en rails-app för att använda capistrano:

Detta kan göras genom att utföra följande kommando från rails-appen:

$ capify .

Kommandot ovan skapar en Capfile och config/deploy.rb fil.

användare@värdnamn [~/railsapp]$ capify . [lägg till] skriver './Capfile' [lägg till] skriver './config/deploy.rb'

user@hostname [~/railsapp]$ cat Capfile

ladda 'deploy' if respond_to?(:namespace) # cap2 differentiator Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| ladda (plugin) }

ladda 'config/deploy' # ta bort den här raden för att hoppa över att ladda någon av standarduppgifterna

användare@värdnamn [~/railsapp]$ cat config/deploy.rb

set :application, "ställ in ditt programnamn här" set :repository, "ställ in din förvarsplats här"

# Om du inte distribuerar till /u/apps/#{application} på målservrarna # (vilket är standard), kan du ange den faktiska platsen # via variabeln :deploy_to: # set :deploy_to, “/var /www/#{applikation}"

# Om du inte använder Subversion för att hantera din källkod, ange # din SCM nedan: # set :scm, :subversion

roll :app, "din app-server här" roll :webb, "din webbserver här" roll :db, "din db-server här", :primär => sant

PS: Som ett alternativ kan vi skapa direkt Capfile och deploy.rb fil under rails-appen och ladda nödvändig data till den med "vi"-redigeraren.

Capfile och Deploy.rb:

Capfilen innehåller alla uppgifter som måste utföras under cap-distribuering. Alla funktioner (uppgifter) i Capfilen kan definieras med nyckelordet "task". Grupp av funktioner kallas namnutrymme.

Exempel på Capfile:

ladda 'deploy' if respond_to?(:namespace) # cap2 differentiator

ladda 'config/deploy'

namnutrymme :deploy do

uppgift :start, :roles => :app gör

kör “cd #{current_path} && mongrel_rails cluster::configure -e production -p #{mongrel_port} -N #{mongrel_nodes} -c #{current_path} –användare #{användare} –grupp #

kör "cd #{current_path} && mongrel_rails cluster::start"

kör "rm -rf /home/#{användare}/public_html; ln -s #{current_path}/public /home/#{user}/public_html”

kör "mkdir -p #{deploy_to}/shared/config"

kör "mv #{current_path}/config/mongrel_cluster.yml #{deploy_to}/shared/config/mongrel_cluster.yml"

kör "ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml"

slutet

uppgift :starta om, :roles => :app gör

kör "ln -s #{deploy_to}/shared/config/mongrel_cluster.yml #{current_path}/config/mongrel_cluster.yml"

kör "cd #{current_path} && mongrel_rails cluster::restart"

kör "cd #{current_path} && chmod 755 #{chmod755}"

slutet

slutet

Filen config/deploy.rb innehåller alla variabler som används vid cap-distribuering. Säg, i ovanstående Capfile kommer vi åt olika variabler som – mongrel_port, user, chmod755 etc. samma bör först definieras i filen config/deploy.rb, sedan kommer endast Capistrano att utföra uppgiften korrekt.

Exempel config/deploy.rb:

set :applikation, "railsapp"

set :domän, "värdnamn"

set :användare, "användare"

set :repository, "svn+ssh://#{user}@#{domän}/home/#{user}/svn/#{application}/trunk"

set :use_sudo, false

set :grupp_skrivbar, falsk

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

set :deploy_via, :checkout

set :chmod755, “app config db lib public vendor script script/* public/disp*”

set: mongrel_port, “4000”

set :mongrel_nodes, “2”

default_run_options[:pty] = sant

roll :app, domän

roll :webb, domän

roll :db, domän, :primär => sant

Här måste vi placera lämpligt applikationsnamn, domännamn och ssh-användare. Rails-appen bör importeras till svn-förvaret innan du fortsätter att implementera med cap. SVN-förvaret kan ställas in enligt nedan.

användare@värdnamn [~]$ mkdir svn

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

PS: Se till att ange samma namn på rails-appen till svn repository också.

När det är gjort kan vi importera rails-appen till svn repository:

user@hostname [~]$ mkdir -p ~/temp/railsapp/tags ~/temp/railsapp/branches

användare@värdnamn [~]$ cp -pR ~/railsapp ~/temp/railsapp/trunk

Se här till att tillhandahålla den fullständiga sökvägen till railsapp (Din rails-appkatalog) medan du skapar trunkkatalogen. Även rätt användare, applikation och domän måste anges i trunk/config/deploy.rb.

Rails-appen kommer att finnas i trunkkatalogen och den kan importeras till svn-förrådet nu.

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

Rails-appen som importeras till svn-förvaret (säg, placerad på servern) kan checkas ut till den lokala maskinen som visas nedan:

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

Lösenord: Användarens SSH-lösenord

Nu kan vi hitta den redigerade capfilen och deploy.rb filen i den utcheckade mappen. Efter detta, från RAILS_ROOT för den lokala versionsapplikationen, kör följande kommando.

$ cap deploy:setup

$ cap utplacering: kall

Kommandot 'cap deploy:setup' kommer att ställa in den initiala katalogstrukturen som krävs för den cap-distribuerade appen.

Säga,

/home/user/apps

/home/user/apps/appname

/home/user/apps/appname/releases

/home/user/apps/appname/shared

Kommandot 'cap deploy:cold' kommer att kolla in rails-appen från svn-förvaret och placera den under en katalog inuti – /home/user/apps/appname/releases. Senare kommer en sym-länk att skapas från /home/user/apps/appname/releases/ /home/user/apps/appname/current. Dokumentroten kommer också att pekas till den offentliga katalogen för den aktuella versionen som nämns i Capfilen.

Utgivningskatalogen innehåller apparna som distribueras på servern och appmappen kommer att namnges enligt datum och tid då rails-appen har installerats.

Säga,

user@hostname [~/apps/railsapp/releases]$ ls -al

totalt 24

drwxrwxr-x 6 användare användare 4096 28 april 2009 .

drwxrwxr-x 4 användare användare 4096 9 juli 2009 ..

drwxr-xr-x 16 användare användare 4096 15 oktober 2008 20081015183834

drwxr-xr-x 21 användare användare 4096 3 feb 2009 20081015183941

drwxr-xr-x 8 användare användare 4096 28 april 2009 20090428215604

drwxr-xr-x 8 användare användare 4096 28 april 2009 20090428221701

Kataloger som är vanliga i rails-appen (t.ex. bilder, konfigurationsfiler, loggfiler) placeras i den delade katalogen och sym-länkas till aktuell utgåva.

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

Bidragsgivare: Vinayan

Kontakta oss.

Prenumerera för de senaste uppdateringarna

relaterade inlägg

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

sv_SESwedish