Distribuer WordPress med Github Actions

For en stund tilbake viste jeg deg hvordan du distribuerer WordPress-nettstedet ditt med Deploybot. Jeg har brukt denne tjenesten i årevis nå, men da jeg startet, var den utenfor min prisklasse, så jeg brukte ingenting og gjorde mange feil ved å distribuere nettstedene mine som kostet meg mange tapte timer og noen tårer.

I dag skal jeg lede deg gjennom hvordan du bruker Github Actions til å distribuere nettstedet ditt automatisk uten kostnad. Oppsettet er mer komplekst enn Deploybot, men det kommer til å være gratis for de fleste prosjekter.

Dette innlegget har en haug med fungerende deler, så sett av litt tid, spesielt hvis du ikke har jobbet med Git- eller SSH-nøkler før. Vi skal dekke:

  • Opprette en hostingkonto
  • Får koden din inn i Git
  • Opprette spesielle distribusjons-SSH-nøkler for Github å bruke
  • Konfigurere Github Actions YAML-filen
  • Bruk av Github-depothemmeligheter for å holde privat informasjon trygg
  • rsync via ssh

Hva er Github-handlinger?

Github-handlinger er en funksjon i Github som lar deg utføre oppgaver automatisk basert på tilstanden til koden din. I dag skal vi se på distribusjon, men du kan også ha en handling for å kjøre enhetstestene dine eller varsle en Slack-chat når noen lager en ny PR på prosjektet ditt.

Selv om de kan ta litt tid og krefter på å sette opp første gang, returnerer de investeringen ved å la deg gå tilbake til koden i stedet for å bekymre deg for å gjenta det samme arbeidet om og om igjen.

Sette opp nettstedet ditt

Det første du trenger er å opprette en hostingkonto på Hostinger, så gå over og sjekk ut planene som er tilgjengelige. Maker WordPress-planen er en god plan hvis du er vert for noen få nettsteder.

Med nettstedet ditt konfigurert, gå til sikkerhetskopiene og lag en sikkerhetskopi av nettstedet før du gjør noe annet. Pass på at du også laster ned denne sikkerhetskopien slik at du har en kopi på datamaskinen din…i tilfelle.

Å lese:  Beste kalenderplugins for WordPress

Pakk ut sikkerhetskopien og kopier deretter ut mappen for å bruke som vårt git-lager. Du kan fjerne filen wp-config.php fordi vi ikke trenger den i dag.

Nå som vi har lastet ned kopien av depotet, la oss legge det til Github. For å starte må vi opprette et nytt depot i Github. Legg til tittelen din og hvilken beskrivelse du vil, pleier jeg ikke gjør det initialiser depotet med en README fordi jeg vil gi mine egne prosjektspesifikke notater og dokumentasjon for et klientprosjekt.

Deretter åpner du Terminal og inn i den nedlastede kopien av WordPress slik at du kan initialisere depotet med . Det første vi vil gjøre er å legge til .gitignore-filen vår slik at vi ikke legger til filer som kan overskrive det Hostinger trenger for å kjøre nettstedet ditt. Du kan bruke .gitignore-filen nedenfor.

De åtte øverste linjene er spesifikke for Hostinger, så sørg for at du kopierer disse linjene hvis du har din egen foretrukne ignoreringskonfigurasjon.

Hvis du ikke er kjent med Git, sjekk ut innlegget mitt om Introduksjon til Git.

.htaccess

wp-config.php

wp-content/uploads/*

wp-content/cache/*

wp-content/upgrade/*

wp-content/advanced-cache.php

wp-content/object-cache.php

wp-content/mu-plugins/*

config/app_config.yml

config/database.yml

config/*.sphinx.conf

config/s3_credentials.yml

*~

*.cache

*.Logg

*.pid

tmp/**/*

.DS_Store

db/cstore/**

db/sfinx/**

doc/api

doc/app

doc/plugins

doc/*.dot

dekning/*

db/*.sqlite3

*.tmproj

*.sw?

*.esproj

_notater*

dwsync.xml

podcast.xml

*.kpf

*laster opp/*

*.swp

*.idé

*.sublime-prosjekt

*.sublime-arbeidsområde

*/node_modules/*

tagger

*.bak

cache/*

managewp/*

Nå som du har ignoreringsfilen klar, bruk og for å legge til WordPress-filene i depotet ditt. Skyv deretter disse filene til Github-depotet ditt.

Opprette en distribusjon av SSH-nøkkel for Github

For å distribuere nettstedet vårt via Github Actions, trenger vi en SSH-nøkkel for handlingen å bruke. Gjøre ikke bruk din vanlige SSH-nøkkel.

For å generere de nødvendige SSH-nøklene, bruk kommandoen nedenfor ved å bruke e-posten din. Når du blir bedt om en passordfrase, trykker du på enter og lar den stå tom. Når du blir spurt om en plassering, velg en plassering for å lagre dem midlertidig. Du kan finne Githubs dokumentasjon om SSH-nøkler med ekstra detaljer her.

Å lese:  Hvilket CMS for e-handel passer for deg?

ssh-keygen -t rsa -b 4096 -C “[email protected]

Åpne nå den offentlige nøkkelen (den som slutter på .pub) og åpne den i tekstredigeringsprogrammet du ønsker. I Hostinger-kontoen din klikker du på kontonavnet ditt øverst til høyre og velger SSH Keys.

Deretter velger du Legg til nøkkel og kopierer/limer inn hele nøkkelen i hovedtekstfeltet. Sørg for å merke nøkkelen riktig slik at du kan se hva nøkkelen brukes til.

Til slutt klikker du på Legg til for å lagre nøkkelen til kontoen din.

Legge til og konfigurere Github-handlingen din

Før vi begynner å bygge handlingen vår, trenger vi litt hemmelig informasjon lagret på kontoen vår. Ting som vår private nøkkel for nøkkelparet vi nettopp opprettet, plasseringen til serveren vår og oppføringen for filen known_hosts.

Start dette ved å velge Innstillinger øverst til høyre i depotet ditt. Velg deretter hemmeligheter fra venstre kolonne. Vi skal legge til 3 forskjellige verdier.

  1. DEPLOY_SSH_KEY: Dette er den private nøkkelen vi genererte (har ikke .pub på slutten)
  2. NEXCESS_LOCATION: Plasseringen SSH vil få tilgang til på serveren vår pluss filbanen til html-katalogen din. Hvis du gjør en feil her, kan du slette nettstedet ditt, men det er derfor vi tok en sikkerhetskopi.
  3. NEXCESS_HOST: Den tillatte vertsfilen vi trenger fra serveren vår

Du har allerede 1, så åpne nøkkelfilen og kopier hele innholdet til en hemmelighet kalt DEPLOY_SSH_KEY.

Deretter kan du finne plasseringen til serveren din fra Hostinger-kontrollpanelet for nettstedet ditt under Access-menyen.

Til slutt, den enkleste måten å få innholdet for NEXCESS_HOST på er å ssh inn på serveren din fra datamaskinen. Dette bør be deg om å godta en ny kjent server. Godta den nye serveren og deretter kan du gå til ~/.ssh/known_hosts og få den siste linjen i filen for hemmeligheten du må legge til i depotet ditt.

Å lese:  6 beste WordPress Tabs Plugins sammenlignet for 2024

Hvorfor holder vi disse tingene hemmelige? Hver av disse opplysningene har en viss sikkerhetsrisiko, så du vil ikke ha dem i depotet ditt. Å sette dem i en hemmelig variabel i Github sørger for at du ikke avslører informasjon ved et uhell.

Vi er klare til å dra tilbake til depotet vårt på Github og sette i gang handlingen vår. Start med å gå til Handlinger-menyen øverst i depotet ditt og klikk på det. Selv om det er mange forhåndsbygde handlinger, skal vi starte med å lage vår egen handling, så velg den fra handlingsskjermen.

Å gjøre dette vil gi deg en grunnleggende arbeidsflytfil skrevet i YAML. Som standard fungerer det bare på hovedgrenen din, men ved å endre hvilken gren som er i argumentene på linje 9 og 11 kan du få den til å fungere for en annen gren. Du kan gjøre dette hvis du ønsker å distribuere fra en iscenesettelsesgren til et iscenesettelsessted og fra master til live-området.

Start med linjen nedenfor og slett resten av standard arbeidsflytfilen.

# Kjører en enkelt kommando ved hjelp av runners-skallet

– navn: Kjør et en-linjes skript

løp: ekko Hei, verden

Nå må vi få SSH-agenten vår. Søk etter webfactory/ssh-agent på høyre side av arbeidsflytskjermen.

Klikk på dette og det vil gi deg noen kommandoer du kan kopiere og lime inn i bunnen av filen din, men vi kommer til å bruke vårt eget tilpassede skript. Kopier koden nedenfor og lim den inn i arbeidsflytfilen under actions/checkout@v2line.

# Sette opp SSH

– navn: Sett opp SSH-agent

bruker: webfactory/[email protected]

med:

ssh-private-key: ${{ secrets.DEPLOY_SSH_KEY }}

– navn: Sett opp kjente_verter

kjør: echo ‘${{ secrets.NEXCESS_HOST }}’ >> ~/.ssh/known_hosts

– navn: Synkroniser prosjektfiler

kjør: rsync -uvzr –backup –backup-dir=”~/deploy-backup/” –exclude ‘wp-config.php’ –exclude ‘.gitignore’ –exclude ‘.git/*’ — ekskluder ‘wp-content/uploads/*’ –ekskluder ‘.htaccess’ –ekskluder ‘wp-content/cache/*’ –ekskluder ‘wp-content/advanced-cache.php’ –ekskluder ‘wp-content’ /object-cache.php’ –exclude ‘wp-content/mu-plugins/*’ ${GITHUB_WORKSPACE}/ ${{ secrets.NEXCESS_LOCATION }}

Å lese:  Hvordan få svar fra besøkende med demokratiavstemning i WordPress

Du kan se hemmelighetene vi satte opp tidligere i denne filen. Den starter med å trekke inn ssh-agenten og legger til vår private DEPLOY_SSH_KEY til serveren den blir klar i bakgrunnen. Deretter legger den til serveren vår som en kjent vert.

Den avsluttes med å synkronisere prosjektfilene til live-serveren i en lang rsync-kommando. Kort sagt, den sikkerhetskopierer den eksterne serveren til en katalog kalt deploy-backup og flytter deretter eventuelle nye filer i Github-prosjektet over til live-serveren. Vi ekskluderte alle de samme plasseringene som vi ignorerte i vår originale .gitignore-fil, slik at rsync ikke berører dem ved et uhell.

Hvis du vil lese deg opp på hver rsync-kommando der, refererer jeg vanligvis til dette Ubuntu-dokumentasjon på rsync

Alt du trenger å gjøre nå er å gjøre noen endringer i depotet ditt og deretter bruke git for å legge til og legge dem til i depotet ditt. Skyv disse endringene til Github, og handlingen vil automatisk sikkerhetskopiere filene dine og deretter skyve endringene over til nettstedet ditt.

Hvis du er ny på automatiske distribusjoner, virker dette som mye arbeid. Selv første gang jeg brukte Github Actions for å distribuere nettstedet mitt, brukte jeg noen dager på å jobbe med skriptet. Dette føles ikke som det sparer tid før jeg bruker det samme skriptet i flere uker med et prosjekt som distribueres regelmessig.

Å automatisere distribusjonen og ta deg tid til å gjøre det riktig, betyr at du aldri ved et uhell overskriver feil filer, legger feil filer i feil katalog eller gjør noen andre av de mange feilene jeg har gjort å flytte rundt på filer i løpet av de 12 årene. Jeg har bygget tomter.

En dag eller to med tid brukt på å konfigurere distribusjon for første gang er verdt å spare den smerten.

Nye publikasjoner:

Anbefaling