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.