Käytännön opas / Ensimmäinen verkkosivusto

Ubuntu VPS:n käyttöönotto ensimmäistä sivustoa varten

Julkaise ensimmäinen staattinen sivusto uudella Ubuntu 24.04 -palvelimella. Ohje etenee varmennetusta SSH-yhteydestä ylläpitotunnukseen, Nginxiin ja HTTPS:ään. Se on tarkoitettu tyhjälle harjoituspalvelimelle, ei olemassa olevan tuotantokoneen asetusten korvaamiseen.

· Päivitetty · Lukuaika noin 4 min

Tämän oppaan sisältö

Ennen aloittamista

Tarvitset uuden Ubuntu 24.04 VPS:n, julkisen IPv4-osoitteen, palveluntarjoajan luotetun palautuskonsolin ja hallitsemasi verkkotunnuksen. Esimerkkien 203.0.113.10 ja app.example.com on korvattava omilla tiedoilla. Kirjaudu aluksi levykuvan ylläpitokäyttäjänä, tässä ubuntu; vaihda nimi kaikkialle, jos tarjoaja käyttää muuta.

Paikalliset komennot suoritetaan oman Linux-, macOS- tai WSL-koneen Bashissa, palvelinkomennot SSH-istunnossa. Pidä toimiva istunto auki uuden pääsyn testauksen ajan. Jos tarvitset vain resurssien valintaa, aloita Ubuntu VPS:n suunnittelusta.

Luo avain ennen palvelimen käyttöönottoa

Aja omalla tietokoneella. Varmista, ettei ~/.ssh/ubuntu_vps ole jo olemassa, ja käytä uutta nimeä tarvittaessa kaikissa komennoissa. Aseta yksityiselle avaimelle salasana. Liitä vain .pub-tiedoston sisältö uuden koneen SSH-avainkenttään luontivaiheessa.

mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pub

Yksityinen avain ei kuulu palvelupaneeliin tai sähköpostiin. Tämä ohje olettaa, että avain lisättiin uutta konetta luotaessa; jo toimivan palvelimen kirjautumisavaimia ei korvata.

Vahvista koneen host key

Aja ensin seuraava komento juuri luomasi koneen luotetussa palveluntarjoajan konsolissa. Se näyttää vieraskoneen julkisen Ed25519-palvelinavaimen sormenjäljen.

sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

Aja sitten SSH-komento omalla tietokoneella ja vertaa näytettyä avaintyyppiä ja sormenjälkeä konsolin tietoihin. Hyväksy vain täsmäävä tunniste.

ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10

Jos tunniste poikkeaa tai konsoli ei ole luotettavasti oikean koneen, keskeytä ja selvitä syy. Palvelinavain on eri asia kuin oma kirjautumisavaimesi.

Luo erillinen ylläpitotunnus

Tarkista palvelimella getent passwd deploy. Ohjeen deploy on tarkoitus luoda uutena: jos tunnus jo on olemassa, älä korvaa sen avaintiedostoa. Valitse toinen nimi ja muuta kaikki polut ja komennot vastaavasti.

Kopioi julkinen avain omalta tietokoneelta palvelimelle seuraavasti. Yksityistä avainta ei siirretä.

scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pub

Suorita seuraava lohko alkuperäisessä ubuntu-istunnossa. Tarkista järjestelmä ja tila, päivitä paketit, luo deploy vahvalla salasanalla ja anna sille sudo-oikeudet. Komentolohko asentaa avaimen uuden tunnuksen kotihakemistoon oikeilla omistajilla ja käyttöoikeuksilla.

cat /etc/os-release
free -h
df -h /
sudo apt update
sudo apt upgrade
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
sudo install -m 600 -o deploy -g deploy ~/ubuntu-vps-admin.pub /home/deploy/.ssh/authorized_keys

Avaa omalla tietokoneella toinen terminaali ja uusi yhteys deploy-tunnuksella.

ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10

Varmista uudessa deploy-istunnossa sudo-oikeus. Tulosteen tulee olla root; sudo voi pyytää juuri asetettua deploy-salasanaa.

sudo whoami

Jatka uudessa deploy-istunnossa vasta, kun molemmat tarkistukset onnistuvat. Pidä alkuperäinen pääsy ja palautuskonsoli käytettävissä.

Asenna Nginx ja avaa vain tarvittavat yhteydet

Suorita deploy-istunnossa:

sudo apt install nginx
sudo systemctl enable --now nginx

Palveluntarjoajan verkkotasolla salli SSH todelliseen porttiinsa omista ylläpito-osoitteista sekä TCP 80 ja 443 sivuston kävijöille. Seuraava UFW-esimerkki koskee uutta, UFW:n kanssa yhteensopivaa yleistä Ubuntu-levykuvaa. Varmista todellinen SSH-portti ja salli se ennen palomuurin käyttöönottoa.

Oracle Cloudin valmiissa Ubuntu-kuvassa ohita UFW-lohko kokonaan. Säilytä levykuvan iptables-säännöt ja tee vieraskoneen HTTP/HTTPS-muutokset Oraclen dokumentoidulla tavalla; säännöt voivat suojata myös iSCSI-yhteyksiä. Muuta lisäksi OCI security list- tai NSG-tasoa. Älä tyhjennä vanhoja sääntöjä.

sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

Kokeile uutta SSH-kirjautumista asetusten jälkeen. Vanhassa istunnossa toimiva yhteys ei todista, että uusi yhteys sallitaan.

Julkaise oma staattinen sivu

Ennen seuraavaa lohkoa tarkista, ettei /var/www/first-site tai samanniminen Nginx-sivustotiedosto ole käytössä. Keskeytä, jos ne ovat olemassa. Vaihda app.example.com omaan nimeesi. Tässä luodaan erillinen esimerkkisivu ja sitä palveleva Nginx-asetus.

sudo install -d -m 755 /var/www/first-site
printf '%s\n' '<!doctype html><html lang="en"><title>First deployment</title><h1>Ubuntu VPS is serving this page</h1></html>' | sudo tee /var/www/first-site/index.html
sudo tee /etc/nginx/sites-available/first-site >/dev/null <<'EOF'
server {
    listen 80;
    listen [::]:80;
    server_name app.example.com;
    root /var/www/first-site;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}
EOF
sudo ln -s /etc/nginx/sites-available/first-site /etc/nginx/sites-enabled/first-site
sudo nginx -t

Lohkon englanninkielinen otsikko on testitiedoston sisältö. Säilytä lainattu EOF-erotin: se estää shelliä muuttamasta Nginxin $uri-muuttujaa. Vasta kun nginx -t vahvistaa asetusten kelpoisuuden, lataa ne uudelleen.

sudo systemctl reload nginx

Tarkista omalta tietokoneelta sivusto IP-osoitteen kautta, mutta oikealla Host-nimellä:

curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/

Odotettu vastaus sisältää juuri luodun esimerkkisivun otsikon, ei Nginxin oletussivua. Jos oletussivu näkyy, selvitä server_name, käytössä oleva sivusto ja oikea IP ennen jatkoa.

Osoita DNS ja ota HTTPS käyttöön

Aseta verkkotunnuksen A-tietue palvelimen julkiseen IPv4-osoitteeseen. Poista tai korjaa vanha AAAA-tietue, jos IPv6 ei palvele samaa sivustoa. Odota, että nimipalvelu vastaa oikein, ja varmista julkinen portti 80.

Suorita palvelimella. certbot-paketit edellyttävät saatavilla olevaa Universe-pakettilähdettä. Vaihda verkkotunnus ja seuraa Certbotin kehotteita. Uusimisen testiajo tarkistaa varmenteen automaattista uusimista.

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect
sudo nginx -t
sudo certbot renew --dry-run
systemctl list-timers --all certbot.timer

Tarkista ajastimen aktiivisuus; ota se käyttöön, jos se ei ole aktiivinen. HTTP-todennukseen tarvittava portti 80 on pidettävä saavutettavana myös uusimista varten. Seuraa varmenteen vanhenemista.

Tarkista omalta tietokoneelta HTTP-uudelleenohjaus, HTTPS-vastaus ja sivun sisältö. Älä käytä -k-valintaa varmennevirheiden piilottamiseen.

curl -I http://app.example.com/
curl -I https://app.example.com/
curl -fsS https://app.example.com/

Testaa käynnistys ja valmistele palautus

Käynnistä kone uudelleen tässä vaiheessa vain, kun se on vielä harjoituspalvelin. Varmista uusi SSH-kirjautuminen, Nginxin käynnistyminen ja ulkopuolelta toimiva HTTPS. Tallenna ohjelmistoversiot, asetukset ja DNS-tiedot ilman salaisuuksia.

Pienellä näytöllä voit vierittää taulukkoa sivusuunnassa.

OireTarkistettava kohta
SSH aikakatkaistaanTodellinen portti, lähdeosoite ja molempien verkkotasojen säännöt
Publickey-virheKäyttäjätunnus, valittu avain ja uuden tunnuksen oikeudet
Nginxin oletussivuHost-nimi, server_name ja käyttöön otettu sivusto
Varmennetta ei saadaDNS, myös AAAA, julkinen portti 80 ja virheilmoitus
Sivusto ei käynnisty uudelleenPalvelun tila ja Nginxin virheloki

Säilytä palautettava kopio koneen ulkopuolella. Varmuuskopiossa oleva yksityinen TLS-avain vaatii suojauksen, tai suunnittele varmenteen uudelleenluonti. Tämä staattinen esimerkki ei asenna WordPressiä, Node-sovellusta tai tietokantaa; ne tarvitsevat omat käyttöönotto- ja palautusvaiheensa.

Kysymyksiä ja vastauksia

Voiko ohjetta käyttää vanhalla palvelimella?

Ei sellaisenaan. Käyttäjät, avaimet, palomuuri ja Nginx-tiedostot on sovitettava nykyisiin palveluihin ja palautussuunnitelmaan.

Tarvitaanko domain ennen SSH-yhteyttä?

SSH onnistuu IP-osoitteella. Julkisen HTTPS-sivuston varmennevaihe edellyttää tässä ohjeessa hallitsemaasi verkkotunnusta ja toimivaa DNS:ää.

Miksi toimiva SSH-istunto pidetään auki?

Sen avulla voit korjata uuden kirjautumisen ongelmia ennen alkuperäisen pääsyn katkaisemista. Testaa uusi yhteys erikseen.

Komennot on tarkoitettu uudelle Ubuntu 24.04 -koneelle. Tarkista jokaisen vaiheen tulos ennen seuraavaa muutosta.

Seuraavat hyödylliset oppaat