---
title: "Strapi – avoimen koodin headless-sisällönhallintaa"
canonical_url: "https://www.speedzone.fi/blogi/strapi-avoimen-lahdekoodin-headless-sisallonhallintaa/"
post_type: "post"
published: "2022-05-19T15:32:38+00:00"
modified: "2023-07-12T11:51:23+00:00"
author: "Zone Blogi"
featured_image: "https://www.speedzone.fi/static/sites/2/2022/05/strapishrapi-scaled-1.jpeg"
taxonomies:
  category:
    - name: "Tekninen"
      url: "https://www.speedzone.fi/blogi/category/tekninen/"
  post_tag:
    - name: "CMS"
      url: "https://www.speedzone.fi/blogi/tag/cms/"
    - name: "Kehittäjälle"
      url: "https://www.speedzone.fi/blogi/tag/kehittajalle/"
    - name: "Sisällönhallinta"
      url: "https://www.speedzone.fi/blogi/tag/sisallonhallinta/"
    - name: "Strapi"
      url: "https://www.speedzone.fi/blogi/tag/strapi/"
  skills:
    - name: "Asiantuntijalle"
      url: "https://www.speedzone.fi/blogi/skill/asiantuntijalle/"
    - name: "Edistyneille"
      url: "https://www.speedzone.fi/blogi/skill/edistyneille/"
---

# Strapi – avoimen koodin headless-sisällönhallintaa

**Kun puhutaan verkkosivujen sisällönhallintajärjestelmistä, markkinajohtaja on ollut WordPress. Uusien tuulien ja teknologioiden myötä suosituiksi ovat tulleet myös sellaiset avainsanat kuin Node.js ja** ***headless*****. Tässä esittelemme mahdollisuutta käyttää Zonen virtuaalipalvelimen ympäristössä Strapia, joka on johtavia headless-sisällönhallintajärjestelmiä.**

Strapi on erittäin kehittäjäystävällinen ja täysin räätälöitävissä asiakkaan tarpeiden mukaan. Jos Strapi on lukijalle vieras, sovellukseen toimintoihin voi tutustua sen [kotisivulla](https://strapi.io/) ja lukemalla lisää sen [dokumentaatiosta](https://docs.strapi.io/developer-docs/latest/g).

Muutaman minuutin kestoisen katsauksen antaa myös seuraava video:

## **Palvelimen esiasetusten tekeminen**

Strapi toimii hyvin Zonen jo verkkosivujen ylläpitopalvelun ensimmäisessä paketissa. Jos palvelin on olemassa, tulisi ennen sovelluksen asentamista suorittaa muutamat toimenpiteet:

### **1. Aseta SSH-pääsy.**

Strapin asentamisen edellytyksenä on, että SSH-pääsyn tulee olla konfiguroitu.

### **2. Lisää MySQL-käyttäjä ja -tietokanta.**

Vaikka Strapi osaa käyttää myös SQLite-tietokantaa, kannattaa silti lisätä MySQL/MariaDB-tietokanta takaamaan varmuuskopiot ja sovelluksen toimintavarmuuden.

**Huom.!** Säilytä tietokantojen yhteys tiedot turvallisesti sovelluksen asentamiseen asti, koska niitä tarvitaan asennuksia tehtäessä.

### **3. Määrää web-palvelimen mod\_proxy-portti.**

Lisää aliverkkotunnus navigoimalla MyZone -valikossa kohtaan `<mark class="has-inline-color" style="background-color:#eaeced">Webhotelli</mark>` &gt; `<mark class="has-inline-color" style="background-color:#eaeced">Verkkopalvelin</mark>` &gt; `<mark class="has-inline-color" style="background-color:#eaeced">Aliverkkotunnukset</mark>`. Napsauta painiketta `<mark class="has-inline-color" style="background-color:#eaeced">Lisää aliverkkotunnus</mark>`, ja lisäämisen jälkeen aseta `<mark class="has-inline-color" style="background-color:#eaeced">Sovelluksen portti, johon saapuvat pyynnöt ohjataan (mod_proxy)</mark>` -kentälle arvo **1337**. Nimipalvelimen kirjausten levikin mukaan aliverkkotunnus voisi alkaa toimia pian. Mallissa perustimme aliverkkotunnuksen `<mark class="has-inline-color" style="background-color:#eaeced">api.strapiwww.zone.fi</mark>`.

Jäljempänä ohjeissa käytetty virtXXXX tulisi korvata SSH-käyttäjätunnuksella ja dataXX ensimmäisellä hakemistolla, joka näkyy komennolla `<mark class="has-inline-color" style="background-color:#eaeced">pwd</mark>` .

## **Asenna Strapi ja tee sille asetukset**

Asentaaksesi Strapin tulee luoda SSH-yhteys palvelimelle.

Sitten käynnistämme juurihakemistossa (esim. /dataXX/virtXXX) komennon:

```bash
npx create-strapi-app@latest minun-projektiCode language: CSS (css)
```

Vahvistamiseksi tulee vielä näppäillä y ja painaa `<mark class="has-inline-color" style="background-color:#eaeced">Enter</mark>`-näppäintä. Sitten kysytään asetusten tekemisen versiota, sitä varten tulisi valita`<mark class="has-inline-color" style="background-color:#eaeced"> Custom (manual settings)</mark>`. Asennetaan toimiva sovellus, muttei tehdä MySQL/MariaDB-tietokannan asetuksia. Valintojen jälkeen kysytään tietokantojen ja jonkin muun asetuksen tietoja. Tietokannan kohdassa tulisi valita `<mark class="has-inline-color" style="background-color:#eaeced">mysql</mark>` ja seuraaviin kysymyksiin vastattaessa syöttää aikaisemmin luotujen tietokantojen tiedot. Se voisi näyttää suunnilleen seuraavalta:

```bash
? Choose your installation type Custom (manual settings)
? Choose your default database client mysql
? Database name: dXXXXX_strapi
? Host:  dXXXXX.mysql.zonevs.eu
? Port: 3306
? Username: dXXXXX_strapi
? Password: *************************
? Enable SSL connection: Yes

Creating a project with custom database options.
Creating a new Strapi application at /dataXX/virtXXXXX/minun-projekti.
Creating files.Code language: JavaScript (javascript)
```

Kuluu vähän aikaa, kun asetusvelho asentaa tarvittavat paketit ja riippuvuudet. Kun se on vihdoin tehty, tuloksen pitäisi olla suunnilleen seuraava:

```bash
Dependencies installed successfully.

Your application was created at /dataXX/virtXXXXX/minun-projekti.

...
```

Sitten siirry luomaasi sovellushakemistoon

```bash
cd minun-projekti
```

ja aseta sovelluksen URL

```bash
nano config/server.js
```

Tiedostoon on lisättävä aikaisemmin luotu aliverkkotunnus. Lopullinen tiedosto voisi näyttää suunnilleen tällaiselta:

```java
module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  url: 'https://api.strapiwww.zone.fi',
  app: {
    keys: env.array('APP_KEYS'),
  },
});
Code language: JavaScript (javascript)
```

Jotta asianmukainen asetus alkaa myös toimia, sovellus tulee rakentaa uudelleen komennolla

```bash
npm run build
```

Tässä tilassa sovelluksen asetukset on jo tehty ja sovellus voidaan käynnistää monella tavalla. Esimerkiksi:

```bash
#  Normaali käynnistys
npx strapi start

#  Käynnistetään kehitysversiona
npx strapi developCode language: PHP (php)
```

Aloittaaksesi lopullisesti sovelluksen käyttö siirry osoitteeseen `<mark class="has-inline-color" style="background-color:#eaeced">https://api.strapiwww.zone.fi/admin</mark>` ja lisää pääkäyttäjä.

## **Aseta PM2, jotta sovellus toimii jatkuvasti**

Jotta sovellus pystyy toimimaan myös kaatumisen tai palvelimen uudelleenkäynnistämisen jälkeen, tulee asettaa My Zone -valikossa PM2. Jos sovellusta parhaillaan suoritetaan, se tulisi nyt sulkea (konsolissa painettava esim. `<mark class="has-inline-color" style="background-color:#eaeced">Ctrl + c</mark>` )

### **1. Luo PM2-ekosysteemin tiedosto**

Luomme oma projekti -kansioon tiedoston `<mark class="has-inline-color" style="background-color:#eaeced">strapi.config.js</mark>`, jonka sisältö on:

```java
module.exports = {
    apps: [{
        name: "strapi",
        script: "npm",
        args: "start",
        cwd: process.env.HOME + "/minun-projekti",
        max_memory_restart : "256M",
        env: {
            NODE_ENV: "production"
        }
    }]
}
Code language: JavaScript (javascript)
```

### **2. Aseta PM2-sovellus MyZonessa**

Siirry MyZone -valikossa kohtaan `<mark class="has-inline-color" style="background-color:#eaeced">Webhotelli</mark>` &gt; `<mark class="has-inline-color" style="background-color:#eaeced">Verkkopalvelin</mark>` &gt; `<mark class="has-inline-color" style="background-color:#eaeced">PM2 prosessit (Node.js)</mark>` ja napsauta painiketta `<mark class="has-inline-color" style="background-color:#eaeced">Lisää uusi sovellus</mark>`.

Muista täyttää kentät:

**Kenttä**:**Kuvaus**:**nimi**strapi**komentosarja tai PM2 .JSON**my-project/strapi.config.jsMaksimaalista muistinkäyttöä ei tarvitse määrätä, koska se on jo asetettu ekosysteemin tiedostossa. Tallennuksen jälkeen sovelluksen pitäisi alkaa toimia muutamassa minuutissa. Toimivuuden auttavat toteamaan jotkin PM2-komennot.

Komennon tuloksessa pitäisi olla tieto, että Strapin tila (status) on `<mark class="has-inline-color" style="background-color:#eaeced">running</mark>`

```bash
pm2 listCode language: PHP (php)
```

Jos sovellus ei ole alkanut toimia muutamassa minuutissa, vianlokeja näkee komennolla

```bash
pm2 logs
```

## **Tiivistelmä**

Strapi on headless CMS. Tämä tarkoittaa, että ratkaistu on vain tietorakenteiden API-puoli. Käyttäjälle näkyvä visuaalinen verkkosivusto on kehitettävä erikseen. Käyttöliittymien kehittämiseksi nykyään on loputtomasti vaihtoehtoja: Vue.js, React, Angular, Svelte ja paljon muuta. Sen takia asensimmekin Strapin aliverkkotunnukselle `<mark class="has-inline-color" style="background-color:#eaeced">api.strapiwww.zone.fi</mark>`, jotta esimerkiksi pääverkkotunnukselle `<mark class="has-inline-color" style="background-color:#eaeced">strapiwww.zone.fi</mark>` luotu verkkosivusto voi näyttää HTML- ja JavaScript-tiedostoja Apache-web-palvelimen kautta.

Jos olet joutunut lujille jonkin nykyaikaisen ohjelmistokehyksen toimimaan saamisen kanssa Zone-palvelimella ja kaipaisit kyseiselle sovellukselle samanlaisia ohjeita, voit lähettää pyyntösi osoitteeseen tuki@speedzone.fi. Zone keskittyy kehitystoiminnassaan modernien teknologioiden tukeen ja teemme kaikkemme, jotta nykyaikaiset kehitysmenetelmät ja sovellukset toimivat palvelimillamme ongelmitta.
