# Vietnes vai lietojumprogrammas publicēšana

Jūsu VPS Pro apkalpo jūsu vietnes un lietojumprogrammas to domēna vārdā, pa HTTP un HTTPS. Apmeklētāji nonāk jūsu servera portos **80** un **443**, jūsu servera nosaukumā; HTTPS šifrēšana darbojas no gala līdz galam, līdz pat jūsu serverim, kur atrodas jūsu sertifikāts.

## 1. Domēna novirzīšana uz jūsu serveri

Tur, kur tiek pārvaldīta jūsu domēna DNS zona, izveidojiet divus ierakstus sava servera nosaukumam ar adresēm, kas redzamas tā kartītē, jūsu klientu zonas sadaļā **VPS**:

| Tips   | Nosaukums                     | Vērtība                       |
| ------ | ----------------------------- | ----------------------------- |
| `A`    | `app` (vai `@` pašam domēnam) | jūsu kartītes **IPv4 adrese** |
| `AAAA` | `app` (vai `@`)               | jūsu kartītes **IPv6 adrese** |

Nosaukums zem `vps.simafri.cloud` jau darbojas: nekas nav jāizveido.

Ja jūsu domēna DNS zonu pārvalda Simafri, šos ierakstus jūsu vietā izveido mūsu komanda: rakstiet mums. Pirms jau publicētas vietnes pārslēgšanas lūdziet mums arī samazināt ieraksta dzīves ilgumu (TTL): tad pārslēgšana izplatās dažu minūšu laikā.

Lai pārbaudītu no sava datora:

```
dig +short A app.mana-firma.lv

dig +short AAAA app.mana-firma.lv
```

## 2. Tīmekļa servera instalēšana

Jūsu tīmekļa serveris klausās portā **80** HTTP vajadzībām un portā **443** HTTPS vajadzībām. Divas izplatītas izvēles:

* **Caddy**, kas pats iegūst un atjauno jūsu HTTPS sertifikātu;
* **Nginx** vai **Apache** ar **Certbot** sertifikātam.

### Ar Caddy

```
apt install caddy
```

Pēc tam failā `/etc/caddy/Caddyfile` statiskai vietnei:

```
app.mana-firma.lv {

    root * /var/www/app

    file_server

}
```

vai lietojumprogrammai, kas klausās portā 3000:

```
app.mana-firma.lv {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy`, un jūsu vietne atbild pa HTTPS: Caddy ir ieguvis sertifikātu un pats to atjaunos.

### Ar Nginx un Certbot

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

Izveidojiet vietni failā `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.mana-firma.lv;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Aktivizējiet to un pēc tam pieprasiet sertifikātu:

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

nginx -t && systemctl reload nginx

certbot --nginx -d app.mana-firma.lv
```

Certbot uzstāda Let's Encrypt sertifikātu, pievieno klausīšanos portā 443 un ieplāno tā automātisku atjaunošanu. `certbot renew --dry-run` pārbauda, vai atjaunošana ir gatava.

## 3. Lietojumprogrammas nepārtraukta darbība

Node.js, Python, Go vai Java lietojumprogrammu, kas darbojas nepārtraukti, uztic **systemd**: tā startē kopā ar serveri un pati restartējas, ja apstājas. Piemērs failā `/etc/systemd/system/app.service`:

```
[Unit]

Description=Mana lietojumprogramma

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    # sekot tās žurnāliem
```

To pašu lomu pilda PM2 Node.js vajadzībām, Gunicorn vai Uvicorn Python vajadzībām vai Docker Compose, ja dodat tiem priekšroku.

## 4. Jūsu datubāze

PostgreSQL, MySQL, MariaDB, Redis vai MongoDB tiek instalētas jūsu serverī ar pakotņu pārvaldnieku vai, lai iegūtu jaunāko versiju, no izstrādātāja oficiālā repozitorija:

```
apt install postgresql
```

Lai jūsu datubāze klausās `localhost`: jūsu lietojumprogramma to sasniedz turpat serverī. Lai to administrētu no sava datora, izmantojiet SSH tuneli:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.mana-firma.lv
```

Tad jūsu rīks (DBeaver, pgAdmin, TablePlus) pieslēdzas `localhost:5432`.

## Vairāku domēnu apkalpošana

Jūsu serveris atbild ar savu nosaukumu, kas noteikts pasūtījuma brīdī. Lai tajā pašā VPS Pro apkalpotu citu domēnu vai citu apakšdomēnu, rakstiet atbalsta komandai, norādot pievienojamos nosaukumus: mūsu komanda tos pieslēdz jūsu serverim, pēc tam jūs izveidojat to DNS ierakstus kā 1. solī un pievienojat to bloku savam tīmekļa serverim.

## Biežāk uzdotie jautājumi

### Mana vietne rāda sertifikāta kļūdu.

Pārbaudiet secīgi: jūsu ieraksti `A` un `AAAA` norāda uz jūsu kartītes adresēm (`dig`), jūsu tīmekļa serveris klausās portos 80 un 443 (`ss -tlnp`), un sertifikāts aptver šo nosaukumu (`certbot certificates`). Sertifikātu var iegūt, tiklīdz nosaukums norāda uz jūsu serveri: pēc DNS izplatīšanās palaidiet Certbot vēlreiz vai pārlādējiet Caddy.

### Mana vietne neatbild vispār.

Serverī `curl -I http://localhost` parāda, vai jūsu tīmekļa serveris atbild. `systemctl status nginx` (vai `caddy`, vai jūsu pakalpojums) un tā žurnāli pasaka, kāpēc tas apstājies. Aprakstiet atbalsta komandai, ko novērojat: Visaptverošais atbalsts diagnosticē kopā ar jums.

### Vai varu instalēt WordPress, Laravel vai Symfony?

Jā: instalējiet PHP-FPM, savu datubāzi un tīmekļa serveri, pēc tam savu lietojumprogrammu, tāpat kā jebkurā Linux serverī. Visaptverošais atbalsts norāda jūsu projektam piemērotos iestatījumus, soli pa solim.
