Opstel van 'n verhoog omgewing
Dit is algemene praktyk om plaaslik op 'n projek te werk en wysigings na 'n produksieserwer te druk, maar die stap wat mense dikwels oorskiet, is die staging-bediener. 'N Staging-bediener is 'n mengsel tussen produksie en ontwikkeling; jy kry jou program om te toets asof dit in produksie was. Kom ons kyk na sommige van die probleme wat u moet oorweeg, asook die stappe wat nodig is om 'n produksieplatform as 'n diens (PAAS) te herhaal.
Dit het meer as een keer gebeur: Ek stoot 'n hersiening van my app in produksie, net om 'n probleem te vind nadat dit publiek is. Hierdie probleme kan net so eenvoudig wees as om te vergeet om beelde in jou bewaarplek by te voeg, of dit mag dalk so groot wees om 'n databasis se struktuur plaaslik te verander en te vergeet om die produksiedatabasis by te werk. Probleme met almal gebeur, veral as jy sperdatums het. In hierdie situasies is dit 'n slim idee om 'n staging omgewing op te stel. Die idee is om 'n bediener te hê wat die produksie omgewing noukeurig repliseer, om jou program voor publikasie te toets.
Staging-omgewings raak nie net menslike foute nie, maar ook sagtewareverwante kwessies.
U kan hierdie probleme vind en regmaak omdat die stasie area dieselfde sagteware as u produksie-omgewing het. Dit is in skrille kontras met u plaaslike masjien, waar u verskillende weergawes van sagteware geïnstalleer het (bv. PHP 5.3 vs PHP 5.4) of selfs verskillende funksies. Ek het kode gestoot wat oproepe bevat na file_get_contents net om te bepaal dat die produksieserwer daardie funksie nie ondersteun het nie.
So, hoe gaan dit oor die opstel van 'n staging-bediener? Wel, die eerste stap is 'n bietjie verkenning.
Dit is alles in die besonderhede (meestal)
Probleme met almal gebeur, veral as jy sperdatums het
Die skep van 'n stadium omgewing is spesifiek vir jou produksie omgewing. Daar is geen magiese oplossing wat in elke situasie werk nie. Maar die meeste gevalle volg 'n soortgelyke patroon, en ek sal al die sleutelpunte dek as ons gaan.
Dit is regverdig om aan te neem dat die meeste mense hul programme met 'n soort weergaweinstrument (soos GIT) ontplooi. Op die vreemde kans dat jy besig is met 'n ou projek wat steeds FTP gebruik, kan webwerwe soos ftploy.com of deployHQ.comdien as 'n buffer tussen GIT en jou bediener. Jeffrey Way het ' n insiggewende video saamgestel waarin jy verduidelik hoe om dit op te stel.
Behalwe vir GIT, moet jy dink aan die tale, sagteware en spesiale funksies wat u produksieservers bied. Ek gebruik 'n PHP-gebaseerde PAAS, met die naam Fortrabbit , omdat hulle up-to-date PHP, Apache, en GIT ondersteuning bied. Hulle bied ook die vermoë om 'n navraag by te voeg in jou GIT-verbindingsboodskap wat Komposer veroorsaak om die afhanklikes van jou projek te installeer.
Dit is die stelsel wat ek in die res van hierdie artikel sal opstel. Die standaard funksie stel, sowel as die spesiale komponis funksie, maak Fortrabbit perfek vir 'n wye verskeidenheid van leërskare. Onthou net: dit is nie 'n magiese oplossing nie, maar die betrokke stappe volg dieselfde patroon as wat jy wil gebruik om 'n staging omgewing vir die meeste projekte op te stel. Pas die proses aan op u spesifieke behoeftes.
Dus, sonder verdere ado, kom ons in.
Die skep van die bediener
Die skep van 'n stadium omgewing is spesifiek vir jou produksie omgewing.
Daar is baie verskillende bedryfstelsels wat jy op 'n bediener kan hardloop. Fortrabbit loop Debian Squeeze op hul bedieners, en aangesien ons hulle probeer ooreenstem, het ek besluit om dit ook te laat loop.
Ek sal Vagrant gebruik om dit op te stel. Moenie bekommerd wees as jy nooit Vagrant gebruik het nie; ons sal niks gevorderde doen nie. Maak seker jy het VirtualBox en Vagrant geïnstalleer (Vagrant is 'n CLI vir VirtualBox, dus VirtualBox is nodig).
Vagrant neem 'n virtuele momentopname van 'n bedryfstelsel as 'n basis 'boks', en jy kan dan verskeie VM'e van daardie prent skep. So eers moet ons die basis boks aflaai vir Debian Squeeze. Ek is nie heeltemal seker waar my kopie vandaan kom nie, so ek het dit na DropBox opgelaai, sodat jy dit kan aflaai en gebruik. Om te installeer, maak 'n terminaal venster oop en tik:
Dit voeg die blokkie by Vagrant met die naam 'debian'. Ons kan nou 'n voorbeeld van hierdie boks vir ons stasie area skep. Laat ons eers 'n nuwe gids skep:
Maak dan die Vagrant config-lêer deur te tik:
Dit skep 'n config-lêer, genaamd "VagrantFile", wat al die instellings vir u bediener bevat. Dit lyk redelik druk wanneer jy dit oopmaak, maar die meeste reëls is opmerkings. Jy hoef net die lyn wat sê: config.vm.network: oorgebou, te onttrek . As jy alle ander opmerkings uitvee, word jy met 'n lêer wat so lyk:
Hierdie opsies vertel Vagrant om 'n nuwe virtuele masjien te skep wat gebaseer is op ons Debian Squeeze-basiskassie. Dit stel dan die netwerk af om te oorbrug. 'N VM met 'n oorbrug netwerk verskyn as 'n nuwe fisiese masjien aan jou router, sodat dit outomaties sy eie IP-adres herwin. Hierdeur kan u toegang tot die masjien van enige toestel op u netwerk (moontlik buite u netwerk as u u router instel).
Nou kan ons ons VM begin met die opdrag: " vagrant up " (sonder die aanhalingstekens).
U moet die uitset van Vagrant sien wat u VM skep. As jou rekenaar verskeie NIC's het wat aan die netwerk gekoppel is, sal Vagrant jou vra om die NIC te kies om te gebruik.
Ons sal SSH gebruik om in te teken, maar ons moet Vagrant se ingeboude " vagrant ssh " -opdrag gebruik om in te teken. Volgens Vagrant se beste praktyke moet alle bokse 'n vagrant met die wagwoord hê, vir beide wortel en vagrant, "vagrant". Die vagrant gebruiker word bygevoeg as 'n sudo gebruiker wat nie 'n wagwoord hoef in te voer nie, sodat jy sudo- opdragte direk kan gebruik
Kom ons gaan voort en stel die bediener se sagteware op.
Daarbenewens gebruik hulle die dotdeb repository om die grootste deel daarvan te installeer. Vir die onbekende is dotdeb'n projek deur Guillaume Plessis wat die nuutste weergawes van gewilde webbedienerpakkette installeer.
Ons is gereed om te begin. Maak seker dat u terminale venster oop is en deur SSH by die bediener aangemeld word. Eerstens, voeg die dotdeb-repo by APT (die pakketbestuurder) by die byvoeging van 'n nuwe lêer by sources.d directory:
Dit maak 'n nuwe lêer met die naam dotdeb.list in vim ('n teksredakteur) oop. Die naam is nie belangrik nie, aangesien alle lêers in hierdie gids in APT gelees word. Ons moet vier lyne by hierdie lêer voeg. As jy nog nooit VIM gebruik het nie, tik net ' i ' om die invoegmodus in te voer en die volgende vier reëls te kopieer / plak:
Om te stoor, druk die esc- sleutel en tik : wq . Dit is die opdrag om te skryf en op te hou, wat basies beteken slaan en uitgang.
As u op Enter druk, word die lêer gestoor en word u terug na die opdraglyn.
Ons het nou die repos bygevoeg, maar ons moet die handtekening nog byvoeg voordat ons dit kan gebruik. Tik die volgende om die GNU-sleutel by te voeg:
Dit laai die dotdeb sleutel af en voeg dit as 'n getekende bron. Update nou APT om die nuwe pakket in te tik deur te tik:
Dit kan 'n rukkie neem, maar jy sal al die dotdeb-pakkette wat in APT gelys word wanneer dit klaar is. As gevolg van hoe dotdeb opgestel is en hoe APT afhanklikhede gelaai word, kan ons Apache en PHP op dieselfde tyd installeer deur te tik:
Met hierdie enkele reël installeer en installeer APT Apache2 en PHP5. As jy die Fortrabbit se memcache-byvoeging gebruik, kan jy dit installeer met:
Maar ek gaan nie in memcache in ons voorbeeld in hierdie artikel gaan nie.
Nou moet ons die uitbreidings wat Fortrabbit gebruik, installeer. Begin die volgende opdrag:
Die laaste ding wat ons moet installeer is Composer. Ek gaan dit wêreldwyd installeer omdat ons dit op 'n paar verskillende plekke sal gebruik. Die opdragte om wêreldwyd te installeer, is:
Die eerste opdrag aflaai en voer die installeerder uit; Die tweede opdrag skuif Composer na die bin-lêer sodat ons dit kan gebruik sonder om die pad te verklaar. Kom ons beweeg na die konfigurasie.
Die kans is goed dat u aan meer as een projek kan werk. As dit die geval is, skep 'n staging-bediener vir elke projek baie oorhoofse koste. Om vir verskeie webwerwe op 'n enkele bediener toe te laat, moet ons naamgebaseerde virtuele leërskare by Apache voeg, en dit moet aparte gidse en repos vir elke projek skei.
Kom ons begin met 'n virtuele gasheer.
Ek gaan voort om vim te gebruik, maar weet dat as jy in jou eie programme wil werk, jy dit kan kopieer en plak of stoor in die staging_server- lêergids wat jy op jou rekenaar geskep het.
Die gids word gedeel met jou VM, en jy kan toegang tot die lêers in die vagrant root directory. U kan dan: sudo cp / vagrant / file newfile of sudo mv / vagrant / filee newfile gebruik om die lêers onderskeidelik te kopieer of te skuif.
Om 'n nuwe virtuele gasheer te skep, moet ons 'n lêer in die / etc / apache2 / sites-available / directory skep. Om dit met VIM te doen, tik die volgende:
Binne, voer die volgende in (onthou druk " i " vir invoegmodus):
Die eerste reël verklaar 'n virtuele gasheer wat luister na versoeke op enige IP in poort 80. Vervolgens stel ons die bediener se e-pos en die bediener se naam in. Die e-pos is vir foutdoeleindes, en die opsie vir die bediener se naam vertel Apache wanneer hierdie virtuele gasheer moet lees. Gereelde virtuele leërskare werk af van IPs. Byvoorbeeld, elke vhost luister op 'n ander IP; dis hoe Apache hulle onderskei.
Aangesien u waarskynlik net een IP het, kan ons naamgebaseerde Virtuele leërskamers gebruik, sodat u 'n ander naam op dieselfde IP kan verskaf.
In ons voorbeeld word enige versoeke gerig op demo.dev deur hierdie virtuele gasheer opgetel.
Die volgende reël sit die dokument se hoofmap. Hier kry Apache lêers vir hierdie vhost. Die stellings in die gids- richtlijn stel toestemmings vir hierdie vhost in. Ek gaan nie te veel besonderhede in nie, maar ons stel eers die Apache-opsies vir dopgehou in, en ons stel vas wat in 'n .htaccess-lêer oorgedra kan word. En uiteindelik stel ons wie toegang tot die webwerf kan kry (almal kan in ons geval).
Die laaste twee lyne vertel Apache wat die logbestand moet noem en wat om na die log te skryf. Ons logbestand word demo.log genoem in die Apache-loggids wat geleë is op / var / log / apache2 / op hierdie VM.
Om hierdie vhost in te skakel, tik die volgende:
Dit skep 'n simlink tussen die lêer in die webwerwe-beskikbare vouer na 'n lêer in die terreine-geaktiveerde vouer. Nadat u hierdie opdrag uitgevoer het, word u versoek om Apache weer te begin. Jy kry 'n fout as jy Apache probeer herlaai omdat ons nie die werf se gids geskep het nie. Dit is maklik vasgestel koop maak die demo- gids wat ons in die vhost-lêer verwys het:
Ons wil nie hê dat die wortelgebruiker die vouer moet besit nie, verander dit dan aan die vagrant gebruiker met die chown-opdrag:
Herlaai nou Apache:
Ons nuwe webwerf moet nou ten volle funksioneel wees. Ons volgende stap is om GIT op te stel.
Opvolg met 'n paar GIT Magic
Maak seker dat jy in die tuisgids is deur cd ~ te tik . Skep 'n nuwe gids vir die repo: mkdir demo.git , voer die gids in, en begin 'n nuwe, blote GIT-repo:
'N Kaal repo is in wese 'n standaard repo sonder 'n werkboek. As jy meer wil weet oor GIT, kyk gerus na Andrew Burgess se video-reeks .
Ons het nou die vermoë om kode na die werf se gids te stoot, en daar is baie maniere om dit te bereik. Maar ek hou daarvan om dinge so na as moontlik te laat lyk na die diens wat ek emuleer. Hier is 'n prentjie van Fortrabbit se git-proses wat van hulle webwerf geneem is:
Jy kan sien die stoot proses gaan deur drie stappe. Dit vertoon 'n opdateringsboodskap wanneer dit verbind word, en dit ontplooi die werf in die gids. Die laaste stap installeer alles as die verbindingsboodskap die sleutelwoorde bevat "[sneller: komponis]". Dan nadat hierdie drie stappe klaar is, word die '>> Alles Gereed' vertoon
Voordat ons die hake skep, wil ek oor kleure praat.
Ek doen die meeste van my werk in die terminale, en meer dikwels laat terminale programme alles dieselfde kleur. As jy verskillende kleure by jou program voeg, verhoog dit nie net leesbaarheid nie, maar word dit ook vergroot. So ook beter "kleurpraktyke" in terminale programme versprei, ek sal 'n oomblik neem om te bespreek hoe hulle werk.
Terminale kom met sestien ANSI kleure wat gekonfigureer en gebruik kan word regdeur die terminale. Hier is 'n prentjie van die iTerm2-instellingsskerm met die sestien kleurgleuwe:
U kan toegang tot die terminale kry deur die ontsnappingstekens te tik, gevolg deur die oop vierkantjie, en dan die kleur se kode. U kan in hierdie prent sien dat die kleure in twee reëls verdeel word: een met die naam "Normaal" en die ander "Helder". Die kodes vir die normale kleure is die nommers 30-37 gevolg deur die letter "m", en die helder kleure is vanaf 90-97 gevolg deur 'n m. U kan dit toets in u terminaal deur echo te gebruik . Om die ontsnappings karakter te skep, tik ctrl-v gevolg deur ctrl- [ . Jy sal 'n karakter kry wat lyk soos ^ [ , maar dit sal nie werk as jy net "^ [" (skuif-6 en dan oop vierkantige bracket) tik nie. So in die terminale venster type:
Weereens, die eerste ^ [ is nie getik nie, maar is geskep met ctrl-v en dan ctrl- [ . Die 0m karakters kode is die reset kode; dit verwyder alle formatering. Dit is omdat die kleurkodes nie eindig ná die volgende woord nie, hulle gaan voort totdat hulle 'n ander kode ontvang.
As dit korrek gedoen word, word die woorde "hallo wêreld" in rooi uitgestuur met die bogenoemde kode (tensy u die slot in 'n ander kleur het).
Gedurende die res van die tutoriaal sal ek kleure by die opdragte voeg. Voel vry om dit te volg of weg te laat; hulle is nie streng benodig nie. Maar as jy kleure wil gebruik, voel vry om my kleure-helpende klas te gebruik . Kom ons gaan nou terug om die hake te skryf.
Die skep van die hake
As u nog 'n blik op die Fortrabbit-prentjie kyk, sal u sien dat dit die boodskap, "Stap 1: Stoorplek opdateer", voor die opdatering van die repo vertoon. Om dit korrek te doen, moet ons hierdie boodskap in die voor-ontvangshaak plaas, wat uitgevoer word voordat die repo opgedateer word. In die terminale venster type:
Dit maak die haak oop vir redigering. Voeg die volgende kode by:
Die eerste reël vertel die bedryfstelsel dat dit 'n PHP-lêer is en dit as sodanig moet hardloop. Dan gee ons 'n kleur en die resetvolgorde aan veranderlikes toe. Die laaste stap eggo s die lyn.
Die volgende haak is 'n bietjie meer ingewikkeld omdat dit die res van die aksies hanteer. Ons sal dit stap vir stap neem, so stoor die eerste haak (: wq) en maak die volgende haak oop:
Die na-ontvangshaak loop nadat die repo opgedateer is. Ons moet eers die werf opdateer en dan kyk na die Komposer-sneller. Hier is 'n skelet van ons program, wat enige nuwe logika uitlaat:
Dit is net 'n oorsig om van te werk. Die eerste ding wat ons moet inbring, is die kenmerk om die nuwe weergawe van die repo in die werf se gids te plaas. Tradisioneel sou ek net die volgende tik as ek in die gids was:
Jy kan iets soos git-trek gebruik , maar dit kan foute veroorsaak. As 'n lêer direk verander is, of as u 'n pleeg gemis het, sal u git-trek nie toelaat dat u u onopgetekende lêers trek of verwyder nie
Dit is twee eenvoudige opdragte, maar jy sal 'n fout kry as jy hulle van die haak probeer hardloop.
GIT stel 'n paar omgewingsveranderlikes voor die hakies hardloop. U kan dit met een van twee oplossings omseil, en ek sal julle albei wys.
Die eerste is om die omgewing veranderlikes te ignoreer, direk in die inligting te stuur. Die tweede vee die veranderlikes heeltemal uit. Ek sal die eerste opsie in hierdie voorbeeld gebruik en die tweede opsie wanneer ons aan die komponent sneller werk. Vervang die kommentaar wat ek hierbo bygevoeg het waar dit sê "TODO Deploy to site" met die volgende:
Dit oortree die omgewingsveranderlikes en noem die genoemde funksies. Die bygevoeg -q parameter vertel GIT om "stil" te wees, en verbied GIT om enige boodskappe te echo.
Nou moet ons kyk na die Komposer sneller. Kom ons breek dit in twee stappe. Ons kyk eers na die sneller, en dan doen ons Komponis. Vervang die tweede TODO kommentaar met die volgende:
Die eerste reël haal die verbindingsboodskap met die git-logopdrag en verby in 'n spesiale formaat om enige addisionele inligting uit te sluit. Vervolgens word nagegaan of die tou die spesiale snellerwoord bevat en die derde stap en OK-boodskap echo. Ons soek na die sleutelwoorde van die Komponis, maar u kan verskeie sleutelwoorde vir ander funksies implementeer soos: migreer in Laravel of voer eenheidstoetse uit. Voeg iets by om jou werkstroom te verbeter.
Die laaste stap is om Komponis uit te voer. Komponis het twee opdragte: komponis installeer en komponis werk .
Die installeeropdrag lees nie die komponis.json- lêer as dit 'n komponis.lock vind nie , en omdat sommige mense komponis.lock by hul .gitignore-lêer kan voeg , is dit veiliger om komponiste-opdatering te laat loop (dit kyk altyd na die komponis.json- lêer .
Die tweede probleem is dat soms Komponist GIT gebruik om pakkette af te laai, en hierdie pogings misluk as gevolg van die omgewingsveranderlikes. So hier is 'n goeie plek om net die "GIT_DIR" omgewing veranderlike te verwyder. Vervang die kommentaar om Komponis te laat loop met die volgende:
Hierdie kode is reguit vorentoe. Ons beweeg die PHP-proses na die werf se gids en verwyder dan die GIT_DIRomgewingsveranderlike sodat GIT normaalweg funksioneer. Die laaste reël voer Komponis.
Binding van los punte
Ons het nou albei hakies opstelling, maar ons is nie heeltemal gereed om ons bediener te begin gebruik nie. Eerstens, ons moet hierdie hake uitvoerbaar maak:
Maak dan 'n GIT-repo in die werf se gids. Ons sal 'n fout kry as ons ons hake probeer hardloop omdat die gids se gids nie 'n GIT-repo is nie. Om hierdie tipe op te los:
Die eerste twee lyne skep die repo, en dan voeg ons die blote repository as die oorsprong van hierdie repo.
U moet ook u publieke sleutel by die geautoriseerde hosts van hierdie bediener voeg, sodat u toegang het tot die bediener via GIT sonder 'n wagwoord. U kan u publieke sleutel kopieer deur op u rekenaar te tik (nie die VM nie):
Plak dit dan eenvoudig op die bediener in die lêer ~ / .ssh / authorized_keys:
Voeg dit net by die lêer, maar laat alles wat binne is.
Vervolgens moet ons die IP van hierdie bediener by ons gasheerlêer voeg. Om die IP te vind, tik:
Dit wys jou die IP van al die netwerk toestelle op hierdie VM. Voeg die een wat aan jou plaaslike netwerk koppel. As jy nie kan bepaal watter IP-adres jy wil gebruik nie, kopieer en plak een in jou blaaier. As dit verbind word, dan het u die korrekte IP-adres
Neem die IP en voeg dit by jou rekenaar se gasheerlêer (nie die VM se gasheerlêer nie). Die gasheerlêer op 'n Mac is geleë by ens / hosts:
Voeg dan die volgende reël by:
As dit werk, sal u na http://demo.dev kan navigeer in u blaaier. Terwyl jy nog op jou Mac is, skep 'n gids en begin 'n GIT-repo:
As alles goed gegaan het, moet jy 'n antwoord van ons GIT-hake sien. Om na http://demo.dev te navigeer, moet die boodskap "Hello World" vertoon in u blaaier.
So dit is hoe jy 'n stadium omgewing kan skep wat die funksionaliteit van 'n tipiese PAAS naboots. As jy probleme ondervind het of jy moet verskeie instellingsomgewings instel, het ek 'n script geskep wat die proses heeltemal outomatiseer. Vir meer inligting, kan u stagr.gmanricks.com besoek.
Ek hoop jy het die artikel geniet. Vra gerus vrae wat u dalk in die kommentaar het. Dankie vir die lees.