Configurazione di Nginx e Passenger su server Ubuntu 18+

Pubblicato da admin | ultima modifica Novembre 29, 2021

GUIDA DI INSTALLAZIONE

CREAZIONE DI UN UTENTE DEPLOY

Per motivi di sicurezza è una buona pratica utilizzare un utenza diversa da root per gestire le attività di deploy degli applicativi all’interno del server.

Per creare un utente deploy bisogna accedere con l’utenza root ed eseguire i seguenti comandi:

sudo adduser deploy
gpasswd -a deploy sudo

Alla richiesta di inserire una password per l’utente si consiglia di generare una password complessa.

Una volta completata l’installazione uscire dal sistema operativo e rientrare utilizzando l’utenza deploy appena creata.

INSTALLAZIONE DELLE DIPENDENZE DEL SISTEMA

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev libffi-dev

METTERE IN SICUREZZA IL SERVER

Per evitare accessi indesiderati tramite brute force, bisogna almeno impostare un sistema di ban dei tentativi falliti di connessione. Per farlo è consigliata l’installazione di fail2ban.

sudo apt-get install fail2ban

Eventualmente personalizzare la configurazione di default per rendere il sistema più sicuro; per farlo bisogna seguire i seguenti comandi:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

INSTALLARE IL LINGUAGGIO DI PROGRAMMAZIONE RUBY

Per l’installazione di Ruby si consiglia di utilizzare RVM seguendo la guida presente nel sito ufficiale: https://rvm.io.

Eventualmente seguire i seguenti comandi:

gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
curl -sSL https://get.rvm.io | bash -s stable

INSTALLARE NODE.JS

curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh
sudo apt install nodejs

INSTALLARE NGINX

sudo apt-get install nginx

INSTALLARE PM2

npm install -g pm2

CONFIGURARE APPLICATIVI WEB

Dei seguito alcuni verranno presentati alcuni esempi delle principali tipologie di applicativi configurabili nel file /etc/nginx/site-available/default o su altri file nella stessa directory.

Sito web statico

server {
  listen 80;
  server_name example.com; # dominio applicazione
  root /home/deploy/applications/APP_PATH/public; # directory applicazione
  index index.html;
}

ALTRE CONFIGURAZIONI UTILI

CREARE UN UPSTREAM PER GESTIRE DIVERSI APPLICATIVI IN ASCOLTO SULLA PORTA 80

Quando il server deve gestire diverse applicazioni sulla porta 80 la soluzione consiste nel creare diversi proxy che, dato il dominio, eseguono un upstream di applicazioni in ascolto su altre porte.

Se, per esempio, avete una applicazione sulla porta 8001, per girare su di essa tutte le richieste con dominio servername.com basta inserire i segenti codici:

upstream unique_upstream_name {
  server 127.0.0.1:8001; # localhost with application port
}

server {
  listen 80; # server host with 80 port
  server_name servername.com; # custom application domain
  location / {
    proxy_pass  http://unique_upstream_name;
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    proxy_redirect off;
    proxy_buffering off;
    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

CREARE UN REDIRECT DA HTTP A HTTPS

server {
  listen 80;
  server_name example.com;
  return 301 https://$server_name$request_uri;
}