GNU/Linux >> Tutoriels Linux >  >> Debian

Comment déployer l'application Web Clojure sur Debian 9

Clojure est un langage de programmation moderne à usage général pour la JVM qui se concentre sur la programmation simultanée trouvée dans les systèmes d'exploitation. Clojure vous permet d'utiliser l'infrastructure JVM existante, y compris les outils, les bibliothèques et les serveurs d'applications.

Ce guide vous guidera tout au long du processus de déploiement d'une application Web simple dans Clojure à l'aide d'un superviseur et de Nginx.

Exigences

  • Un serveur exécutant Ubuntu 16.04.
  • Une configuration de mot de passe root sur votre serveur.

Mise en route

Avant de commencer, il est recommandé de mettre à jour votre package vers la dernière version avec la commande suivante :

apt-get update -y
apt-get upgrade -y

Une fois tous les packages mis à jour, redémarrez votre serveur pour appliquer toutes ces modifications.

reboot

Ensuite, installez certains packages requis tels que git, curl, Java sur votre serveur avec la commande suivante :

apt-get install git curl openjdk-8-jre-headless -y

Une fois tous les packages requis installés, vous pouvez vérifier la version de JAVA avec la commande suivante :

java -version

Vous devriez voir la version JAVA dans la sortie suivante

openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

Une fois que vous avez terminé, vous pouvez procéder à l'installation de Nginx et de Supervisor.

Installer Nginx et Supervisor

Par défaut, Nginx et Supervisor sont disponibles dans le référentiel Ubuntu 16.04. Vous pouvez les installer en exécutant simplement la commande suivante :

apt-get install nginx supervisor -y

Une fois l'installation terminée, démarrez les services Nginx et Supervisor et autorisez-les à démarrer au démarrage avec la commande suivante :

systemctl start nginx
systemctl start supervisor
systemctl enable nginx
systemctl enable supervisor

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

Télécharger l'application Clojure

Tout d'abord, vous devrez télécharger l'exemple de projet Clojure à partir du référentiel git. Vous pouvez facilement le télécharger avec l'utilitaire de ligne de commande git clone comme indiqué ci-dessous :

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

La prochaine étape consiste à compiler et à exécuter ce projet Clojure à l'aide de Leiningen. Leiningen est un outil de gestion des dépendances et d'automatisation de la construction qui peut être utilisé pour compiler l'application Clojure. Vous pouvez le télécharger avec la commande curl comme indiqué ci-dessous :

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

Ensuite, donnez les autorisations appropriées à l'outil téléchargé avec la commande suivante :

chmod 755 /usr/bin/lein

Maintenant, exécutez la commande suivante pour compiler le projet Closure :

cd do-clojure-web
lein uberjar

Vous devriez voir le résultat suivant :

WARNING: You're currently running as root; probably by accident.
Press control-C to abort or Enter to continue as root.
Set LEIN_ROOT to disable this warning.

Downloading Leiningen to /root/.lein/self-installs/leiningen-2.7.1-standalone.jar now...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   618    0   618    0     0    309      0 --:--:--  0:00:02 --:--:--   207
100 14.6M  100 14.6M    0     0   326k      0  0:00:46  0:00:46 --:--:--  279k
Retrieving lein-ring/lein-ring/0.8.13/lein-ring-0.8.13.pom from clojars
Retrieving org/clojure/clojure/1.2.1/clojure-1.2.1.pom from central
Retrieving org/clojure/data.xml/0.0.6/data.xml-0.0.6.pom from central
Retrieving org/clojure/pom.contrib/0.0.25/pom.contrib-0.0.25.pom from central
Retrieving org/sonatype/oss/oss-parent/5/oss-parent-5.pom from central
Retrieving org/clojure/clojure/1.3.0/clojure-1.3.0.pom from central
Retrieving leinjacker/leinjacker/0.4.1/leinjacker-0.4.1.pom from clojars
Retrieving org/clojure/core.contracts/0.0.1/core.contracts-0.0.1.pom from central
Retrieving org/clojure/pom.contrib/0.0.26/pom.contrib-0.0.26.pom from central
Retrieving org/clojure/core.unify/0.5.3/core.unify-0.5.3.pom from central
Retrieving org/clojure/clojure/1.4.0/clojure-1.4.0.pom from central
Retrieving org/clojure/clojure/1.2.1/clojure-1.2.1.jar from central
Retrieving org/clojure/core.contracts/0.0.1/core.contracts-0.0.1.jar from central
Retrieving org/clojure/data.xml/0.0.6/data.xml-0.0.6.jar from central
Retrieving org/clojure/core.unify/0.5.3/core.unify-0.5.3.jar from central
Retrieving org/clojure/clojure/1.2.1/clojure-1.2.1.jar from clojars

Une fois le projet Clojure compilé, vous pouvez passer à l'étape suivante.

Configurer l'environnement de l'application Web Clojure

Ensuite, vous devrez créer une structure de répertoires pour l'application Web Clojure. Vous pouvez le faire avec la commande suivante :

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

Ensuite, copiez les fichiers de l'application Clojure dans le répertoire ci-dessus :

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

Ensuite, donnez les autorisations appropriées au répertoire de l'application Clojure avec la commande suivante :

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

Ensuite, créez un symbole de l'application Web clojure avec la commande suivante :

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

L'application Web Clojure est maintenant prête à être utilisée. Vous pouvez vérifier s'il est en cours d'exécution ou non avec la commande suivante :

java -jar do-clojure-web.jar

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

2017-10-01 10:30:48.349:INFO:oejs.Server:jetty-7.x.y-SNAPSHOT
2017-10-01 10:30:48.590:INFO:oejs.AbstractConnector:Started [email protected]:5000

Configurer Nginx et le superviseur

Ensuite, vous devrez configurer Supervisor pour gérer les applications Clojure en tant que service. Vous pouvez le faire en créant le fichier do-clojure-web.conf sous le répertoire de configuration du superviseur, comme indiqué ci-dessous :

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/log/do-clojure-web.app.log

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, vous devrez également configurer Nginx pour l'utiliser comme proxy inverse. Parce que l'application Web Clojure accepte uniquement les connexions de l'hôte local. Vous pouvez y accéder à distance à l'aide de Nginx. Pour ce faire, vous devrez configurer le fichier de configuration par défaut de Nginx :

nano /etc/nginx/sites-available/default

Modifiez le fichier comme indiqué ci-dessous :

upstream http_backend {
    server 127.0.0.1:5000;
    keepalive 32;
}
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        index index.html index.htm index.nginx-debian.html;

        server_name _;

    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é, puis redémarrez Nginx et le service Supervisor pour appliquer toutes les modifications :

systemctl restart nginx
systemctl restart supervisor

Vous pouvez vérifier l'état de Nginx et de Supervisor avec la commande suivante :

systemctl status supervisor

Si tout va bien, vous devriez voir 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 Mon 2017-10-02 10:19:32 EDT; 22min ago
     Docs: http://supervisord.org
 Main PID: 397 (supervisord)
    Tasks: 19 (limit: 4915)
   CGroup: /system.slice/supervisor.service
           ??397 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
           ??446 /usr/bin/java -jar do-clojure-web.jar

Oct 02 10:19:32 debian systemd[1]: Started Supervisor process control system for UNIX.
Oct 02 10:19:39 debian supervisord[397]: 2017-10-02 10:19:39,656 CRIT Supervisor running as root (no user in config file)
Oct 02 10:19:39 debian supervisord[397]: 2017-10-02 10:19:39,665 INFO Included extra file "/etc/supervisor/conf.d/do-clojure-web.conf" during p
Oct 02 10:19:39 debian supervisord[397]: 2017-10-02 10:19:39,821 INFO RPC interface 'supervisor' initialized
Oct 02 10:19:39 debian supervisord[397]: 2017-10-02 10:19:39,823 CRIT Server 'unix_http_server' running without any HTTP authentication checkin
Oct 02 10:19:39 debian supervisord[397]: 2017-10-02 10:19:39,825 INFO supervisord started with pid 397
Oct 02 10:19:40 debian supervisord[397]: 2017-10-02 10:19:40,890 INFO spawned: 'do-clojure-web' with pid 446
Oct 02 10:19:41 debian supervisord[397]: 2017-10-02 10:19:41,893 INFO success: do-clojure-web entered RUNNING state, process has stayed up for 
systemctl status nginx

Sortie :

? nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2017-10-02 10:19:35 EDT; 26min ago
     Docs: man:nginx(8)
  Process: 425 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 401 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 427 (nginx)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ??427 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ??429 nginx: worker process

Oct 02 10:19:32 debian systemd[1]: Starting A high performance web server and a reverse proxy server...
Oct 02 10:19:35 debian systemd[1]: nginx.service: Failed to read PID from file /run/nginx.pid: Invalid argument
Oct 02 10:19:35 debian systemd[1]: Started A high performance web server and a reverse proxy server.

Accéder à l'application Web Clojure

Une fois que tout est correctement configuré, il est temps d'accéder à l'application Web Clojure via un navigateur Web.

Ouvrez votre navigateur Web et tapez l'URL http://votre-adresse-ip, vous serez redirigé vers la page d'accueil de l'application Web Clojure comme indiqué ci-dessous :

Maintenant, cliquez sur Ajouter un emplacement bouton, vous devriez voir l'image suivante :

Ici, fournissez les valeurs dans la valeur x et le champ de valeur y, puis cliquez sur soumettre l'emplacement bouton. Vous pouvez maintenant afficher vos emplacements soumis en cliquant sur Afficher tous les emplacements bouton. Vous devriez voir l'image suivante :

Conclusion

Dans l'article ci-dessus, nous avons appris à déployer l'application Web Clojure à l'aide de Supervisor et de lein. Nous avons également appris à accéder à une application Web Clojure à distance en configurant Nginx en tant que serveur proxy inverse. J'espère que vous pourrez désormais déployer facilement votre application personnalisée à l'aide de Clojure, Supervisor et lein. N'hésitez pas à demander quoi que ce soit si vous avez des questions.


Debian
  1. Comment installer le navigateur Web Google Chrome sur Debian 9

  2. Comment installer la console Web Cockpit sur Debian 10

  3. Comment installer Matomo Web Analytics sur Debian 9

  4. Comment installer Django Web Application Framework sur Debian 10

  5. Debian - Comment boucler le contenu d'une page Web complète ?

Comment installer Flatpak sur Debian 11 Bullseye

Comment installer le navigateur Web Opera sur Debian 9 Stretch

Comment installer le navigateur Web Chromium sur Debian 10

Comment installer Netdata sur Debian 10

Comment installer le serveur Web Apache sur Debian 11

Comment installer Team Viewer sur Debian 11