GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo implementar la aplicación web Clojure en Debian 9

Clojure es un lenguaje de programación moderno de propósito general para JVM que se enfoca en la programación concurrente que se encuentra en los sistemas operativos. Clojure le permite hacer uso de la infraestructura JVM existente, incluidas herramientas, bibliotecas y servidores de aplicaciones.

Esta guía lo guiará a través del proceso de implementación de una aplicación web simple en Clojure usando supervisor y Nginx.

Requisitos

  • Un servidor con Ubuntu 16.04.
  • Una configuración de contraseña raíz en su servidor.

Cómo empezar

Antes de comenzar, se recomienda actualizar su paquete a la última versión con el siguiente comando:

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

Una vez que todos los paquetes estén actualizados, reinicie su servidor para aplicar todos estos cambios.

reboot

A continuación, instale algunos paquetes necesarios como git, curl, Java en su servidor con el siguiente comando:

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

Una vez que todos los paquetes requeridos estén instalados, puede verificar la versión de JAVA con el siguiente comando:

java -version

Debería ver la versión de JAVA en el siguiente resultado

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)

Una vez que haya terminado, puede proceder a instalar Nginx y Supervisor.

Instalar Nginx y Supervisor

De forma predeterminada, Nginx y Supervisor están disponibles en el repositorio de Ubuntu 16.04. Puede instalarlos simplemente ejecutando el siguiente comando:

apt-get install nginx supervisor -y

Una vez que se complete la instalación, inicie el servicio Nginx y Supervisor y habilítelos para que se inicien en el momento del arranque con el siguiente comando:

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

Una vez que haya terminado, puede continuar con el siguiente paso.

Descargar aplicación Clojure

Primero, deberá descargar el proyecto Clojure de muestra del repositorio de git. Puede descargarlo fácilmente con la utilidad de línea de comando git clone como se muestra a continuación:

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

El siguiente paso es compilar y ejecutar este proyecto Clojure utilizando Leiningen. Leiningen es una herramienta de automatización de compilación y administración de dependencias que se puede usar para compilar la aplicación Clojure. Puede descargarlo con el comando curl como se muestra a continuación:

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

A continuación, otorgue los permisos adecuados a la herramienta descargada con el siguiente comando:

chmod 755 /usr/bin/lein

Ahora, ejecute el siguiente comando para compilar el proyecto Closure:

cd do-clojure-web
lein uberjar

Debería ver el siguiente resultado:

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

Una vez compilado el proyecto Clojure, puede continuar con el siguiente paso.

Configurar el entorno de la aplicación web Clojure

A continuación, deberá crear una estructura de directorios para la aplicación web Clojure. Puedes hacer esto con el siguiente comando:

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

A continuación, copie los archivos de la aplicación Clojure en el directorio anterior:

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

A continuación, otorgue los permisos adecuados al directorio de la aplicación Clojure con el siguiente comando:

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

A continuación, cree un enlace simbólico de la aplicación web clojure con el siguiente comando:

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

La aplicación web Clojure ahora está lista para usar. Puede verificar si se está ejecutando o no con el siguiente comando:

java -jar do-clojure-web.jar

Si todo está bien, debería ver el siguiente resultado:

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

Configurar Nginx y Supervisor

A continuación, deberá configurar Supervisor para administrar las aplicaciones de Clojure como un servicio. Puede hacer esto creando el archivo do-clojure-web.conf en el directorio de configuración de Supervisor como se muestra a continuación:

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

Agregue las siguientes líneas:

[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

Guarde y cierre el archivo cuando haya terminado.

A continuación, también deberá configurar Nginx para usarlo como proxy inverso. Porque la aplicación web Clojure acepta conexiones solo desde el host local. Puede acceder desde una ubicación remota usando Nginx. Para hacerlo, deberá configurar el archivo de configuración predeterminado de Nginx:

nano /etc/nginx/sites-available/default

Cambie el archivo como se muestra a continuación:

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

Guarde y cierre el archivo cuando haya terminado, luego reinicie el servicio Nginx y Supervisor para aplicar todos los cambios:

systemctl restart nginx
systemctl restart supervisor

Puede verificar el estado de Nginx y Supervisor con el siguiente comando:

systemctl status supervisor

Si todo está bien, debería ver el siguiente resultado:

? 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

Salida:

? 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.

Acceder a la aplicación web Clojure

Una vez que todo esté configurado correctamente, es hora de acceder a la aplicación web Clojure a través de un navegador web.

Abra su navegador web y escriba la URL http://su-dirección-ip, será redirigido a la página de inicio de la aplicación web Clojure como se muestra a continuación:

Ahora, haga clic en Agregar ubicación botón, debería ver la siguiente imagen:

Aquí, proporcione los valores en el campo valor x y valor y, luego haga clic en enviar ubicación botón. Ahora puede ver las ubicaciones enviadas haciendo clic en Ver todas las ubicaciones. botón. Deberías ver la siguiente imagen:

Conclusión

En el artículo anterior, aprendimos cómo implementar la aplicación web Clojure usando Supervisor y lein. También aprendimos cómo acceder a una aplicación web de Clojure desde una ubicación remota configurando Nginx como un servidor proxy inverso. Espero que ahora pueda implementar fácilmente su aplicación personalizada utilizando Clojure, Supervisor y lein. Siéntase libre de preguntar cualquier cosa si tiene alguna pregunta.


Debian
  1. Cómo instalar el navegador web Google Chrome en Debian 9

  2. Cómo instalar la consola web Cockpit en Debian 10

  3. Cómo instalar Matomo Web Analytics en Debian 9

  4. Cómo instalar Django Web Application Framework en Debian 10

  5. Debian:¿cómo rizar el contenido completo de la página web?

Cómo instalar Flatpak en Debian 11 Bullseye

Cómo instalar el navegador web Opera en Debian 9 Stretch

Cómo instalar el navegador web Chromium en Debian 10

Cómo instalar Netdata en Debian 10

Cómo instalar el servidor web Apache en Debian 11

Cómo instalar Team Viewer en Debian 11