Siirry pääsisältöön

Ympäristömuuttujat ja .env-tiedoston käyttö

Katso Seravon palvelinympäristön valmiit ympäristömuuttujat (WP_ENV, DB_*, AUTH_KEY) ja opi käyttämään .env-tiedostoa turvallisesti WordPress-kehityksessä.

Kaikissa Seravon ympäristöissä (tuotanto, varjoympäristö ja paikallinen kehitys) on määritelty joukko valmiita järjestelmän ympäristömuuttujia. Niiden avulla sivuston asetukset, tietokantayhteydet ja tietoturva-avaimet pysyvät erillään lähdekoodista.

Voit tarkastaa kaikki omassa ympäristössäsi aktiivisena olevat ympäristömuuttujat SSH-yhteydellä komennolla:

wp-list-env

Seravon oletusympäristömuuttujat

Muuttuja

Kuvaus ja käyttötarkoitus

WP_ENV

Kertoo ajoympäristön tyypin. Tuotannossa arvo on aina production. Testi- ja kehitysympäristöissä arvo on tyypillisesti staging tai development.

CONTAINER

Palvelinkontin yksilöllinen tunniste (esim. esimerkki_1ab2c3). Tunniste voi vaihtua ajan saatossa, joten älä koskaan rakenna sovelluslogiikkaa sen varaan.

DEFAULT_DOMAIN

Seravon sivustolle luoma sisäinen varaverkkotunnus (esim. esimerkki.fi-c.seravo.com). Sitä käytetään sivuston hallintaan ja testaukseen ennen varsinaisen verkkotunnuksen käyttöönottoa.

DB_HOST, DB_NAME, DB_USER, DB_PASSWORD

Tietokantayhteyden tunnistetiedot. Hyödynnä aina näitä muuttujia sen sijaan, että kovakoodaisit salasanoja tai palvelinosoitteita lähdekoodiin.

AUTH_KEY, SECURE_AUTH_*, LOGGED_IN_*, NONCE_*

WordPressin tietoturva-avaimet ja suolat (salts). Jokaisella ympäristöllä on omat yksilölliset avaimensa, jotka suojataan pitämällä ne poissa versionhallinnasta.

Tietoturva-avaimet wp-config.php-tiedostossa

Seravon oletusasennuksessa WordPressin tietoturva-avaimet ladataan suoraan ympäristömuuttujista getenv()-funktiolla:

/**
* Authentication Unique Keys and Salts
* You can find them by running $ wp-list-env
*/
define('AUTH_KEY', getenv('AUTH_KEY'));
define('SECURE_AUTH_KEY', getenv('SECURE_AUTH_KEY'));
define('LOGGED_IN_KEY', getenv('LOGGED_IN_KEY'));
define('NONCE_KEY', getenv('NONCE_KEY'));
define('AUTH_SALT', getenv('AUTH_SALT'));
define('SECURE_AUTH_SALT', getenv('SECURE_AUTH_SALT'));
define('LOGGED_IN_SALT', getenv('LOGGED_IN_SALT'));
define('NONCE_SALT', getenv('NONCE_SALT'));

Ympäristömuuttujien hyödyntäminen omassa koodissa

Voit lukea ympäristömuuttujia suoraan teemassa tai lisäosissa PHP:n getenv()-funktiolla (tai WordPressin omalla wp_get_environment_type()-funktiolla).

Esimerkiksi ulkoisten analytiikka- tai seurantaskriptien lataaminen voidaan rajata vain tuotantoympäristöön:

if ( getenv( 'WP_ENV' ) === 'production' ) {
// Lataa seurantaskriptit vain tuotannossa
}

Omien muuttujien määrittäminen .env-tiedostolla

Seravon projektipohjan wp-config.php käyttää oletuksena PHP Dotenv -kirjastoa. Voit luoda projektin juurihakemistoon (/data/wordpress/.env) oman .env-tiedoston omien sovelluskohtaisten muuttujien, kuten kolmannen osapuolen API-avainten, tallentamiseen.

Esimerkki .env-tiedoston sisällöstä:

STRIPE_API_KEY=sk_live_51ExampleKey123456
GOOGLE_MAPS_API_KEY=AIzaSyExampleKey123456

Voit tämän jälkeen lukea avaimet koodissasi komennolla getenv('STRIPE_API_KEY').

Versionhallinta ja ympäristökohtaiset mallitiedostot

Varsinainen .env-tiedosto sisältää salaisuuksia, joten se on oletuksena estetty .gitignore-tiedostossa eikä sitä tule koskaan viedä Git-versionhallintaan.

Halutessasi voit kuitenkin tallentaa versionhallintaan ympäristökohtaisia mallitiedostoja (esim. .env.development tai .env.example) ilman oikeita salasanoja, ja luoda palvelimella symbolisen linkin aktiiviseen tiedostoon:

cd /data/wordpress
ln -s .env.development .env

Tärkeää: Älä ylikirjoita tietokantatunnuksia .env-tiedostossa

Seravon projektipohja lataa .env-tiedoston oletuksena createUnsafeImmutable()-tilassa. Tämä tarkoittaa, että palvelimen asettamia kriittisiä ympäristömuuttujia (kuten DB_*, WP_ENV ja CONTAINER) ei voida vahingossa ylikirjoittaa .env-tiedostosta.

Älä koskaan kopioi paikallisen ympäristön tietokantatunnuksia tuotannon .env-tiedostoon, jotta sivuston tietokantayhteys ei lakkaa toimimasta.

Dotenv-versiot ja wp-config.php-syntaksi

Seravon uudemmissa asennuksissa (PHP Dotenv 5.x) ympäristömuuttujat ladataan wp-config.php-tiedostossa seuraavasti:

$dotenv = Dotenv\Dotenv::createUnsafeImmutable($root_dir);
$dotenv->load();

Huom: Metodissa oleva sana Unsafe viittaa vain siihen, että muuttujat viedään PHP:n perinteiseen getenv()-rajapintaan, jota WordPress käyttää. Se on täysin turvallinen ja välttämätön määritys.

Vanhojen sivustojen päivittäminen (Dotenv 2.x -> 5.x)

Jos päivität Composerilla vanhaa sivustoa, jonka wp-config.php käyttää vielä Dotenv 2.x -syntaksia (new Dotenv\Dotenv($root_dir) tai Dotenv::load($root_dir)), sivusto saattaa päätyä valkoiseen virhesivuun päivityksen jälkeen ja lokiin (/data/log/php-error.log) ilmestyy virheilmoitus Dotenv-luokasta.

Päivitä tällöin wp-config.php-tiedoston Dotenv-kutsu vastaamaan yllä olevaa createUnsafeImmutable($root_dir)-syntaksia. Lisätietoja syntaksimuutoksista löytyy PHP Dotenvin päivitysohjeesta.

Katso myös

Ympäristömuuttujien ja .env-tiedoston hyödyntäminen pitää sovelluksen salaisuudet turvassa ja helpottaa koodin siirtämistä paikallisen kehityksen, varjoympäristön ja tuotannon välillä. Mikäli kohtaat ongelmia ympäristömuuttujien tai wp-config.php-asetusten kanssa, asiakaspalvelumme auttaa osoitteessa [email protected].

Vastasiko tämä kysymykseesi?