# Saidi või rakenduse avaldamine

Teie VPS Pro teenindab teie saite ja rakendusi nende domeeninimel, HTTP ja HTTPS kaudu. Külastajad jõuavad teie serveri nime all teie serveri portidele **80** ja **443**; HTTPS-krüpteerimine toimib otsast lõpuni kuni teie serverini, kus asub teie sertifikaat.

## 1. Domeeni suunamine oma serverile

Seal, kus hallatakse teie domeeni DNS-tsooni, looge oma serveri nimele kaks kirjet, kasutades aadresse, mis on kuvatud selle kaardil teie kliendiala jaotises **VPS**:

| Tüüp   | Nimi                               | Väärtus                            |
| ------ | ---------------------------------- | ---------------------------------- |
| `A`    | `app` (või `@` domeeni enda jaoks) | teie kaardil olev **IPv4-aadress** |
| `AAAA` | `app` (või `@`)                    | teie kaardil olev **IPv6-aadress** |

Nimi domeeni `vps.simafri.cloud` all töötab juba: midagi pole vaja luua.

Kui teie domeeni DNS-tsooni haldab Simafri, lisab meie meeskond need kirjed teie eest: kirjutage meile. Enne juba avaldatud saidi ümberlülitamist paluge meil ka kirje eluiga (TTL) vähendada: ümberlülitus levib siis mõne minutiga.

Kontrollimiseks oma arvutist:

```
dig +short A app.minu-firma.ee

dig +short AAAA app.minu-firma.ee
```

## 2. Veebiserveri paigaldamine

Teie veebiserver kuulab HTTP jaoks porti **80** ja HTTPS-i jaoks porti **443**. Kaks levinud valikut:

* **Caddy**, mis hangib ja uuendab teie HTTPS-sertifikaati iseseisvalt;
* **Nginx** või **Apache** koos **Certbotiga** sertifikaadi jaoks.

### Caddyga

```
apt install caddy
```

Seejärel failis `/etc/caddy/Caddyfile` staatilise saidi jaoks:

```
app.minu-firma.ee {

    root * /var/www/app

    file_server

}
```

või rakenduse jaoks, mis kuulab porti 3000:

```
app.minu-firma.ee {

    reverse_proxy 127.0.0.1:3000

}
```

Käivitage `systemctl reload caddy` ja teie sait vastab HTTPS-i kaudu: Caddy on sertifikaadi hankinud ja uuendab seda ise.

### Nginxi ja Certbotiga

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

Looge sait failis `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.minu-firma.ee;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Aktiveerige see ja taotlege seejärel sertifikaat:

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

nginx -t && systemctl reload nginx

certbot --nginx -d app.minu-firma.ee
```

Certbot paigaldab Let's Encrypti sertifikaadi, lisab pordi 443 kuulamise ja ajastab selle automaatse uuendamise. `certbot renew --dry-run` kontrollib, et uuendamine on valmis.

## 3. Rakenduse töös hoidmine

Pidevalt töötava Node.js-, Pythoni-, Go- või Java-rakenduse usaldage **systemd**-le: see käivitub koos serveriga ja taaskäivitub ise, kui see peatub. Näide failis `/etc/systemd/system/app.service`:

```
[Unit]

Description=Minu rakendus

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    # selle logide jälgimine
```

Sama rolli täidavad PM2 Node.js-i jaoks, Gunicorn või Uvicorn Pythoni jaoks või Docker Compose, kui eelistate neid.

## 4. Teie andmebaas

PostgreSQL, MySQL, MariaDB, Redis või MongoDB paigaldatakse teie serverisse paketihalduriga või uusima versiooni saamiseks tootja ametlikust hoidlast:

```
apt install postgresql
```

Hoidke oma andmebaas kuulamas aadressil `localhost`: teie rakendus jõuab selleni samas serveris. Selle haldamiseks oma arvutist kasutage SSH-tunnelit:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.minu-firma.ee
```

Teie tööriist (DBeaver, pgAdmin, TablePlus) ühendub seejärel aadressiga `localhost:5432`.

## Mitme domeeni teenindamine

Teie server vastab oma nime all, mis määrati tellimisel. Teise domeeni või alamdomeeni teenindamiseks samas VPS Pro serveris kirjutage klienditoele ja märkige lisatavad nimed: meie meeskond ühendab need teie serveriga, seejärel loote nende DNS-kirjed nagu 1. sammus ja lisate nende ploki oma veebiserverisse.

## Korduma kippuvad küsimused

### Minu sait näitab sertifikaadi viga.

Kontrollige järjest: teie `A`- ja `AAAA`-kirjed osutavad teie kaardil olevatele aadressidele (`dig`), teie veebiserver kuulab porte 80 ja 443 (`ss -tlnp`) ning sertifikaat katab selle nime (`certbot certificates`). Sertifikaadi saab hankida siis, kui nimi osutab teie serverile: pärast DNS-i levimist käivitage Certbot uuesti või laadige Caddy uuesti.

### Minu sait ei vasta üldse.

Serveris näitab `curl -I http://localhost`, kas teie veebiserver vastab. `systemctl status nginx` (või `caddy` või teie teenus) ja selle logid ütlevad, miks see peatus. Kirjeldage klienditoele, mida täheldate: Terviklik tugi teeb diagnoosi koos teiega.

### Kas saan paigaldada WordPressi, Laraveli või Symfony?

Jah: paigaldage PHP-FPM, oma andmebaas ja veebiserver ning seejärel oma rakendus, nagu igas Linuxi serveris. Terviklik tugi näitab teile teie projektile sobivaid seadistusi samm-sammult.
