# Sivuston tai sovelluksen julkaiseminen

VPS Pro -palvelimesi tarjoilee sivustosi ja sovelluksesi niiden verkkotunnuksilla HTTP- ja HTTPS-yhteyksillä. Kävijät saapuvat palvelimesi portteihin **80** ja **443** palvelimesi nimellä; HTTPS-salaus ulottuu päästä päähän palvelimeesi asti, jossa varmenteesi sijaitsee.

## 1. Verkkotunnuksen osoittaminen palvelimeesi

Luo siellä, missä verkkotunnuksesi DNS-vyöhykettä hallitaan, kaksi tietuetta palvelimesi nimelle. Käytä osoitteita, jotka näkyvät palvelimen kortissa asiakasalueesi osiossa **VPS**:

| Tyyppi | Nimi                                   | Arvo                              |
| ------ | -------------------------------------- | --------------------------------- |
| `A`    | `app` (tai `@` itse verkkotunnukselle) | kortissasi näkyvä **IPv4-osoite** |
| `AAAA` | `app` (tai `@`)                        | kortissasi näkyvä **IPv6-osoite** |

`vps.simafri.cloud`-verkkotunnuksen alainen nimi toimii jo: mitään ei tarvitse luoda.

Kun verkkotunnuksesi DNS-vyöhykettä hallinnoi Simafri, tiimimme lisää nämä tietueet puolestasi: kirjoita meille. Ennen kuin siirrät jo verkossa olevan sivuston, pyydä meitä myös lyhentämään tietueen elinaikaa (TTL): siirto leviää silloin muutamassa minuutissa.

Tarkistus tietokoneeltasi:

```
dig +short A app.yrityksesi.fi

dig +short AAAA app.yrityksesi.fi
```

## 2. Verkkopalvelimen asentaminen

Verkkopalvelimesi kuuntelee porttia **80** HTTP<!-- -->:lle<!-- --> ja porttia **443** HTTPS<!-- -->:lle<!-- -->. Kaksi yleistä vaihtoehtoa:

* **Caddy**, joka hankkii ja uusii HTTPS-varmenteesi itse;
* **Nginx** tai **Apache** ja varmenteelle **Certbot**.

### Caddyllä

```
apt install caddy
```

Sitten tiedostoon `/etc/caddy/Caddyfile` staattista sivustoa varten:

```
app.yrityksesi.fi {

    root * /var/www/app

    file_server

}
```

tai porttia 3000 kuuntelevaa sovellusta varten:

```
app.yrityksesi.fi {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy`, ja sivustosi vastaa HTTPS<!-- -->:ll<!-- -->ä: Caddy on hankkinut varmenteen ja uusii sen itse.

### Nginxillä ja Certbotilla

```
apt install nginx certbot python3-certbot-nginx
```

Luo sivusto tiedostoon `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.yrityksesi.fi;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Ota se käyttöön ja pyydä sitten varmenne:

```
ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/

nginx -t && systemctl reload nginx

certbot --nginx -d app.yrityksesi.fi
```

Certbot asentaa Let's Encrypt -varmenteen, lisää kuuntelun porttiin 443 ja ajastaa sen automaattisen uusimisen. `certbot renew --dry-run` tarkistaa, että uusiminen on valmiina.

## 3. Sovelluksen pitäminen käynnissä

Jatkuvasti käynnissä oleva Node.js-, Python-, Go- tai Java-sovellus annetaan **systemd**:n<!-- --> hoidettavaksi: se käynnistyy palvelimen mukana ja käynnistyy itsestään uudelleen, jos se pysähtyy. Esimerkki tiedostossa `/etc/systemd/system/app.service`:

```
[Unit]

Description=Sovellukseni

After=network.target



[Service]

WorkingDirectory=/srv/app

ExecStart=/usr/bin/node server.js

Restart=always

Environment=NODE_ENV=production

User=www-data



[Install]

WantedBy=multi-user.target
```

```
systemctl daemon-reload

systemctl enable --now app

journalctl -u app -f    # seuraa sen lokeja
```

PM2 Node.js<!-- -->:lle<!-- -->, Gunicorn tai Uvicorn Pythonille tai Docker Compose hoitavat saman tehtävän, jos pidät niistä enemmän.

## 4. Tietokantasi

PostgreSQL, MySQL, MariaDB, Redis tai MongoDB asennetaan palvelimellesi paketinhallinnalla tai, uusimman version saamiseksi, julkaisijan virallisesta pakettivarastosta:

```
apt install postgresql
```

Pidä tietokantasi kuuntelemassa osoitetta `localhost`: sovelluksesi tavoittaa sen samalla palvelimella. Hallitaksesi sitä tietokoneeltasi käytä SSH-tunnelia:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.yrityksesi.fi
```

Työkalusi (DBeaver, pgAdmin, TablePlus) muodostaa silloin yhteyden osoitteeseen `localhost:5432`.

## Useiden verkkotunnusten palveleminen

Palvelimesi vastaa nimellään, joka määritettiin tilattaessa. Jos haluat palvella toista verkkotunnusta tai aliverkkotunnusta samalla VPS Pro -palvelimella, kirjoita tukeen ja kerro lisättävät nimet: tiimimme kytkee ne palvelimeesi, minkä jälkeen luot niiden DNS-tietueet kuten vaiheessa 1 ja lisäät niiden lohkon verkkopalvelimeesi.

## Usein kysytyt kysymykset

### Sivustoni näyttää varmennevirheen.

Tarkista järjestyksessä: `A`- ja `AAAA`-tietueesi osoittavat kortissasi näkyviin osoitteisiin (`dig`), verkkopalvelimesi kuuntelee portteja 80 ja 443 (`ss -tlnp`), ja varmenne kattaa tämän nimen (`certbot certificates`). Varmenne saadaan, kun nimi osoittaa palvelimeesi: aja Certbot uudelleen tai lataa Caddy uudelleen, kun DNS-muutos on levinnyt.

### Sivustoni ei vastaa lainkaan.

Palvelimella `curl -I http://localhost` näyttää, vastaako verkkopalvelimesi. `systemctl status nginx` (tai `caddy` tai oma palvelusi) ja sen lokit kertovat, miksi se pysähtyi. Kuvaile havaintosi tuelle: Kokonaistuki tekee diagnoosin kanssasi.

### Voinko asentaa WordPressin, Laravelin tai Symfonyn?

Kyllä: asenna PHP-FPM, tietokantasi ja verkkopalvelimesi ja sitten sovelluksesi, kuten millä tahansa Linux-palvelimella. Kokonaistuki kertoo projektiisi sopivat asetukset vaihe vaiheelta.
