Étapes pour déploiement d'une application Node.js chez DigitalOcean avec PM2, serveur NGINX en tant que proxy inversé et sécurité SSL (HTTPS) à l'aide de LetsEncrypt
Enregistrer un nom de domaine chez le revendeur préféré et changes les noms de domaines pour:
- ns1.digitalocean.com
- ns2.digitalocean.com
- ns3.digitalocean.com
Cela peut prendre quelques temps (heures) avant que les noms de domaines se propagent. Quelques minutes si on est chanceux.
Utiliser le lien ci-bas pour obtenir un crédit à l'abonnement https://m.do.co/c/5424d440c63a
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt install nodejs
npm i -g npm@latest
node --version
Créer un répertoire /var/www/html et clonez-y votre projet
git clone [projet].git
cd [project]
npm install
npm start
# arrêter l'application
ctrl+C
sudo npm i pm2 -g
pm2 start app.js
**ou**
pm2 start /bin/www
# Autres commandes PM2 populaires...
pm2 show app
pm2 status
pm2 restart app
pm2 stop app
pm2 logs (Show log stream)
pm2 flush (Clear logs)
# Pour s'assurer que l'application démarre avec le serveur
pm2 startup ubuntu
L'application est maintenant accessible en utilisant son port. Maintenant nous voulons bloquer ce port et laisser NGINX gérer les accès au port HTTP (80)
Tester l'accès à l'application avec [ip]:[port], exemple :
137.184.58.65:3000
sudo ufw enable
sudo ufw status
sudo ufw allow ssh (Port 22)
sudo ufw allow http (Port 80)
sudo ufw allow https (Port 443)
sudo apt install nginx
Modifier le fichier de configuration de sites de NGINX à l'emplacement : /etc/nginx/sites-available/default
Add the following to the location part of the server block
server_name [domaine] www.[domaine];
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
sudo nginx -t
sudo service nginx restart
À ce stade vous devriez être en mesure d'accéder à votre application nodejs avec l'adresse ip seulement.
Tester l'accès à l'application avec l'adresse IP, exemple :
137.184.58.65
Si cela ne fonctione pas, vérifiez les configuration NGINX ou de firewall.
Connectez-vous à Digital Ocean, allez à "networking" et ajoutez votre domaine. Ajoutez 2 "records" de type A qui pointent sur le domaine, @ et www Redémarrez le droplet
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python3-certbot-nginx
sudo certbot --nginx -d [domaine] -d www.[domaine]
# Choix de redirection
2
# Au besoin, utilisez https://letsdebug.net/ pour déboguer l'encryptage
# Ce certificat sera valide pour 90 jours. Tester son renouvellement automatique avec :
certbot renew --dry-run
Maintenant visitez https://[domaine] et votre application devrait fonctionner.