Nori gauti straipsnius el. paštu - Prenumeruok

Straipsniai pagal gairę

Teisingas web projektų publikavimas 2

Kažkiek paeksperimentavęs su keletą publikavimo metodų, nusprendžiau, kad man vis dėlto pats priimtiniausias publikavimo metodas Capistrano. Nors jis labiau skirtas ruby tipo projektams publikuoti, bet jis pakankamai lengvai pritaikomas ir tarkim PHP projektams. Vienintelis minusas, kad jis skirtas publikuoti į serverį kuris turi ssh prisijungimą.

Gan neblogas pavyzdys galimybių pritaikytų PHP projektui yra symfony applikacijų deploymentas. Kitiems užtektų daug paprastesnio varianto. Pavyzdžiui aš naudoju tokio tipo scriptą. Uždėjau komentarų ką kai kurios eilutės reiškia.

# Projekto pavadinimas
set :application, “projektas.lt”

# Serverio adresas turintis ssh prisijugima
role :web, “server.zilionis.net:2222”

# Serverio vartotojas. Slatazodzio nenaudoju nes prisijungimas padarytas
# automatinis pasinaudojus rsa raktais
set :user, “zilionis”

set :use_sudo, false

# direktorija kur bus publikuojamas projektas
# document rootas bus tarkim /home/zilionis/domains/projektas.lt/web/current
set :deploy_to, “/home/zilionis/domains/#{application}/web/”
set :shared, “/home/zilionis/domains/#{application}/web/shared”

# SVN nustatumai
set :urlrepository, “http://svn.repo.server/repos/projektas_lt/trunk”
set :scm_username, “JusuSvnUseris”
set :scm_password, “JusuSvnSlaptazodis”

set :repository,  “–username #{scm_username} –password #{scm_password} –no-auth-cache #{urlrepository}”

set :checkout, “export”
set :keep_releases, 3

desc “This will deploy the app”
task :live do
# istraukiam is svn’o projekta
run “svn –quiet #{checkout} #{repository} #{release_path}”

# darom symbolik linkus dideliems libams kurie ne svn’e
run “ln -nfs #{shared}/lib/Zend #{release_path}/project/lib/Zend”
run “ln -nfs #{shared}/lib/ext #{release_path}/public_html/scripts/ext”

# uzchodiman reikiamus failus/direktorijas
run “chmod -R 777 #{release_path}/project/cache”

# paradom aktyvu releasa
run “ln -nfs #{release_path} #{current_path}”
end

Skanaus :)

Teisingas web projektų publikavimas

Dirbant su didesniais web projektais yra vienas žingsnis, kuris kartais kelia net galvos skausmą. Nors tai atrodytų elementaru – projekto publikavimas, atnaujinimas, bet tai yra dažnai sudėtingiau nei atrodo.  Su kokiomis problemomis dažniausiai galima susidurti?

Tarkim el. parduotuvei yra užsakytas didelis atnaujinimas, kuriame yra tiek dizaino atnaujinimai, tiek naujų funkcionalumų įdiegimas. Publikuojant visuomet reikia prisiminti, kad:

  • Įkelti visus reikalingus failus

Jei galvojate, kad protingas sprendimas viską projektą tiesiog įkelti negalvojant tai tinka ne visuomet. Tai tinka dažniausiai tik mažoms svetainėms. Geriausias sprendimas yra toks, kad atnaujinti tik, tai kas pasikeitė. Tai galėtų padėti dalinis svn exportavimas naudojant papildomus skriptus (tarkim naudoju kartais mofio šiek tiek modifikuotas mano), arba naudojantis servisais kurie suteikia automatinio deploymento galimybes tarkim springloops.com, beanstalkapp.com ir t.t. Kelti visą projektą rankiniu būdų yra blogai, nes tai pirma pakankamai ilgai užtrunka (nebent kopijuotume vieną suarchyvuotą failą ir jį vietoje išarchyvuotumėte), bet ir galimi dažni tarkim ftp sutrikimai.

  • Nustatyti teisingas direktorijos teises
  • Atnaujinti duombazes
  • Išvalyti (jei reikia) naudojamą cache

Kiti darbai dažniausiai daromi rankiniu būdu, bet to galima išvengti. Tarkim įkėlus failus galima turėti savo deploymento skriptą, kuris atlieka vis reikalingus darbus už jus. Springloops turi galimybę “papinginti” nustatytą url, kai deploymentas yra užbaigtas. O ten pagal jūsų nustatys scenarijus atlieki veismai, tarkim

<?php Object::getCache()->clearCache();

$aDirsToChmod = array(‘path/dir1′,’path/dir1’);
foreach ($aDirsToChmod as $sDir) { chmod($sDir, 777);} ?>

Su duomebazių atnaujinimais, galimi įvairūs scenarijai, tiek rankinis, tiek per pagalbines priemos.

  • Galite pasidaryti savo duombazių atnaujinimo mecganizmą su pagalbine db lentele, kurioje saugomi versijuojami db atnaujinimai
  • naudoti SQL ORM tarkim Doctrine

Galima naudoti ir daugelį kitų priemonių tokių kaip Capistrano (padarytas su rubiu), Fredistrano (PHP, CakePHP), Phing

O kaip realizuojate jūs?

SVN dalinis eksportavimas

Ne paslaptis, kad bet kokia svetainė yra kuriama pradžioje darbiniame kompiuteryje, o tik po to perkeliama. Daugiau patyrę programuotojai tikrai džiaugiasi versijų kontrolėmis (cvs / svn / git ), kurios padeda atlikti didelius darbus tam tikrose situacijos.
Vienas iš (mažų/didelių) galvos skausmų yra svetainės atnaujinimas. Problema yra ta, kad ne visada prisimeni kokie failai keitėsi nuo paskutinio atnaujinimo. O kopijuoti viską iš naujo yra tiesiog laiko švaistymas.

Šiandien atradau (suradau) būdą kaip realizuoti dalinį eksportavimą svn, kuris leidžia gauti atnaujinimus nuo jūsų pasirinkto revisono. Deja to builtin nėra.

Šiektiek pagooglines atradau, kad tai galima realizuoti per konsolę su gatavu scriptuku (unix/macosx),  python pagalba ar java. Taip bus galima daug greičiau atnaujinti svetaines ir nerekės siųsti viso didžiulio katalogo ar žaisti po vieną failą.