Nginx

Lätt för dig att ha flera projekt på samma maskin/VPS och att olika domännamn pekas vidare till till olika processer - dina projekt! :D

Guide hos digitalocean

Som root-användare:

apt-get update
apt-get install sudo

Ge deployer-användaren sudo-rättigheter.

usermod -a -G sudo deployer

Logga ut och logga in igen som användaren deployer.
Installera nginx

sudo -S apt-get install nginx


När det är klart kan du gå till IP-adressen för din VPS/droplet. Om allting gått bra så ser du:

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org. Commercial support is available at nginx.com.

Thank you for using nginx.


Låt oss säga att du har ett elixir/phoenix-projekt som vi kallar för bunko, och att projektet ligger i mappen /var/www/bunko. Du startar servern med t.ex.


Om du vil automatisera detta:

apt-get update
apt-get install sudo

# Ge deployer sudo-rättigheter
# https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-8#step-three-%E2%80%94-root-privileges
echo "Giving user deployer sudo rights"
usermod -a -G sudo deployer

# Ge deployer rättigheten att köra sudo apt-get install nginx utan att behöva ange lösenord, så att vi kan automatisera detta!
# https://superuser.com/questions/869144/why-does-the-system-have-etc-sudoers-d-how-should-i-edit-it
echo "deployer ALL=NOPASSWD: ALL" | (EDITOR="tee -a" visudo -f /etc/sudoers.d/deployer)

# Fortsätt som användaren deployer
sudo su deployer

# yes är ett program som säger svarar "yes" till alla frågor som kommer upp.
yes | sudo -S apt-get install nginx

Kommandon

Några grundläggande nginx-kommandon som är bra att känna till:

Stoppa/Stänga av webbservern: sudo systemctl stop nginx

Starta webbservern: sudo systemctl start nginx

Starta om webbservern (Stop & start): sudo systemctl restart nginx

Ladda om webbservern (Stop & start): sudo systemctl reload nginx


Aktivera att nginx ska startas om servern startar om: sudo systemctl enable nginx

För att testa: sudo shutdown -r now exit

… vänta en stund, och logga sedan in igen efter en stund!

Publicera en hemsida

Om du snabbt vill få upp en hemsida (html, t.ex. renderat med jekyll, eller om du gillar handknacka html-filer.., eller bara vill få upp något snabbt) då kan du lägga filerna i /var/www/html Om du lägger en egen index.html där så kommer den visas när du surfar in på din VPS (D.v.s. skriv in det IP-nummer du har fått i en webbläsare!)

För att kunna visa olika sidor, beroende på vilken domän du använder för att surfa in på din VPS..
… lägg in inställningar (“server block”) i /etc/nginx/sites-available
Lägg sedan in symlänk dig i sites-enabled: /etc/nginx/sites-enabled Exempelvis såhär:
sudo ln -s /etc/nginx/sites-available/finahemsidan /etc/nginx/sites-enabled/finahemsidan

Det är väldigt tacksamt att snabbt och enkelt kunna radera en sida ifrån sites-enabled, utan att förlora alla inställningar.

Här finns inställningar för nginx: /etc/nginx/nginx.conf


Källor:

Mer material:

OSX:

error logs:

Bra att kunna “tail” för att se senaste + cat error.logs grep domännamnet.se -B 2 o.s.v. om lång stacktrace…

Ex på conf:

server {
    listen       80;
    server_name  domainname.php;
    root       /Users/homefolder/code/domainname.php/public;

    access_log  /usr/local/etc/nginx/logs/default.access.log  main;

    location / {
        include   /usr/local/etc/nginx/conf.d/php-fpm;
    }

    location = /info {
        allow   127.0.0.1;
        deny    all;
        rewrite (.*) /.info.php;
    }

    error_page  404     /404.html;
    error_page  403     /403.html;
}

Vem ligger bakom denna kurs?

Victoria Wagman som har arbetat som lärare i webbutveckling, och idag arbetar som programmerare hos 46elks.

Detta material byggs upp lite i taget.