Slik distribuerer du med distribuert

Automatisert arbeidsflyt for distribusjon er et flott verktøy som alle programvareutviklingsgrupper må ha. Utgivelsesprosessen, når den er rask, sikker og feiltolerant, kan spare tid for å utvikle flere flotte ting. Og den gode nyheten at det er mange gode verktøy for å lage en automatisert utgivelses syklus.

I denne artikkelen skal jeg introdusere deg et distribusjonsverktøy kalt Deployer. Jeg liker å bruke den fordi den er skrevet i PHP, er lett å sette opp, og har mange praktiske funksjoner for å integrere distribusjonsprosessen i lagets arbeidsflyt.

Distribusjonsprosessen med distribuert

Først av alt, la oss se strukturen av distribusjonsprosessen med Deployer. Den består av tre hoveddeler: a distribuere serveren til init distribusjon, a produksjon eller staging server å være vert for søknaden din, og a git repository å lagre koden til søknaden din.

Når du initierer en distribusjonsprosess, kjører du et distribusjonsskript på distribusjonsserveren. Etter dette kobles distribusjonsserveren til produksjonsserveren med SSH og gjør vedlikeholdsdisplayene fra produksjonsserveren som kloning av koden fra et git-lager, oppdatering av komponentens avhengigheter og andre ting du trenger for å få en vellykket utgivelse. 

For alle å være klarert i denne kjeden, vil vi opprette og installere SSH-sertifikater til serverne og depotet.

Installer SSH-sertifikater

Vi må opprette en SSH-godkjenningsnøkkel på en produksjonsserver og dele den med et git-repository. Hvis du ikke har SSH-godkjenningsnøkler på distribusjonsserveren din, kjør du ssh-keygen og følg instruksjonene. Keygen vil opprette en offentlig nøkkel i en fil ~ / .Ssh / id_rsa.pub.

Nå kan du installere det på kontoen til ditt lager. Hvis du ikke vet hvordan du gjør det, kan du se på eksempelet til GitHub fra de relaterte koblingene nederst i artikkelen, eller spørre varslingstjenesten for å få hjelp.

Det er også bedre å lage en SSH-nøkkel på distribusjonsserveren din for å bli klarert på produksjonsmaskinen. Bruk disse kommandoene til å lage en passordløs SSH-forbindelse mellom distribusjons- og produksjonsserverne.

vagrant @ localserver: ~ $ ssh-keygen vagrant @ localserver: ~ $ ssh-copy-id -i ~ / .ssh / id_rsa.pub www-data@my_project.com

Med alle sertifikater installert, er vi klare til å installere Deployer.

Installer Deployer

Installasjonen av Deployer er like enkelt som installasjonen av Composer. Du må laste ned PHP Arkiv og gjøre det til en global kommando:

curl -LO https://deployer.org/deployer.phar mv deployer.phar / usr / local / bin / dep chmod + x / usr / lokal / bin / dep

La oss se versjonen av Deployer for å se om alt er riktig installert:

vagrant @ localserver: ~ $ dep - versjon Deployer 6.0.3

Alt ser bra ut, og vi er klare til å lage vårt første distribusjonsskript.

Gjør det første distribusjonsskriptet

For å initialisere Deployer for prosjektet ditt, kjør dep init. Dette vil utføre et verktøy for å generere et distribusjonsskript, som vil be deg om en prosjekttype og repository-kobling og vil opprette deploy.php fil i gjeldende katalog. La oss se på denne filen og hovedfunksjonene som brukes i en oppskrift. 

Funksjonene sett og  arbeid med konfigurasjonsverdiene, og en snarvei til en getter kan brukes med a løpe kommando:

sett ('current_path', '~ / my_application'); løp ('rm current_path / runtime / *');

Hver konfigurasjonsverdi kan overstyres for hver vert. Vi kan sette opp en distribusjonsbane og SSH-bruker for vårt program i vårt distribusjonsskript:

vert ('my_project.com') -> bruker ('www-data') -> sett ('deploy_path', '~ / application');

For å definere dine egne oppgaver, bruk oppgave funksjon og løpe å kjøre en kommando på produksjonsserveren:

oppgave ('disk_free', funksjon () $ df = run ('df -h /'); writeln ($ df););

Og kjør det med dep og funksjonsnavnet som parameter:

vagrant @ localserver: / vagrant / deployer $ dep disk_free ➤ Utfør oppgave disk_free Filsystemstørrelse Brukt Avail Bruk% Montert på / dev / md0 7.4G 4.7G 2.4G 67% / ✔ Ok 

Nå kan du se gjennom distribusjonsfilen og endre alle nødvendige parametre til konfigurasjonen av søknaden din.

Distribuere til produksjon

Vi har allerede installert Deployer, installert SSL-sertifikater til distribusjons- og produksjonsserverne, og laget distribusjonsskriptet, så endelig er det på tide å trekke alt sammen og gjøre den første distribusjonen til produksjonen.

For å distribuere programmet, ring bare dep distribuere:

Hvis noe har gått galt, kan du rulle tilbake til den tidligere distribuerte versjonen i ett trinn:

vagrant @ localserver: ~ $ dep rollback ✔ Gjennomføre oppgave tilbakelevering

Ser lett ut, gjør det ikke?

La oss nå sjekke hva som ble opprettet på vår produksjonsserver. Takket være Deployer, kan vi gjøre dette enkelt med snarvekkommandoer. Prøve dep ssh å koble til en server direkte ved hjelp av konfigurasjonen fra distribusjonsskriptet, eller eksternt utføre en kommando via SSH-tunnel med dep løpe. Denne kommandoen støtter også variabler som vi har satt i skriptet.

Så la oss se på distribusjonsbanen:

vagrant @ localserver: ~ $ dep run "tre deploy_path". ├── nåværende -> / home / user / my_project / releases / 3 ├─ - utgivelser │ ├── 1 │ │ ├── composer.json │ │ ├── config.php -> / home / user / my_project / delt / config.php │ │ ├── README.md │ │ ├── runtime -> / hjem / bruker / data / my_project / delt / runtime │ │ ├── leverandør │ │ └── ... │ │ └── web │ │ └── index.php │ ├── 2 │ │ ... │ └── 3 │ ... └─ - delt ├── config.php └── runtime 

Det viktigste er utgivelser katalog, hvor Deployer lagrer de siste versjonene av applikasjonen vår. Etter hver vellykket distribusjon eller tilbakeringing, kobler den nåværende til aktivert utgivelse. Endelig har vi en delt katalog, som lagrer filer og mapper fra shared_dirs og shared_files som vi har satt i skriptfilen.

Ved den første distribusjonen vil Deployer kopiere disse filene til en delt dir og opprette en kobling fra utgivelser dir til delt dir. Neste gang vil det bare legge til en lenke fra utgivelsesfilene til filene og mappene i den delte katalogen. Du kan også endre hvilken som helst fil i en delt katalog, og Deployer vil beholde den uten endringer på hver distribusjon, for eksempel, dette er nyttig for konfigurasjonsfiler.

I tillegg, hvis du har en composer.json fil i roten til depotet ditt, vil Deployer ringe Komponist for å opprette en leverandørkatalog og oppdatere alle nødvendige avhengigheter. Hvis du ikke lagrer Composer-filen i rotkatalogen, kan du opprette en egendefinert oppgave for å oppdatere den.

Og nå er det på tide å integrere applikasjonen som distribueres til våre prosesser.

Legg til en tilpasset oppgave

Hvert lag har sine egne distribusjonskonfigurasjoner og prosesser for å automatisere, så Deployer har enkle verktøy for å utvide standardkonfigurasjonen og legge til tilpassede oppgaver. For eksempel kan verten din ha regelen om å lagre applikasjoner og webroot på forskjellige steder, uten rett til å endre konfigurasjonen av Apache eller Nginx. 

Men det er en måte å komme over denne symbolsk linken til regelbruk. Så vi legger til en oppgave for dette:

Oppgave ('deploy: public_html', funksjon () run ('ln -sf deploy_path / current / web /var/www/my_application.com');); 

Og legg den til hovedutplasseringsoppgaven som en del av en utgivelsesperiode:

oppgave ('deploy', [// ... 'distribuere: public_html', // ...]);

Kjør nå distribusjonsskriptet igjen og kontroller om alt er riktig med dep ssh.

Tredjeparts oppskrifter

Deployer har mange oppskrifter for å integrere med tredjeparter som kan utvide grunnleggende funksjonalitet. Vi kan bruke Komponist til å installere dem:

komponist krever distribusjon / oppskrifter --dev 

Jeg liker å bruke Oppsummering oppskrift. For å aktivere det, bør vi gå til siden Slack oppskrift, klikk på Legg til i Slack knappen, og velg kanalen for å sende varsler. Da vil vi få Slack webhook og legge til denne koden til distribusjon.

// krever slakk oppskrift krever 'oppskrift / slack.php'; // sett slack webhook sett ('slack_webhook', / * din slanke webhook * /); // varsle slakk etter vellykket distribusjon etter ('suksess', 'slakk: varsle: suksess');

Etter disse endringene sender Deployer en melding som denne til distribusjonskanalen:


Nå kan du legge til laget ditt i kanalen, slik at alle som er involvert, kan bli varslet.

Konklusjon

I denne opplæringen har vi installert Deployer og opprettet et distribusjonsskript som kan brukes til å distribuere applikasjonen fra et git-repository til en produksjons- eller oppstartsserver med bare ett klikk.

Det kan også integreres i teamprosesser. For eksempel kan et program distribueres automatisk etter endringer i master-grenen og varsling kan gjøres på en slakk kanal om vellykket distribusjon.

Hvis du har noen spørsmål, ikke nøl med å stille spørsmål i kommentarene til artikkelen. 

Videre lesing og beslektede lenker

  • Distributørens nettsted
  • Slakk oppskrift på Deployer
  • Eksempel på å installere en SSH-nøkkel til en GitHub-konto