# Svetainės ar programos paleidimas internete

Jūsų VPS Pro pateikia jūsų svetaines ir programas jų domeno vardu, per HTTP ir HTTPS. Lankytojai pasiekia jūsų serverio prievadus **80** ir **443** jūsų serverio vardu; HTTPS šifravimas veikia nuo pradžios iki galo, iki pat jūsų serverio, kuriame yra jūsų sertifikatas.

## 1. Domeno nukreipimas į jūsų serverį

Ten, kur valdoma jūsų domeno DNS zona, sukurkite du įrašus savo serverio vardui, naudodami adresus, rodomus jo kortelėje, jūsų klientų srities skiltyje **VPS**:

| Tipas  | Vardas                          | Reikšmė                        |
| ------ | ------------------------------- | ------------------------------ |
| `A`    | `app` (arba `@` pačiam domenui) | jūsų kortelės **IPv4 adresas** |
| `AAAA` | `app` (arba `@`)                | jūsų kortelės **IPv6 adresas** |

Vardas po `vps.simafri.cloud` jau veikia: nieko kurti nereikia.

Kai jūsų domeno DNS zoną valdo Simafri, šiuos įrašus už jus sukuria mūsų komanda: parašykite mums. Prieš perjungdami jau veikiančią svetainę, taip pat paprašykite mūsų sumažinti įrašo galiojimo laiką (TTL): tada perjungimas pasklinda per kelias minutes.

Norėdami patikrinti iš savo kompiuterio:

```
dig +short A app.mano-imone.lt

dig +short AAAA app.mano-imone.lt
```

## 2. Žiniatinklio serverio įdiegimas

Jūsų žiniatinklio serveris klausosi prievado **80** HTTP ryšiams ir prievado **443** HTTPS ryšiams. Du dažni pasirinkimai:

* **Caddy**, kuris pats gauna ir atnaujina jūsų HTTPS sertifikatą;
* **Nginx** arba **Apache** su **Certbot** sertifikatui.

### Su Caddy

```
apt install caddy
```

Tada faile `/etc/caddy/Caddyfile` statinei svetainei:

```
app.mano-imone.lt {

    root * /var/www/app

    file_server

}
```

arba programai, kuri klausosi prievado 3000:

```
app.mano-imone.lt {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy`, ir jūsų svetainė atsako per HTTPS: Caddy gavo sertifikatą ir pats jį atnaujins.

### Su Nginx ir Certbot

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

Sukurkite svetainę faile `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.mano-imone.lt;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Įjunkite ją, tada paprašykite sertifikato:

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

nginx -t && systemctl reload nginx

certbot --nginx -d app.mano-imone.lt
```

Certbot įdiegia Let's Encrypt sertifikatą, prideda klausymąsi prievade 443 ir suplanuoja automatinį jo atnaujinimą. `certbot renew --dry-run` patikrina, ar atnaujinimas paruoštas.

## 3. Programos veikimo palaikymas

Nuolat veikianti Node.js, Python, Go ar Java programa patikima **systemd**: ji pasileidžia kartu su serveriu ir pati persikrauna, jei sustoja. Pavyzdys, faile `/etc/systemd/system/app.service`:

```
[Unit]

Description=Mano programa

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    # sekti jos žurnalus
```

PM2 Node.js programoms, Gunicorn ar Uvicorn Python programoms arba Docker Compose atlieka tą patį vaidmenį, jei jums jie labiau patinka.

## 4. Jūsų duomenų bazė

PostgreSQL, MySQL, MariaDB, Redis ar MongoDB įdiegiamos jūsų serveryje paketų tvarkykle arba, norint naujausios versijos, iš oficialios gamintojo saugyklos:

```
apt install postgresql
```

Palikite savo duomenų bazę klausytis `localhost`: jūsų programa ją pasiekia tame pačiame serveryje. Norėdami ją administruoti iš savo kompiuterio, naudokite SSH tunelį:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.mano-imone.lt
```

Tada jūsų įrankis (DBeaver, pgAdmin, TablePlus) jungiasi prie `localhost:5432`.

## Kelių domenų aptarnavimas

Jūsų serveris atsako savo vardu, nustatytu užsakant. Norėdami tame pačiame VPS Pro aptarnauti kitą domeną ar subdomeną, parašykite pagalbos komandai, nurodydami pridedamus vardus: mūsų komanda juos prijungia prie jūsų serverio, tada jūs sukuriate jų DNS įrašus kaip 1 žingsnyje ir pridedate jų bloką į savo žiniatinklio serverį.

## Dažniausiai užduodami klausimai

### Mano svetainė rodo sertifikato klaidą.

Patikrinkite eilės tvarka: jūsų įrašai `A` ir `AAAA` nurodo jūsų kortelės adresus (`dig`), jūsų žiniatinklio serveris klausosi prievadų 80 ir 443 (`ss -tlnp`), o sertifikatas tikrai apima šį vardą (`certbot certificates`). Sertifikatas gaunamas, kai vardas jau nurodo jūsų serverį: pasibaigus DNS sklaidai, iš naujo paleiskite Certbot arba perkraukite Caddy.

### Mano svetainė visai neatsako.

Serveryje `curl -I http://localhost` parodo, ar jūsų žiniatinklio serveris atsako. `systemctl status nginx` (arba `caddy`, arba jūsų paslauga) ir jo žurnalai pasako, kodėl jis sustojo. Aprašykite pagalbos komandai, ką pastebite: Visapusiška pagalba atliks diagnostiką kartu su jumis.

### Ar galiu įdiegti WordPress, Laravel ar Symfony?

Taip: įdiekite PHP-FPM, savo duomenų bazę ir žiniatinklio serverį, tada savo programą, kaip bet kuriame Linux serveryje. Visapusiška pagalba nurodys jūsų projektui tinkamus nustatymus, žingsnis po žingsnio.
