# Objava spletišča ali aplikacije

Vaš VPS Pro streže vaša spletišča in aplikacije na njihovem domenskem imenu, prek HTTP in HTTPS. Obiskovalci pridejo na vrata **80** in **443** vašega strežnika, pod imenom vašega strežnika; šifriranje HTTPS poteka od konca do konca, vse do vašega strežnika, kjer je vaš certifikat.

## 1. Usmeritev domene na vaš strežnik

Tam, kjer upravljate cono DNS svoje domene, ustvarite dva zapisa za ime svojega strežnika, z naslovoma, prikazanima na njegovi kartici v razdelku **VPS** vašega uporabniškega okolja:

| Vrsta  | Ime                            | Vrednost                  |
| ------ | ------------------------------ | ------------------------- |
| `A`    | `app` (ali `@` za samo domeno) | **Naslov IPv4** s kartice |
| `AAAA` | `app` (ali `@`)                | **Naslov IPv6** s kartice |

Ime pod `vps.simafri.cloud` že deluje: ničesar ni treba ustvariti.

Če cono DNS vaše domene upravlja Simafri, te zapise za vas nastavi naša ekipa: pišite nam. Preden preklopite spletišče, ki je že na spletu, nas prosite tudi, da znižamo življenjsko dobo (TTL) zapisa: preklop se tedaj razširi v nekaj minutah.

Za preverjanje z vašega računalnika:

```
dig +short A app.moje-podjetje.si

dig +short AAAA app.moje-podjetje.si
```

## 2. Namestitev spletnega strežnika

Vaš spletni strežnik posluša na vratih **80** za HTTP in na vratih **443** za HTTPS. Dve pogosti izbiri:

* **Caddy**, ki sam pridobi in obnavlja vaš certifikat HTTPS;
* **Nginx** ali **Apache**, s **Certbot** za certifikat.

### S Caddy

```
apt install caddy
```

Nato v `/etc/caddy/Caddyfile` za statično spletišče:

```
app.moje-podjetje.si {

    root * /var/www/app

    file_server

}
```

ali za aplikacijo, ki posluša na vratih 3000:

```
app.moje-podjetje.si {

    reverse_proxy 127.0.0.1:3000

}
```

`systemctl reload caddy` in vaše spletišče se odziva prek HTTPS: Caddy je pridobil certifikat in ga bo sam obnavljal.

### Z Nginx in Certbot

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

Spletišče ustvarite v `/etc/nginx/sites-available/app`:

```
server {

    listen 80;

    listen [::]:80;

    server_name app.moje-podjetje.si;



    location / {

        proxy_pass http://127.0.0.1:3000;

        proxy_set_header Host $host;

        proxy_set_header X-Forwarded-Proto $scheme;

    }

}
```

Aktivirajte ga in nato zahtevajte certifikat:

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

nginx -t && systemctl reload nginx

certbot --nginx -d app.moje-podjetje.si
```

Certbot namesti certifikat Let's Encrypt, doda poslušanje na vratih 443 in načrtuje njegovo samodejno obnavljanje. `certbot renew --dry-run` preveri, ali je obnavljanje pripravljeno.

## 3. Neprekinjeno delovanje aplikacije

Aplikacijo Node.js, Python, Go ali Java, ki teče neprekinjeno, zaupajte **systemd**: zažene se s strežnikom in se sama znova zažene, če se ustavi. Primer v `/etc/systemd/system/app.service`:

```
[Unit]

Description=Moja aplikacija

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    # spremljanje njenih dnevnikov
```

PM2 za Node.js, Gunicorn ali Uvicorn za Python ali Docker Compose opravljajo isto vlogo, če jih imate raje.

## 4. Vaša podatkovna baza

PostgreSQL, MySQL, MariaDB, Redis ali MongoDB namestite na strežnik z upraviteljem paketov ali iz uradnega repozitorija izdajatelja za najnovejšo različico:

```
apt install postgresql
```

Naj vaša baza posluša na `localhost`: vaša aplikacija jo doseže na samem strežniku. Za upravljanje z vašega računalnika uporabite tunel SSH:

```
ssh -p 22101 -L 5432:localhost:5432 root@app.moje-podjetje.si
```

Vaše orodje (DBeaver, pgAdmin, TablePlus) se nato poveže na `localhost:5432`.

## Streženje več domen

Vaš strežnik se odziva pod svojim imenom, določenim ob naročilu. Za streženje druge domene ali druge poddomene na istem VPS Pro pišite podpori in navedite imena, ki jih želite dodati: naša ekipa jih priključi na vaš strežnik, nato pa ustvarite njihove zapise DNS kot v 1. koraku in dodate njihov blok v svoj spletni strežnik.

## Pogosta vprašanja

### Moje spletišče prikazuje napako certifikata.

Preverite po vrsti: vaša zapisa `A` in `AAAA` kažeta na naslova s kartice (`dig`), vaš spletni strežnik posluša na vratih 80 in 443 (`ss -tlnp`) in certifikat res pokriva to ime (`certbot certificates`). Certifikat se pridobi, ko ime kaže na vaš strežnik: po razširitvi DNS znova zaženite Certbot ali znova naložite Caddy.

### Moje spletišče se sploh ne odziva.

Na strežniku `curl -I http://localhost` pokaže, ali se vaš spletni strežnik odziva. `systemctl status nginx` (ali `caddy` ali vaša storitev) in njegovi dnevniki povedo, zakaj se je ustavil. Opišite podpori, kaj opažate: Celovita podpora z vami postavi diagnozo.

### Ali lahko namestim WordPress, Laravel ali Symfony?

Da: namestite PHP-FPM, svojo podatkovno bazo in spletni strežnik, nato svojo aplikacijo, kot na katerem koli strežniku Linux. Celovita podpora vam korak za korakom pove nastavitve, prilagojene vašemu projektu.
