05/01/2023
J'ai eu récemment besoin d'effectuer un déploiement d'une application rapide. Ma stack habituel et d'utiliser Docker, Portainer et Traefik. Cependant, cette fois-ci j'ai dû prendre la solution la plus rapide est la plus adaptée, je vous explique comment j'ai fait.
Le setup est extrêmement simple, il vous faudra l’accès à votre serveur Linux Debian ou Ubuntu. Il faudra aussi installer Apache2 si ce n’est pas déjà fait.
Déployez votre code sur le serveur
Je ne vais pas détailler ici la méthode pour téléverser votre code sur votre propre serveur, personnellement ma préférence va pour le déploiement via un repo Github, sur le serveur, j’effectue un git clone ou bien des git pull pour récupérer la dernière version du code.
Démarrez votre application
Ici vous avez le choix, pour faire au plus simple, personnellement, j’utilise le paquet Forever
forever start app.js
Créez un fichier de conf pour Apache
Comme nous volons déployer une application Node JS, l’application va être exécutée de manière locale sur le serveur, c’est-à-dire que l’application sera disponible sur localhost sur le serveur.
L’idée va t’être de demander à Apache de passer le trafic extérieur vers cette application locale. Pour cela, nous allons utiliser la fonction proxyPass d’ Apache.
Afin d’utiliser cette fonction, il faut bien évidemment qu’elle soit disponible dans votre configuration d’Apache2, pour ce faire, activez le mod suivant :
a2enmod proxy proxy_http
Une fois que ce mode est activé, créer un fichier de configuration.
Allez dans le dossier :
/etc/apache2/sites-available
Puis créez le fichier .conf suivant ce style de nomenclature
nomdusite.antoibrossault.com.conf
Le fichier se construit de manière suivante
<VirtualHost *:80>
ServerAdmin contact@masterOfTheUniverse.com
ServerName my-app.antoinebrossault.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:8080/
ProxyPassReverse http://localhost:8080/
</Location>
RewriteEngine on
RewriteCond %{SERVER_NAME} =my-app.antoinebrossault.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
Vous noterez que dans cet exemple notre application tourne un sur le port 8080.
Si votre application tourne sur un port différent bien évidemment, veuillez mettre à jour ces lignes.
Activez le site dans Apache2
a2ensite nomdusite.antoibrossault.com.conf
Lancez cert-bot de let’s encrypt pour obtenir un certicat SSL valide
Je ne vais pas détailler ici l’installation de cert-bot, mais c’est un outil extrêmement pratique pour récupérer, renouveler automatiquement les certificats de let’s encrypt.
certbot --apache
Vous devriez maintenant avoir votre application qui tourne avec un certificat SSL valide.
Conclusion
Cette approche n’est pas recommandée avec toutes sortes d’application, mais si vous êtes sur une application de test, expérimentale, c’est globalement une solution rapide et intéressante à avoir dans sa caisse à outils.