Siirry pääsisältöön

Sivuston noutaminen kehitysympäristöön

Opas Gitin käyttöön Seravo-ympäristössä: projektin kloonaaminen, Docker-ympäristön käynnistys ja koodin vieminen tuotantoon. Hyödynnä versionhallintaa sivuston kehityksessä ja varmista koodin tietoturva.

Päivitetty tällä viikolla

Gitin käyttö

Git on saatavilla alustallamme, ja kaikilla Seravon uusilla sivustoilla on Git-versionhallinta valmiiksi alustettuna. Gitin käyttö parantaa ohjelmoijien tuottavuutta, vähentää virheitä, tarjoaa lokitiedot muutoksista ja auttaa varmistamaan, ettei sivuston koodiin tule luvattomia muutoksia.

Aloita uusi projekti palvelimen sisällöstä

Voit yksinkertaisesti kloonata etähakemiston (remote repository) omalle koneellesi ja aloittaa työskentelyn. Koska Git on alustettu valmiiksi, voit suoraan käyttää git pull- ja git push -komentoja.

git clone ssh://$SSH_USER@$SITE.seravo.com:$SSH_PORT/data/wordpress ~/Projects/$SITE --origin production 
cd $SITE

Uudella Seravo-sivustolla on valmiina Git-historia, joka pohjautuu WordPress-projektipohjaamme. Tästä on hyvä aloittaa, sillä se helpottaa projektipohjan päivitysten yhdistämistä projektiisi myöhemmin.

Vaihtoehto: Aloita käyttämällä omaa projektipohjaa

Huomautus: Älä tee tätä, jos sivustolla on jo sisältöä tuotannossa. Tuotantoon pushaaminen ylikirjoittaa nykyisen sisällön, mikä voi johtaa tietojen menetykseen.

Jos et halua käyttää Seravon projektipohjaa, voit käyttää omaa WordPress-pohjaasi ja pakottaa (force push) sen uudelle sivustolle. Tällöin Git-historia ja sisältö korvataan omalla pohjallasi.

git clone https://github.com/<customer>/wordpress-project ~/Projects/$SITE 
cd ~/Projects/$SITE
git remote add production ssh://$SSH_USER@$SITE.seravo.com:[$SSH_PORT]/data/wordpress
git push --force production master

Vinkki: Voit käyttää useita eri etähakemistoja (remotes):

git remote add github [email protected]:ottok/example-site.git 
git remote -v github [email protected]:ottok/example-site.git (fetch)
github [email protected]:ottok/example-site.git (push)
production ssh://[email protected]:12345/data/wordpress (fetch)
production ssh://[email protected]:12345/data/wordpress (fetch)
upstream https://github.com/Seravo/wordpress (fetch)
upstream https://github.com/Seravo/wordpress (push)

Paikallisen kopion käynnistäminen

Kun projekti on omalla koneellasi, sen käynnistäminen Dockerilla onnistuu helposti docker-compose up -komennolla:

# Start docker
docker-compose up

# You can connect into container
ssh yoursite.local -F .vagrant/ssh/config

# You can pull the production database (not required on new sites)
wp-pull-production-db

# You can also pull the production plugins (not required on new sites)
wp-pull-production-plugins

Nyt voit avata osoitteen http://wordpress.local/ selaimessa. Voit muokata tiedostoja ja nähdä muutokset välittömästi. Kun koodi on valmis julkaistavaksi, committaa muutokset ja puske ne tuotantoon:

git push production master

Palvelimen päässä .git/hooks/post-receive suorittaa automaattisesti Composerin ja Gulpin, jos ne on määritetty. Huom: Jos loit Git-arkiston itse, post-receive-hook on asennettava erikseen osoitteesta scripts/git-hooks/post-receive.

Kun olet valmis, voit sammuttaa Dockerin komennolla docker-compose down. Käytä git clean -komentoa poistaaksesi kaikki Dockerin jäänteet:

docker-compose down git clean -fdx && git reset --hard

Git push -asetusten määrittäminen

Oletuksena Git ei salli pushaamista hakemistoon, joka ei ole "bare repository", ja antaa varoituksen (refusing to update checked out branch).

laptop$ git push production 
Counting objects: 8, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 667 bytes | 667.00 KiB/s, done.
Total 8 (delta 7), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master remote: error: By default, updating the current branch in a non-bare repository
remote: is denied, because it will make the index and work tree inconsistent
remote: with what you pushed, and will require 'git reset --hard' to match
remote: the work tree to HEAD.
remote:
remote: You can set the 'receive.denyCurrentBranch' configuration variable
remote: to 'ignore' or 'warn' in the remote repository to allow pushing into
remote: its current branch; however, this is not recommended unless you
remote: arranged to update its work tree to match what you pushed in some
remote: other way.
remote:
remote: To squelch this message and still keep the default behaviour, set
remote: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To production:/data/wordpress
! [remote rejected] master -> master (branch is currently checked out)

Voit ohittaa tämän asetuksen palvelimella salliaksesi pushaamisen käyttämällä receive.denyCurrentBranch updateInstead -määritystä. Lue tarkempi selitys Stackowerflowsta.

laptop$ ssh production 
production$ cd /data/wordpress
production:/data/wordpress$ git config receive.denyCurrentBranch updateInstead

Gitin poistaminen WordPress-sivustolta

Voit halutessasi poistaa koko Git-arkiston komennolla: rm -rf /data/wordpress/.git

Tätä ei kuitenkaan suositella. Git parantaa kehitystyön laatua, vähentää virheitä ja tarjoaa tärkeän lokitiedon kaikista koodiin tehdyistä muutoksista.

Git auttaa seuraamaan muutoksia – myös Seravon tekemiä

Seravon ylläpitoon kuuluu ympärivuorokautinen valvonta. Jos sivusto kaatuu, Seravo selvittää syyn ja pyrkii palauttamaan sivuston toimintaan. Vaikka koodaustyö ei kuulu kiinteään kuukausihintaan, tietyissä hätätapauksissa Seravon henkilökunta saattaa tehdä pieniä koodimuutoksia palauttaakseen sivuston toimintaan. Jos sivustolla on Git käytössä, Seravo tekee näistä muutoksista commitin, jotta näet tarkalleen, mitä on tehty.

Vastasiko tämä kysymykseesi?