Seravon palvelinympäristössä sivuston koodi, tietokanta ja asetukset on sijoitettu vakioituihin polkuihin. Tämä mahdollistaa palvelintason automaattisen valvonnan, optimoinnit ja varmuuskopioinnin.
Kaikkien sivustojen oletusasennuksena käytetään avoimen lähdekoodin Seravo WordPress -projektipohjaa, joka on Composer-pohjainen ja johdettu Roots Bedrock -rakenteesta.
Datan sijainti (/data/)
Kaikki sivustokohtainen data sijaitsee palvelimella hakemiston /data/ alla.
Palvelinkonttien päivityksissä sivusto alustetaan säännöllisesti uudelleen puhtaalle pohjalle. Tällöin vain /data/-hakemiston sisältö säilytetään. Älä siis tallenna sivuston tiedostoja tai omia skriptejä järjestelmän oletushakemistoihin (kuten /var/ tai /tmp/).
SSH-käyttäjän todellinen kotihakemisto sijaitsee polussa /data/home/$USER/. Hakemistoon on valmiit symboliset linkit, joten terminaalissa voit käyttää normaalisti tuttua kotipolkua ~/.
Keskeiset polut ja hakemistot
Hakemisto tai tiedosto | Kuvaus ja käyttötarkoitus |
| Projektin juuri. Versionhallinnan (Git), Composerin ( |
| Web root (Juurihakemisto). Täältä HTTP-palvelin (nginx) tarjoilee sivuston julkisen sisällön. |
| WordPressin ydin. WordPressin omat ydintiedostot, joita voidaan hallinnoida myös Composerilla. Älä koskaan muokkaa näitä tiedostoja suoraan käsin. |
| Sivustokohtainen sovelluskoodi. Teemat, lisäosat, mu-plugins-tiedostot ja kielipaketit. |
| Lataukset ja mediatiedostot. Vain käyttäjien lataamille mediatiedostoille. Tätä hakemistoa ei seurata Gitissä. |
| Nginx-palvelinasetukset. Omat mukautetut HTTP-palvelimen säännöt ( |
| Palvelinlokit. Sivuston lokitiedostot (nginx access- ja error-lokit, PHP-FPM, WordPress debug, SSH-tapahtumat). |
Projektin oletusrakenne
Seravon projektipohjassa sovelluskoodi ja WordPress-ydin on erotettu toisistaan. Tämä mahdollistaa pakettien hallinnan Composerilla ja puhtaan versionhallinnan ilman, että WordPress-ytimen tiedostoja tarvitsee seurata Gitissä.
Projektihakemiston rakenne polussa /data/wordpress/:
/data/wordpress
├── config.yml # Paikallisen ympäristön asetukset (luodaan config-sample.yml:stä)
├── config-sample.yml
├── composer.json # PHP-riippuvuudet (lisäosat, teemat, WP Core)
├── composer.lock
├── docker-compose.yml # Paikallisen Docker-kehitysympäristön määritys
├── Vagrantfile # Vagrant-tuki paikalliskehitykseen (legacy)
├── package.json # Node/npm-riippuvuudet ja build-skriptit
├── gulpfile.js # Esimerkkikonfiguraatio build-työkaluille
├── phpcs.xml # PHP_CodeSniffer -koodityylisäännöt
├── nginx/ # Omat nginx-palvelinmääritykset
│ └── custom.conf # Omat ohjaukset ja säännöt (*.conf)
├── scripts/ # Aputyökalut, CI-skriptit ja Git-hookit
│ ├── hooks/ # Esim. pre-commit- ja post-receive-hookit
│ ├── run-tests # Testausajuri paikallis- ja CI-ympäristöön
│ └── WordPress/Installer.php # Composer-asennusskriptit
├── vendor/ # Composerin asentamat PHP-paketit
└── htdocs/ # Julkinen web root
├── index.php
├── wp-config.php # WordPressin asetustiedosto
├── wordpress/ # WordPressin ydin
└── wp-content/ # Sivustokohtainen sovelluskoodi
├── mu-plugins/ # Pakolliset lisäosat
├── plugins/ # Lisäosat
├── themes/ # Teemat
├── languages/ # Käännöstiedostot
└── uploads/ # Sivuston mediatiedostot (ei Git-seurantaan)
Mediatiedostot (uploads/) ja kehitysympäristö
Kaikki sivuston mediatiedostot kuuluvat hakemistoon /data/wordpress/htdocs/wp-content/uploads/.
Teemojen ja lisäosien omat graafiset elementit (kuvakkeet, taustakuvat) tulee tallentaa teeman tai lisäosan omaan hakemistoon (esim.
wp-content/themes/teema/assets/), eiuploads-kansioon.Mediatiedostoja tai tietokantaa ei tule seurata Git-versionhallinnassa.
Kun sivustoa kehitetään paikallisesti Docker-kontissa, tuotannon uploads-kansiota ei tarvitse ladata omalle koneelle. Kehityskontti käyttää automaattista välityspalvelinta (asset proxy), joka hakee puuttuvat kuvat suoraan tuotantosivustolta, kun tuotanto-osoite on määritelty projektin config.yml-tiedostossa. Tietokannan voi tuoda paikalliseen konttiin komennolla wp-pull-production-db.
Seravon automaation edellyttämät polut ja osoitteet
Jotta Seravon automaattinen 24/7-valvonta, tietoturvapäivitykset ja suorituskykyoptimoinnit toimivat, ympäristöltä edellytetään seuraavat standardipolut:
WordPressin ydin: On sijaittava polussa
/data/wordpress/htdocs/wordpress/.Sovelluskoodi ja sisältö: Teemojen, lisäosien ja latausten on sijaittava polussa
/data/wordpress/htdocs/wp-content/.Hallintapaneeli: WordPressin hallintaan on oltava pääsy osoitteessa
https://esimerkki.fi/wp-admin/. Mikäli kirjautumissivun osoitetta mukautetaan, oletusosoitteen/wp-admin/on toimittava rinnalla.Kuvien automaattinen optimointi: Seravon taustalla toimiva automaattinen kuvien optimointi käsittelee vain polussa
/data/wordpress/htdocs/wp-content/uploads/sijaitsevia kuvia. Muissa hakemistoissa sijaitsevia tiedostoja ei käsitellä, jotta kooditiedostoja tai teemoja ei muokata vahingossa.Heartbeat-valvonta: Seravo valvoo sivuston elintoimintoja osoitteessa
https://esimerkki.fi/wp-admin/admin-ajax.php?action=heartbeat. Mikäli kyseinen päätepiste on estetty tai poistettu, sivuston toimivuutta ei voida luotettavasti havaita.
Vaihtoehtoiset hakemistorakenteet
Mikäli projektissa käytetään toisenlaista asettelua, se voidaan sovittaa Seravon ympäristöön symbolisten linkkien (symlink) avulla, kunhan palvelimen odottamat polut säilyvät toiminnassa.
Siirtyminen Roots Bedrockista
Roots Bedrock käyttää oletuksena hakemistoa web/ julkisena juurena, web/wp/ WordPress-ytimelle ja web/app/ sisällölle. Jotta Bedrock-projekti täyttää Seravon pakolliset polut, se voidaan sovittaa ympäristöön kahdella eri tavalla:
Vaihtoehto A: Polutuksen määrittäminen composer.json-tiedostossa (Suositus)
Puhtain ja suositeltavin tapa on määrittää Bedrockin composer.json asentamaan WordPress ja lisäosat suoraan Seravon vakiopolkuihin. Tällöin erillisiä symbolisia linkkejä ei tarvita lainkaan:
"extra": {
"installer-paths": {
"htdocs/wp-content/mu-plugins/{$name}/": ["type:wordpress-muplugin"],
"htdocs/wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
"htdocs/wp-content/themes/{$name}/": ["type:wordpress-theme"]
},
"wordpress-install-dir": "htdocs/wordpress"
}Vaihtoehto B: Vakiomuotoisen Bedrockin sovittaminen symbolisilla linkeillä
Jos haluat pitää Bedrockin alkuperäisen hakemistorakenteen sellaisenaan, projektin juureen (/data/wordpress/) on luotava symboliset linkit, jotta Seravon taustajärjestelmä löytää vaaditut vakiopolut:
cd /data/wordpress
# 1. Linkitä web root
ln -s web htdocs
# 2. Linkitä sisältöhakemisto (app -> wp-content)
ln -s app web/wp-content
# 3. Linkitä WordPress-ytimen hakemisto (wp -> wordpress)
ln -s wp web/wordpress
# 4. Varmista, että nginx-määrityshakemisto on olemassa
mkdir -p nginx
Näiden komentojen jälkeen hakemistorakenne vastaa Seravon vaatimuksia:
/data/wordpress
├── web/
│ ├── app/ # Alkuperäinen Bedrock app
│ ├── wp/ # Alkuperäinen Bedrock core
│ ├── wp-content -> app/ # Vastaa polkua /htdocs/wp-content/
│ └── wordpress -> wp/ # Vastaa polkua /htdocs/wordpress/
├── htdocs -> web/ # Vastaa polkua /htdocs/ (Web root)
└── nginx/ # nginx-konfiguraatiot
Tärkeää: Älä määritä tietokantatunnuksia .env-tiedostoon
Seravon palvelinympäristö asettaa tietokantatunnukset (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST) automaattisesti järjestelmän ympäristömuuttujiksi.
Jätä nämä kentät tyhjiksi tai kokonaan pois tuotannon .env-tiedostosta, jotta Bedrock lukee ne suoraan palvelinympäristöstä (getenv()). Mikäli tunnukset kovakoodataan .env-tiedostoon käsin, sivuston tietokantayhteys voi lakata toimimasta.
Julkaisutyökalut (Deployer, Capistrano, GitHub Actions)
Jos käytät julkaisutyökalua, joka kloonaa jokaisen version omaan julkaisuhakemistoonsa (releases/<aikaleima>/) ja aktivoi uuden version symbolisella linkillä, julkaisuputken on varmistettava, että Seravon ajoympäristön odottamat vakiopolut säilyvät ehjinä.
Sivuston valvonta, nginx-reititys ja ylläpitoautomaatiot edellyttävät seuraavien polkujen olemassaoloa:
/data/wordpress//data/wordpress/htdocs/Huom:
wp-config.php-tiedoston on oltava noudettavissa suoraan tästä polusta.
/data/wordpress/htdocs/wordpress//data/wordpress/htdocs/wp-content//data/wordpress/nginx/
Hakemistorakenne julkaisutyökalujen kanssa
Toimiva ja turvallinen rakenne perustuu siihen, että pysyvät tiedot (kuten käyttäjien lataukset, asetustiedosto ja palvelinmääritykset) pidetään shared-hakemistossa, ja julkinen web root (htdocs) linkitetään aktiiviseen versioon:
/data/wordpress
├── releases/
│ ├── 20261110090000/
│ └── 20261111120000/
│ ├── web/
│ │ ├── index.php
│ │ ├── wp-config.php -> /data/wordpress/shared/wp-config.php
│ │ ├── wordpress/
│ │ └── wp-content/
│ │ ├── plugins/
│ │ ├── themes/
│ │ └── uploads -> /data/wordpress/shared/uploads/
│ └── ...
├── current -> releases/20261111120000/
├── htdocs -> current/web/
├── nginx/
│ └── custom.conf
└── shared/
├── wp-config.php
└── uploads/
Huomioitavaa julkaisuputkea rakennettaessa:
htdocs-linkitys: Seravon nginx on konfiguroitu tarjoilemaan sivusto aina polusta/data/wordpress/htdocs/. Yleisin tapa on luoda symbolinen linkkihtdocs -> current/web/(taicurrent/htdocs/), jolloin web root vaihtuu välittömästi uuteen versioon ilman käyttökatkoa.wp-config.php: Tiedoston on löydyttävä suoraanhtdocs-hakemiston juuresta. Yleensä se pidetäänshared-hakemistossa ja linkitetään jokaisen uuden julkaisun yhteydessä automaattisesti osaksi aktiivista pakettia.nginx-määritykset (
/data/wordpress/nginx/): Palvelin lukee nginx-säännöt suoraan tästä polusta. Jos haluat versionhallita omia*.conf-sääntöjä projektirepositoriossa, tee julkaisuskriptiin vaihe, joka päivittää tai linkittää tiedostot hakemistoon/data/wordpress/nginx/ja ajaa komennonwp-restart-nginx.Mediakirjasto (
uploads/): Varmista, että uuden julkaisunwp-content/uploads/on aina symbolinen linkki pysyvään jaettuun hakemistoon (shared/uploads/), jotta käyttäjien ja ylläpidon palvelimelle lataamat kuvat eivät katoa uuden koodiversion myötä.
Git-versionhallinta palvelimella
Git-repositorio alustetaan aina suoraan polkuun /data/wordpress/.
Kun koodia viedään palvelimelle Gitin kautta tai Seravo tekee ylläpitotöitä, järjestelmä toimii suoraan Git-repositorion ehdoilla eikä ylikirjoita hallinnoitua koodia..
Katso myös
Seravon standardoitu hakemistorakenne yhdistää modernin Composer- ja Git-kehityksen sekä palvelintason optimoidun automaation. Mikäli sinulla on kysyttävää projektipohjan mukauttamisesta tai CI/CD-julkaisuista, Seravon asiantuntijat auttavat osoitteessa [email protected].
