Siirry pääsisältöön

Kehitysympäristöt eli varjot

Päivitetty tällä viikolla

Seravon ylläpidossa olevista sivustoista voidaan avata kehitysympäristö (eng. staging) eli varjo (shadow), joka toimii irrallisena tuotantoympäristöstä ja jossa on turvallista kehittää sivustoa tai suorittaa testauksia. Palvelupaketin tasosta riippuu, kuinka monta varjoa sivustolle voidaan avata. Saat varjoympäristön käyttöön ottamalla yhteyttä asiakaspalveluumme.

Varoitus! Jos varjoa ei käytetä pitkään aikaan, Seravo voi poistaa sen ilman erillistä ilmoitusta.

Varjosivuston käyttäminen

Sivustolle aktivoidut varjoympäristöt näkyvät sivuston hallinnan yläpalkissa. Pudotusvalikosta näkee käytössä olevan instanssin, jossa lukee esimerkiksi Nyt käytössä: PRODUCTION silloin, kun ollaan tuotantosivustolla ja muuttuu instanssien välillä navigoidessa. Lista löytyy myös hallintapaneelista kohdasta Työkalut > Sivuston tila > Varjot.

Varjot toimivat evästeellä, joten oletuksella niillä on aina sama osoite kuin tuotantosivustolla. Tämä varmistaa, että sivuston lisäosien asetukset ja muu sisältö toimivat oikein. Tämä on tärkeää, koska jotkut lisäosat lakkaavat toimimasta tai toimivat virheellisesti, jos sivuston osoite muuttuu yhtäkkiä. Jotta käyttäjälle on selkeää missä ympäristössä ollaan, on varjoympäristö merkitty punaisella hallinnan yläpalkissa sekä alhaalla näkyy punainen varoituspalkki.

Varjossa tehdyt muutokset eivät näy tuotannossa eli julkisella sivustolla, joten tämä on turvallinen ympäristö suorittaa päivityksiä ja testauksia. Kun muutokset tuottavat halutun lopputuloksen, voi ne ajaa myös tuotantoon. Varjosta pääsee takaisin tuotantoon alapalkin punaisesta Poistu-linkistä.

Voit myös ottaa SSH-yhteyden varjoihisi ja työskennellä niiden parissa SSH/SFTP:n tai gitin kautta. Kun uusi varjo luodaan, saat sen käyttöön tarvittavat tunnukset SSH/SFTP:lle. Tunnistat olevasi varjossa tarkastelemalla WP_ENV-ympäristömuuttujaa. Jos olet varjossa, se on joko staging tai testing, riippuen määrityksistäsi. Tuotantoinstanssisi WP_ENV-arvo on production. Ympäristömuuttujat voidaan tarkistaa komennolla wp-list-env.

Varjoeväste

Kehitysympäristöön on mahdollista päästä myös kirjautumatta erikseen tuotantoon. Tämä voidaan toteuttaa joko käyttämällä erillistä verkkotunnusta varjolle tai lisäämällä seravo_shadow-eväste URL-osoitteeseen, esim. https://esimerkki.fi/?seravo_shadow=456def. Varjoevästettä tai varjoargumenttia on käytettävä myös koodissa tai komentorivillä, esim. curl-komennon kanssa tai haettaessa tietoja varjon WP-JSON-rajapinnasta:

curl -iLs https://example.com/test/?seravo_shadow=456def

curl -iLs --cookie "seravo_shadow=456def;path=/" https://example.com/wp-json/wp/v2/

curl -iLs https://example.com/wp-json/wp/v2/?seravo_shadow=456def

Jotkin WordPress-lisäosat ovat riippuvaisia WordPress REST API:sta. Jos ne kutsuvat API:a ilman varjoevästettä (esim. pyyntö ei tule kävijän selaimesta vaan palvelimelta), kutsu tulee tuotantoympäristöön varjon sijaan. Tällöin lisäosa ei toimi oikein, joka voi johtaa virheisiin tai tietojen menetykseen tuotantopalvelimilla.

Datan siirto varjon ja tuotannon välillä

Varjon resetointi

Jotta varjoon tehdyt muutokset vastaisivat mahdollisimman tarkasti tuotantoympäristöön tehtäviä muutoksia, on hyvä resetoida varjo etukäteen, eli kopioida uusin sisältö tuotantoympäristöstä varjoon.

Huomio! Kaikki varjossa olevat tiedostot yliajetaan resetoinnin yhteydessä tuotannon datalla.

Varjon voi resetoida WordPressin hallintapaneelin valikosta Työkalut > Sivuston tila > Varjot.

Voit myös resetoida varjon SSH:n kautta wp-shadow-reset-komennolla. Komento on suoritettava tuotantoympäristössä, ja siihen on valittava resetoitava varjoympäristö, esim. wp-shadow-reset example_123abc.

Huomioi, että oletusarvoisesti varjon resetointi ei kopioi uploads-hakemistoa, koska kuvatiedostot haetaan tuotantoympäristöstä välipalvelimen (proxy) kautta. Jotkin teemat ja lisäosat saattavat tallentaa tiedostoja tähän hakemistoon, joten nämä tiedostot on kopioitava tai regeneroitava manuaalisesti jälkeenpäin. Jos kaikki uploads-hakemiston tiedostot on ehdottomasti oltava fyysisesti varjoympäristössä, voit ajaa wp-shadow-reset-komennon --full-parametrilla.

Huomio! Jos käytät varjoympäristössä alidomainia, muista vaihtaa se takaisin käyttöön jokaisen resetin jälkeen.

Varjon julkaisu tuotantoon

Varjoympäristössä tehdyt muutokset voidaan myös kopioida eli julkaista tuotantoympäristöön. Tämä kopioi kaiken sivuston datan (sisällön ja tietokannan) varjosta ja ylikirjoittaa tuotantoympäristön. Jos tuotantoympäristössä on jotain, jonka haluat tallentaa, tee siitä varmuuskopio etukäteen. Verkkokauppojen tapauksessa kannattaa myös harkita uusimpien WooCommerce-tietojen (esim. uudet tilaukset) tuomista tuotannosta varjoon ennen julkaisua.

Varjoympäristön julkaiseminen tuotantoon tapahtuu suorittamalla seuraava komento tuotantoympäristössä:

wp-shadow-pull example_123abc

Löydät julkaistavan varjoympäristön nimen suorittamalla varjossa komennon wp-list-env (CONTAINER-kenttä) tai tuotannon hallintapaneelista kohdasta Työkalut > Sivuston tila > Varjot.

Huomio! Jos varjosi käytti omaa domainia, sinun on muutettava osoite takaisin tuotannossa käytettyyn osoitteeseen varjon julkaisun jälkeen.

Muista lopuksi tyhjentää kaikki välimuistit suorittamalla komento wp-purge-cache.

Tiedostojen kopioiminen SSH:lla

Joissakin tapauksissa et välttämättä halua siirtää koko varjoa tuotantoon sellaisenaan, vaan ehkä vain (joitakin) tiedostoja tai vain tietokannan. Siihen voit käyttää SSH:n yli suoritettavia komentoja, kuten rsync ja tietokannan vienti- ja tuontikomentoja. Tätä varten sinun on muodostettava SSH-yhteys tuotantoympäristöstä varjoon, johon tarvitset varjon SSH-portin numeron. Sen löydät hallintapaneelin välilehdeltä Työkalut > Sivuston tila > Varjot.

Seuraavat komennot havainnollistavat, kuinka rsync-komentoa käytetään SSH:n yli uusien tiedostojen tuomiseen (rsync siirtää vain tiedostot ja tiedostojen osat, jotka ovat muuttuneet). Parametrien merkitykset:

  • -av tallentaa tiedoston attribuutit (omistaja, aikaleima) ja tulostaa yksityiskohtaisen luettelon kaikista muuttuneista tiedostoista.

  • --delete-after poistaa tuotannosta kaikki tiedostot, joita ei ollut varjoympäristössä, eli poistaa tarpeettomat tiedostot.

  • --exclude=wp-content/uploads jättää uploads-hakemiston siirtämättä varjoympäristöstä ja korvaamatta tuotantoympäristössä

  • Joissakin tapauksissa saatat haluta käyttää myös exclude=.git

  • Muut vaihtoehdot määrittelevät varjoinstanssin SSH-portin ja isäntänimen (hostname) sekä polun wordpress/-hakemistoon

rsync -av --delete-after --exclude=wp-content/uploads -e 'ssh -p 11111' [email protected]:/data/wordpress/ /data/wordpress

[email protected]'s password:

receiving file list ... done

Varmistaaksesi, että kaikki tuotannon uploads-hakemistossa olevat tiedostot säilyvät ennallaan, siirrä ne erikseen eri parametreilla:

rsync -av -e 'ssh -p 11111' [email protected]:/data/wordpress/htdocs/wp-content/uploads /data/wordpress/htdocs/wp-content/ 

Jos haluat tuoda tietokannan, se voidaan tehdä tiedostojen siirron jälkeen. Huomioi kuitenkin, että tämä korvaa kaikki tuotantotietokannassa tällä hetkellä olevat tiedot! Suorita uusi tietokannan vienti suoraan SSH:n kautta ja tuo se tuotantoon yhdellä komennolla:

ssh [email protected] -p 11111 'wp db export -' | wp db import -

Muista lopuksi tyhjentää kaikki välimuistit suorittamalla komento wp-purge-cache.

Kuinka varjoympäristö eroaa tuotantoympäristöstä?

Tuotantoympäristöistä poiketen varjoympäristöjä ei varmuuskopioida automaattisesi, mutta nämä voi suorittaa manuaalisesti WordPressin hallintapaneelin kautta tai komentoriviltä ajamalla wp-backup. Tarkemmat ohjeet löydät täältä.

Suosittelemme ottamaan varmuuskopion aina ennen muokkauksia. Kehitysympäristöä tulisi käyttää testaamiseen, ei muokkausten tallentamiseen ja suosittelemmekin siis sivuston jatkokehittämisen suoritusta toisessa ympäristössä. Lue lisää ja tutustu kehittäjäoppaaseemme!

Uudessa varjossa on oletuksena päällä debug- eli virheenjäljitysviestit. Voit halutessasi piilottaa nämä viestit muokkaamalla tiedostoa wp-config.php (polussa /data/wordpress/htdocs/wp-config.php) seuraavasti:

/** 
* For developers: show verbose debugging output if not in production.
*/
if ( 'production' === getenv('WP_ENV') ) {
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', false);
define('SCRIPT_DEBUG', false);
} else {
define('WP_DEBUG', false);
define('WP_DEBUG_DISPLAY', false);
define('WP_DEBUG_LOG', false);
define('SCRIPT_DEBUG', false);

Huomioithan, että vain koodiin tehdyt muutokset on helppo viedä lokaalista varjoon ja varjosta tuotantoympäristöön, sillä WordPressin tietokantamalli ei tue minkäänlaista automaatiota yksittäisten sisältöjen tai asetusmuutosten kopiontiin tietokannasta toiseen. Mikäli kehitysvarjosta kopioidaan koko WordPressin tietokanta tuotantoon, ylikirjoittuu tuotannon tietokanta ja olennaisia tietoja saattaa kadota.

Vastasiko tämä kysymykseesi?