GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment déployer une application Web Clojure avec Nginx sur Ubuntu 20.04

Clojure est un langage de programmation moderne, dynamique et puissant sur la plate-forme Java. Il est basé sur le langage de programmation LISP et possède des compilateurs qui permettent d'être exécuté à la fois sur l'environnement d'exécution Java et .Net. Clojure vous aide à créer des systèmes à partir de zéro sans toucher directement au code Java. Actuellement, il est utilisé par de nombreuses grandes entreprises, notamment Walmart et Puppet Lab.

Dans ce tutoriel, nous expliquerons comment déployer une application Web Clojure sur Ubuntu 20.04.

Prérequis

  • Un serveur exécutant Ubuntu 20.04.
  • Un nom de domaine valide pointé vers l'adresse IP de votre serveur.
  • Un mot de passe root est configuré sur le serveur.

Mise en route

Avant de commencer, il est recommandé de mettre à jour vos packages système vers la dernière version. Vous pouvez les mettre à jour avec la commande suivante :

apt-get update -y

Une fois tous les packages mis à jour, installez Java et les autres packages requis en exécutant la commande suivante :

apt-get install git curl default-jdk -y

Une fois tous les packages installés, vérifiez la version installée de Java avec la commande suivante :

java -version

Vous devriez obtenir le résultat suivant :

openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04)
OpenJDK 64-Bit Server VM (build 11.0.9.1+1-Ubuntu-0ubuntu1.20.04, mixed mode, sharing)

Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.

Installer Nginx et Supervisor

Ensuite, vous devrez installer le serveur Web Nginx et le superviseur sur votre système. Nginx est un serveur Web utilisé pour héberger des applications sur Internet. Supervisor est un système client/serveur qui permet à ses utilisateurs de surveiller et de contrôler un certain nombre de processus sur les systèmes d'exploitation basés sur Linux.

Vous pouvez installer les deux packages avec la commande suivante :

apt-get install nginx supervisor -y

Une fois les deux packages installés, vous pouvez passer à l'étape suivante.

Télécharger l'application Clojure

Tout d'abord, vous devrez télécharger l'application Clojure à partir du référentiel Git. Vous pouvez le télécharger en exécutant la commande suivante :

git clone https://github.com/do-community/do-clojure-web.git

Une fois le téléchargement terminé, vous devriez obtenir le résultat suivant :

Cloning into 'do-clojure-web'...
remote: Enumerating objects: 37, done.
remote: Total 37 (delta 0), reused 0 (delta 0), pack-reused 37
Unpacking objects: 100% (37/37), 6.25 KiB | 399.00 KiB/s, done.

Ensuite, vous devrez installer Leiningen sur votre système. Leiningen est un outil d'automatisation de la construction et de gestion des dépendances utilisé pour créer des projets écrits dans le langage de programmation Clojure. Vous pouvez télécharger le package binaire Leiningen avec la commande suivante :

curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein -o /usr/bin/lein

Une fois le téléchargement terminé, définissez l'autorisation d'exécution avec la commande suivante :

chmod 755 /usr/bin/lein

Ensuite, changez le répertoire en Clojure et compilez le projet avec la commande suivante :

cd do-clojure-web
lein uberjar

Une fois le projet compilé, vous devriez obtenir le résultat suivant :

Retrieving commons-codec/commons-codec/1.6/commons-codec-1.6.jar from central
Retrieving javax/servlet/servlet-api/2.5/servlet-api-2.5.jar from central
Retrieving org/clojure/java.jdbc/0.2.3/java.jdbc-0.2.3.jar from central
Retrieving com/h2database/h2/1.3.170/h2-1.3.170.jar from central
Retrieving org/eclipse/jetty/jetty-server/7.6.13.v20130916/jetty-server-7.6.13.v20130916.jar from central
Retrieving org/eclipse/jetty/orbit/javax.servlet/2.5.0.v201103041518/javax.servlet-2.5.0.v201103041518.jar from central
Retrieving org/eclipse/jetty/jetty-continuation/7.6.13.v20130916/jetty-continuation-7.6.13.v20130916.jar from central
Retrieving org/eclipse/jetty/jetty-http/7.6.13.v20130916/jetty-http-7.6.13.v20130916.jar from central
Retrieving org/eclipse/jetty/jetty-io/7.6.13.v20130916/jetty-io-7.6.13.v20130916.jar from central
Retrieving org/eclipse/jetty/jetty-util/7.6.13.v20130916/jetty-util-7.6.13.v20130916.jar from central
Retrieving medley/medley/0.5.3/medley-0.5.3.jar from clojars
Retrieving clout/clout/2.1.0/clout-2.1.0.jar from clojars
Retrieving compojure/compojure/1.3.1/compojure-1.3.1.jar from clojars
Retrieving ring/ring-core/1.3.2/ring-core-1.3.2.jar from clojars
Retrieving instaparse/instaparse/1.3.4/instaparse-1.3.4.jar from clojars
Retrieving crypto-random/crypto-random/1.2.0/crypto-random-1.2.0.jar from clojars
Retrieving crypto-equality/crypto-equality/1.0.0/crypto-equality-1.0.0.jar from clojars
Retrieving clj-time/clj-time/0.6.0/clj-time-0.6.0.jar from clojars
Retrieving ring/ring-codec/1.0.0/ring-codec-1.0.0.jar from clojars
Retrieving ring/ring-defaults/0.1.2/ring-defaults-0.1.2.jar from clojars
Retrieving ring/ring-ssl/0.2.1/ring-ssl-0.2.1.jar from clojars
Retrieving ring/ring-headers/0.1.1/ring-headers-0.1.1.jar from clojars
Retrieving ring/ring-anti-forgery/1.0.0/ring-anti-forgery-1.0.0.jar from clojars
Retrieving hiccup/hiccup/1.0.2/hiccup-1.0.2.jar from clojars
Retrieving ring/ring-jetty-adapter/1.3.2/ring-jetty-adapter-1.3.2.jar from clojars
Retrieving ring/ring-servlet/1.3.2/ring-servlet-1.3.2.jar from clojars
Compiling do-clojure-web.handler
Created /root/do-clojure-web/target/do-clojure-web-0.1.0.jar
Created /root/do-clojure-web/target/do-clojure-web-0.1.0-standalone.jar

Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.

Créer une structure de répertoire pour l'application Clojure

Ensuite, vous devrez créer une structure de répertoires pour l'application Clojure et placer les fichiers et répertoires requis à un emplacement spécifique.

Commencez par créer une structure de répertoires avec la commande suivante :

mkdir -p /var/www/html/do-clojure-web/app/db

Ensuite, copiez votre application et votre base de données Clojure dans le répertoire spécifique avec la commande suivante :

cp /root/do-clojure-web/target/do-clojure-web-0.1.0-standalone.jar /var/www/html/do-clojure-web/app/
cp /root/do-clojure-web/db/do-clojure-web.h2.db /var/www/html/do-clojure-web/app/db/

Ensuite, définissez les autorisations et la propriété appropriées avec la commande suivante :

chown -R www-data:www-data /var/www/html/do-clojure-web/
chmod -R 775 /var/www/html/do-clojure-web/

Ensuite, changez le répertoire vers l'application Clojure et créez un lien symbolique de votre application Clojure :

cd /var/www/html/do-clojure-web/app/
ln -s do-clojure-web-0.1.0-standalone.jar do-clojure-web.jar

Ensuite, vérifiez si votre application fonctionne ou non en exécutant la commande suivante :

java -jar do-clojure-web.jar

Si tout va bien, vous devriez obtenir le résultat suivant :

2020-11-25 10:19:51.456:INFO:oejs.Server:jetty-7.x.y-SNAPSHOT
2020-11-25 10:19:51.497:INFO:oejs.AbstractConnector:Started [email protected]:5000

Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.

Configurer le superviseur pour l'application Clojure

Il existe plusieurs façons de gérer l'application Clojure en tant que service. Dans ce didacticiel, nous utiliserons Supervisor pour gérer l'application Clojure. Vous pouvez le configurer en créant un fichier dans le répertoire de configuration du Superviseur :

nano /etc/supervisor/conf.d/do-clojure-web.conf

Ajoutez les lignes suivantes :

[program:do-clojure-web]
command=/usr/bin/java -jar do-clojure-web.jar
directory=/var/www/html/do-clojure-web/app
user=www-data
autostart=true
autorestart=true
startretries=3
redirect_stderr=true
stdout_logfile=/var/log/do-clojure-web.app.log

Enregistrez et fermez le fichier puis redémarrez le service Superviseur pour appliquer les modifications :

systemctl restart supervisor

Ensuite, activez le service Superviseur pour qu'il démarre au redémarrage du système :

systemctl enable supervisor

Vous pouvez maintenant vérifier le statut du Superviseur avec la commande suivante :

systemctl status supervisor

Vous devriez obtenir le résultat suivant :

? supervisor.service - Supervisor process control system for UNIX
     Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-11-25 10:22:31 UTC; 1min 12s ago
       Docs: http://supervisord.org
   Main PID: 40927 (supervisord)
      Tasks: 28 (limit: 2353)
     Memory: 104.6M
     CGroup: /system.slice/supervisor.service
             ??40927 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
             ??40946 /usr/bin/java -jar do-clojure-web.jar

Nov 25 10:22:31 ubuntu2004 systemd[1]: Started Supervisor process control system for UNIX.
Nov 25 10:22:31 ubuntu2004 supervisord[40927]: 2020-11-25 10:22:31,603 CRIT Supervisor is running as root.  Privileges were not dropped becaus>
Nov 25 10:22:31 ubuntu2004 supervisord[40927]: 2020-11-25 10:22:31,603 INFO Included extra file "/etc/supervisor/conf.d/do-clojure-web.conf" d>
Nov 25 10:22:31 ubuntu2004 supervisord[40927]: 2020-11-25 10:22:31,608 INFO RPC interface 'supervisor' initialized
Nov 25 10:22:31 ubuntu2004 supervisord[40927]: 2020-11-25 10:22:31,608 CRIT Server 'unix_http_server' running without any HTTP authentication >
Nov 25 10:22:31 ubuntu2004 supervisord[40927]: 2020-11-25 10:22:31,609 INFO supervisord started with pid 40927
Nov 25 10:22:32 ubuntu2004 supervisord[40927]: 2020-11-25 10:22:32,612 INFO spawned: 'do-clojure-web' with pid 40946
Nov 25 10:22:33 ubuntu2004 supervisord[40927]: 2020-11-25 10:22:33,615 INFO success: do-clojure-web entered RUNNING state, process has stayed >

À ce stade, le service Superviseur est démarré et votre application écoute sur le port 5000. Vous pouvez le vérifier avec la commande suivante :

ss -antpl | grep 5000

Vous devriez obtenir le résultat suivant :

LISTEN   0        50          [::ffff:127.0.0.1]:5000                  *:*       users:(("java",pid=40946,fd=7)) 

Une fois que vous avez terminé, vous pouvez passer à l'étape suivante.

Configurer Nginx pour l'application Clojure

Ensuite, vous devrez configurer le Nginx en tant que proxy inverse pour servir l'application Clojure. Tout d'abord, créez un fichier de configuration d'hôte virtuel Nginx avec la commande suivante :

nano /etc/nginx/sites-available/clojure.conf

Ajoutez les lignes suivantes :

upstream http_backend {
    server 127.0.0.1:5000;
    keepalive 32;
}
server {
        listen 80;
        root /var/www/html;
        index index.html index.htm index.nginx-debian.html;

        server_name clojure.example.com;

    location / {
        proxy_pass http://http_backend;

        proxy_http_version 1.1;
        proxy_set_header Connection "";

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;

        access_log /var/log/do-clojure-web.access.log;
        error_log /var/log/do-clojure-web.error.log;
    }
}

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, activez l'hôte virtuel Nginx avec la commande suivante :

ln -s /etc/nginx/sites-available/clojure.conf /etc/nginx/sites-enabled/

Ensuite, vérifiez le Nginx pour toute erreur de syntaxe avec la commande suivante :

nginx -t

Vous devriez obtenir le résultat suivant :

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Enfin, redémarrez le service Nginx pour appliquer les modifications :

systemctl restart nginx

Une fois que vous avez terminé, vous pouvez accéder à l'application Clojure.

Accéder à l'application Clojure

Maintenant, ouvrez votre navigateur Web et accédez à l'application Clojure en utilisant l'URL http://clojure.example.com . Vous devriez voir le tableau de bord de l'application Clojure dans l'écran suivant :

Cliquez sur Ajouter un lieu bouton. Vous devriez voir l'écran suivant :

Indiquez les valeurs souhaitées et cliquez sur soumettre bouton de localisation. Vous devriez voir l'écran suivant :

Maintenant, cliquez sur Afficher tous les emplacements bouton. Vous devriez voir votre emplacement ajouté dans l'écran suivant :

Conclusion

Toutes nos félicitations! vous avez déployé avec succès l'application Clojure avec Nginx en tant que proxy inverse sur le serveur Ubuntu 20.04. Vous pouvez maintenant essayer de déployer votre application personnalisée avec Clojure.


Ubuntu
  1. Comment déployer des applications Node.js avec pm2 et Nginx sur Ubuntu

  2. Comment déployer Modsecurity avec Nginx sur Ubuntu 20.04 LTS

  3. Déployer Modsecurity avec Nginx sur Ubuntu 20.04 LTS

  4. Comment sécuriser Nginx avec Letsencrypt sur Ubuntu 20.04

  5. Comment déployer l'application Flask avec Nginx et Gunicorn sur Ubuntu 20.04

Comment installer OSClass avec Nginx sur Ubuntu 20.04

Comment déployer une application Web Clojure avec Nginx sur Ubuntu 20.04

Comment déployer Ghost Blog avec Nginx sur Ubuntu 20.04

Comment installer Nginx avec ModSecurity sur Ubuntu 15.04

Comment installer Nextcloud 13 sur Ubuntu 16.04 avec Nginx

Comment déployer l'application Laravel avec Nginx sur Ubuntu ?