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.
