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; }