Capistrano un Wordpress (II daļa)

Iepriekšējā rakstā es mazliet apskatīju to, kas ir Capistrano, git un kāpēc tas ir ērtāks veids Wordpress izmaiņu veikšanai. Šis ir turpinājums tam un paskaidro, kā sakonfigurēt Capistrano.

Priekšnosacījumi

Protams, ka Capistrano un git izmantošana nav iespējama uz parastajiem shared serveriem (kas domāti vienkāršam PHP hostingam), bet šeit būs nepieciešams kas lielāks - vismaz VPS vai savs (dedicated) serveris. Katrā gadījumā es iesaku VPS, un no visiem VPS labākais neapšaubāmi ir Linode, bet tas nav lētākais. Viss nepieciešamais:
  • *nix serveris (visticamāk, Linux) ar SSH pieeju (vislabāk ar atslēgu, nevis paroli)
  • Git un git repozitorijs (uz tā paša servera, bet der arī citur)
  • Webserveris (Apache, nginx vai kāds cits)
  • Ruby (vislabāk ar RVM, bet šajā gadījumā der arī sistēmas ruby)
Es neaprakstīšu to, kā katru no iepriekšminētajiem uzinstalēt, sakonfigurēt, utt., jo ar pamācībām ir pilns internets.

Capfile

Lai Capistrano strādātu, ir nepieciešama tikai strādājoša "recepte", kā tiek saukti ruby skripti, kurā ir aprakstīti servera parametri un uzdevumi, kas jāveic pirms/pēc citiem uzdevumiem deployment procesā. Parasti Ruby on Rails recepte sastāv no Capfile un config/deploy.rb faila, bet šajā gadījumā būs viens vienkāršs fails ar nosaukumu Capfile, kas jāievieto pašā Wordpress aplikācijas mapes saknē (blakus wp-content/, wp-admin/, wp-config.php utt.). Tad nu te ir tas Capfile, kurā ir komentāri, ko kas nozīmē un tālāk arī apraksts secīgi par to, kas notiek šajā failā.
# Capfile.rb 

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


set :application, "rodzhers" # aplikācijas nosaukums 

set :repository, "/home/rodzhers/git/#{application}.git" # ceļš uz git no servera 

set :local_repository, "user@server:~/git/#{application}.git" # ceļš uz git no datora 

set :deploy_to, "/home/rodzhers/web/#{application}" # ceļš uz aplikācijas mapi no servera 


set :scm, :git # versiju sistēma 

set :branch, :master # git zars 

set :scm_verbose, true # lai git kaut ko pasaka konsolē 

set :deploy_via, :remote_cache # lai git neņem katrreiz visu, bet tikai izmaiņas 

set :use_sudo, false # neizmantot root 


server "linode", :app, :web, :db # servera lomas 


ssh_options[:keys] = ["~/.ssh/linode"] # ceļš uz ssh atslēgām no lokālā datora 

ssh_options[:forward_agent] = true # nepieciešams SSH 

default_run_options[:pty] = true # nepieciešams SSH 


# nepieciešams, lai restart komanda neko nedara (paredzēta Ruby rack aplikācijām) 

desc "Override the original :restart" 
task :restart, :roles => :app do end 

# sasaista mapes, kuru saturs jāpatur starp relīzēm, 

# t.i., tās, kuras nevar pārrakstīt ar git, 

# galvenokārt tie ir augšuplādētie faili 

namespace :rodzhers do 
  task :symlink, :roles => :app do 
    run "ln -nfs #{shared_path}/wp-content/uploads #{release_path}/wp-content/uploads" 
    run "ln -nfs #{shared_path}/wp-content/faili #{release_path}/wp-content/faili" 
    run "ln -nfs #{shared_path}/wp-content/*.png #{release_path}/wp-content/" 
    run "ln -nfs #{shared_path}/wp-content/*.jpg #{release_path}/wp-content/" 
    run "ln -nfs #{shared_path}/wp-content/*.jpeg #{release_path}/wp-content/" 
  end 
end 

after "deploy:symlink", "rodzhers:symlink"
Galvenā doma te ir tāda, ka sākumā tiek iestatīti ceļi līdz mapēm, lai Capistrano zina, kurā vietā ko meklēt, zem tā ir git konfigurācija, vēl zem tā -  ssh konfigurācija, savukārt pašās beigās ir divi uzdevumi, kas tiek definēti, un tos var izsaukt kaut kad pirms/pēc cita uzdevuma. Šajā piemērā "restart" tiek vienkārši "noslāpēts" (jo tas vienmēr tiek izsaukts deployment beigās), bet "symlink" ir domāts, lai faili, kas ir specifiski staging/production lapai netiktu pārrakstīti katrreiz, kad tiek veiktas izmaiņas, bet saglabātos starp versijām.

Jekyll - labāka Wordpress alternatīva?

Rakstā minēto risinājumu priekš Wordpress lapām izmantoju jau vairāk kā gadu, tas ievērojami atvieglo dzīvi, bet man tāpat nepavisam neapmierina (ne man vienīgajam) WordPress, ne arī PHP, jo pirmais ir par smagu priekš bloga, bet otrs vienkārši savā būtībā neglīts un neloģisks, tāpēc es vairāk sliecos uz Jekyll pusi, ko, ja man izdosies palaist un būšu ar to apmierināts, arī aprakstīšu.
comments powered by Disqus