Nginx Raspberry Pihin

24.03.2018
RPi

Nginx (https://nginx.org/) on Web-palvelinohjelma. Tässä jutussa käydään läpi Nginx:n asennus Raspberry Pihin sekä tutustutaan ohjelman toimintaan.

Asennus

Nginx ohjelman asennus onnistuu apt-get komennon avulla, alla olevalla komennolla.

$ sudo apt-get --yes install nginx

Ohjelma luo asennuksen yhteydessä oletussivuston ja käynnistyy asennukseen jälkeen automaattisesti. Asennuksen onnistumisen voi varmistaa selaimella, syöttämällä selaimen osoiteriville Raspberry Piin IP -osoitteen.

Nginx ohjelman sivusto asennuksen jälkeen

Ohjelman yleinen hallinta

Ohjelman voi sammuttaa alla olevalla komennolla.

$ sudo systemctl stop nginx

Ohjelman voi käynnistää alla olevalla komennolla.

$ sudo systemctl start nginx

Ohjelman voi uudelleen käynnistää alla olevalla komennolla.

$ sudo systemctl restart nginx

Ohjelman tilan voi selvittää alla olevalla komennolla.

$ sudo systemctl status nginx

Hakemistorakenne

Asennuksen jälkeen levyltä löytyy alla olevat hakemistot.

/var/www
/var/log/nginx
/etc/nginx

/var/www -hakemisto

Hakemistossa /var/www sijaitsevat sivustot, eli sivustojen html -tiedostot, yms. Sivustojen hakemistot ovat määritelty sivustojen asetustiedostoissa, joten halutessa sivustot voi sijoittaa muualle. Nginx sijoittaa asennuksen yhteydessä luomansa oletussivuston hakemistoon /var/www/html (tämä on sivusto joka aukeaa, kun palvelimeen ottaa yhteyden ohjelman asennuksen jälkeen).

/var/log/nginx -hakemisto

Hakemistossa /var/log/nginx sijaitsevat lokitiedostot. Lokitiedostojen nimet, sijainnit, sisältö, yms. ovat määritetty asetustiedostoissa, joten lokitiedostot voi sijoittaa halutessa muualle. Ohjelman asennuksen jälkeiset perusasetukset ovat sellaiset, että lokihakemistosta löytyy kaksi alla olevaa lokitiedostoa. Lokitiedostoon access.log menevät kaikki kyselyt joita selaimet esittävät palvelimelle, ja lokitiedostoon error.log menee ohjelman toiminnassa tapahtuvat virheet.

/var/log/nginx/access.log
/var/log/nginx/error.log

/etc/nginx -hakemisto

Hakemistosta /etc/nginx löytyy Nginx ohjelman ja sivustojen asetustiedostot. Sivustojen asetustiedostot löytyvät kyseisen hakemiston kahdesta, alla olevasta, alihakemistoista.

/etc/nginx/sites-available
/etc/nginx/sises-enabled

Hakemistosta sites-available (suom. saatavilla olevat sivustot) sijaitsevat sivustojen varsinaiset asetustiedostot (yksi per sivusto). Kun sivusto halutaan aktivoida käyttöön, luodaan sen asetustiedostosta symbolinen linkki sites-enabled (suom. aktivoidut sivustot) hakemistoon.

Asennuksen yhteydessä ohjelma luo oletussivuston. Oletussivusto on sivusto, joka aukeaa kun palvelimeen ottaa yhteyden asennukseen jälkeen. Oletussivuston asetustiedoston nimi on default, joten tiedosto löytyy alla olevista paikoista (joista toinen on vain symbolinen linkki ensimmäiseen).

/etc/nginx/sites-available/default
/etc/nginx/sites-enabled/default

Nopeasti HTML koodin kimppuun

Ohjelmiston asennuksen jälkeen nopeiten sivuja pääsee tekemään kun lähtee muokkaamaan ohjelman asennuksen yhteydessä luomaa oletussivustoa. Kyseisen sivuston asetustiedosto on /etc/nginx/sites-available/default.conf ja sivusto sijaitsee hakemistossa /var/www/html.

Oletussivuston hakemistosta voi poistaa kaikki tiedostot, alla olevalla komennolla, ja aloittaa puhtaalta pöydältä.

$ sudo rm /var/www/html/*

Hakemiston tyhjentämisen jälkeen, hakemistoon voi luoda index.html tiedoston, alla olevalla käskyllä. Tähän tiedostoon voi sijoittaa oman HTML koodinsa, (esimerkki alla).

$ sudo nano /var/www/html/index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Etusivu</title>
  </head>
  <body>
    Tämä on sivustoni etusivu... Tervetuloa...
  </body>
</html> 

Kun yllä olevien vaiheiden jälkeen Raspberry Pihin ottaa yhteyden selaimella, aukeaa selaimeen juuri luotu oma sivu.

Palvelimen sivusto muokkaamisen jälkeen

HTTPS:n käyttöönotto (SSL/TLS)

Oletussivusto toimii asennuksen jälkeen vain HTTP yhteydellä. Testikäyttöön sopivan HTTPS yhteyden voi aktivoida muokkaamalla oletussivuston asetustiedostoa. Alla käsky jolla pääsee muokkaamaan oletussivuston asetustiedostoa.

$ sudo nano /etc/nginx/sites-available/default

Asetustiedostossa on alla olevat rivit, joiden edessä on # -merkki. Nginx jättää kaikki rivit käsittelemättä jotka alkavat kyseisellä merkillä. # -merkki tulee poistaa näiden kolmen rivin edestä.

listen 443 ssl default_server;
listen [::]:443 ssl default_server;

include snippest/snakeoil.conf;

Ensimmäinen rivi (yllä) pyytää Nginxiä tarjoamaan sivuton IPv4:n portista 443, käyttäen SSL protokollaa. Toinen rivi pyytää Nqinxia tarjoamaan sivuston IPv6:n portista 443 käyttäen SSL protokollaa. Kolmas rivi pyytää Nginxiä sisällyttämään tiedoston snippest/snakeoil.conf rivit mukaan asetuksiin. Tiedosto Snakeoil.conf sisältää SSL asetukset (varmenteiden polut, yms.) jossa varmenne on allekirjoitettu itse itsellään.

Asetustiedoston muokkaamisen jälkeen, ohjelman joutuu käynnistämään uudelleen, jotta muutokset astuvat voimaan. Tämä onnistuu alla olevalla komennolla.

$ sudo systemctl restart nginx

Näiden muutos jälkeen sivustoon voi ottaa HTTPS yhteyden, syöttämällä selaimeen Raspberry Piin IP -osoitteen HTTPS etuliitteellä.

Palvelimen sivusto muokkaamisen jälkeen

Koska palvelimen varmenne on allekirjoitettu itse itsellään antavat selaimet turvallisuus varoituksen. Turvallisuus varoituksen voi ohittaa Firefoxissa, painamalla varoituksessa olevaa painiketta “Yksityiskohdat”, sitten “Lisää poikkeus…” painiketta ja lopuksi vielä “Vahvista turvallisuuspoikkeus” painiketta. Microsoft Edge turvallisuus varoituksen ohitus onnistuu painamalla varoitus sivulla olevaa “Lisätiedot” linkkiä, ja tämän jälkeen “Siirry verkko sivulle” linkkiä. Tämän jälkeen sivusto aukeaa.

Palvelimen sivusto muokkaamisen jälkeen

Portin vaihtaminen

Sivuston kuuntelemat portit voi vaihtaa muokkaamalla sivuston asetus tiedostoa. Alla komento oletussivuston asetustiedoston muokkaamiseen.

$ sudo nano /etc/nginx/sites-available/default

Asetustiedostossa on määrritelty kuunneltavat poritit listen ... -käskyillä. Normaalisti HTTP:n portin numero on 80 (IPv4 sekä IPv6) ja HTTPS:n portti numero on 443 (IPv4 sekä IPv6). Tällöin asetustiedostostoa löytyy alla olevat rivit.

listen 80 default_server;
listen [::]:80 default_server;

listen 443 ssl default_server;
listen [::]:443 ssl default_server;

Jos HTTP portin haluaa muuttaa 80:sta 11080:een, ja HTTPS portin 443:sta 11443:een, onnistuu tämä yksinkertaisesti vaihtamalla listen käskyjen portti numerot uusiin.

listen 11080 default_server;
listen [::]:11080 default_server;

listen 11443 ssl default_server;
listen [::]:11443 ssl default_server;

Sivuston asetustiedoston muokkauksen jälkeen ohjelma on käynnistettävä uudelleen, jotta muutokset astuvat voimaan. Alla on komento uudelleen käynnistämiseen.

$ sudo systemctl restart nginx

Tämän jälkeen sivusto on uusien porttien takana.

Palvelimen sivusto muokkaamisen jälkeen

Sivuston siirtäminen toiseen hakemistoon

Sivustojen hakemistot ovat kerrottu sivustojen asetustiedostoissa. Jos sivuston siirtää toiseen hakemistoon on myös sivuston asetustiedosto päivitettävä osoittamaan uuteen hakemistoon.

Jos oletussivuston, joka sijaitsee hakemistossa /var/www/html, haluaa siirtää hakemistoon /var/www/html_nginx, voi sen tehdä alla olevalla komennolla.

$ sudo mv /var/www/html /var/www/html_nginx

Yllä olevan muutoksen jälkeen on oletussivuston asetustiedosto päivitettävä osoittamaan uuteen hakemistoon. Alla komento jolla pääsee muokkaamaan oletussivuston asetustiedostoa.

$ sudo nano /etc/nginx/sites-available/default

Asetustiedostossa on rivi, Root /var/www/html;, joka kertoo sivuston juuri hakemiston (/var/www/html). Kyseisen rivin hakemisto pitää päivittää vastaamaan uutta hakemistoa (/var/www/html_nginx). Muutoksen jälkeen tiedostossa pitäisi olla alla oleva rivi (muutos punaisella).

Root /var/www/html_nginx;

Asetustiedoston muutoksen jälkeen ohjelma on käynnistettävä uudelleen, jotta uudet asetukset astuvat voimaan. Alla on komento uudelleen käynnistämistä varten.

$ sudo systemctl restart nginx;

Ohjelman poisto

Ohjelman voi poistaa pysäyttämällä ensin ohjelman. Tämä tapahtuu alla olevalla käskyllä.

$ sudo systemctl stop nginx

Tämän jälkeen ohjelman voi poistaa. Tämä tapahtuu alla olevalla komennolla.

$ sudo apt-get purge nginx

Asennuksen yhteydessä laitteeseen tulleet lisä paketit voi poistaa, poistamalla kaikki paketit mihin ei ole Nginx:n poiston jälkeen viittauksia. Tämä tapahtuu alla olevalla komennolla.Nginx:n poiston jälkeen viittauksia. Tämä tapahtuu alla olevalla komennolla.

$ sudo apt-get autoremove

Mahdollisesti jäljelle jäävät asetus- ja lokitiedostot sekä tarpeettomat sivustot voi poistaa käsin, (jos jostain syystä eivät poistuneet).

$ sudo rm -r /etc/nginx
$ sudo rm -r /var/log/nginx
$ sudo rm -r /var/www/html