GNU/Linux >> Linux Esercitazione >  >> Debian

Come distribuire l'applicazione Web Clojure su Debian 9

Clojure è un moderno linguaggio di programmazione generico per JVM che si concentra sulla programmazione simultanea che si trova nei sistemi operativi. Clojure consente di utilizzare l'infrastruttura JVM esistente, inclusi strumenti, librerie e server delle applicazioni.

Questa guida illustrerà il processo di distribuzione di una semplice applicazione Web in Clojure utilizzando supervisor e Nginx.

Requisiti

  • Un server che esegue Ubuntu 16.04.
  • Una configurazione della password di root sul tuo server.

Per iniziare

Prima di iniziare, si consiglia di aggiornare il pacchetto all'ultima versione con il seguente comando:

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

Una volta aggiornati tutti i pacchetti, riavvia il server per applicare tutte queste modifiche.

reboot

Quindi, installa alcuni pacchetti richiesti come, git, curl, Java sul tuo server con il seguente comando:

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

Una volta installati tutti i pacchetti richiesti, puoi verificare la versione di JAVA con il seguente comando:

java -version

Dovresti vedere la versione JAVA nel seguente output

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 volta terminato, puoi procedere con l'installazione di Nginx e Supervisor.

Installa Nginx e Supervisor

Per impostazione predefinita, Nginx e Supervisor sono disponibili nel repository di Ubuntu 16.04. Puoi installarli semplicemente eseguendo il seguente comando:

apt-get install nginx supervisor -y

Una volta completata l'installazione, avvia il servizio Nginx e Supervisor e abilita l'avvio all'avvio con il seguente comando:

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

Una volta terminato, puoi procedere al passaggio successivo.

Scarica l'app Clojure

Innanzitutto, dovrai scaricare il progetto Clojure di esempio dal repository git. Puoi scaricarlo facilmente con l'utilità della riga di comando git clone come mostrato di seguito:

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

Il prossimo passo è compilare ed eseguire questo progetto Clojure usando Leiningen. Leiningen è uno strumento di gestione delle dipendenze e automazione della compilazione che può essere utilizzato per compilare l'app Clojure. Puoi scaricarlo con il comando curl come mostrato di seguito:

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

Quindi, dai le autorizzazioni appropriate allo strumento scaricato con il seguente comando:

chmod 755 /usr/bin/lein

Ora, esegui il seguente comando per compilare il progetto di chiusura:

cd do-clojure-web
lein uberjar

Dovresti vedere il seguente output:

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 volta compilato il progetto Clojure, puoi procedere al passaggio successivo.

Configurazione dell'ambiente dell'app Web Clojure

Successivamente, dovrai creare una struttura di directory per l'applicazione Web Clojure. Puoi farlo con il seguente comando:

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

Quindi, copia i file dell'applicazione Clojure nella directory sopra:

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

Quindi, dai le autorizzazioni appropriate alla directory dell'app Clojure con il seguente comando:

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

Quindi, crea un simbolo dell'applicazione web clojure con il seguente comando:

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

L'app Web Clojure è ora pronta per l'uso. Puoi verificare se è in esecuzione o meno con il seguente comando:

java -jar do-clojure-web.jar

Se tutto va bene, dovresti vedere il seguente output:

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

Configura Nginx e Supervisor

Successivamente, dovrai configurare Supervisor per gestire le applicazioni Clojure come servizio. Puoi farlo creando il file do-clojure-web.conf nella directory di configurazione del supervisore come mostrato di seguito:

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

Aggiungi le seguenti righe:

[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

Salva e chiudi il file quando hai finito.

Successivamente, dovrai anche configurare Nginx da utilizzare come proxy inverso. Perché l'applicazione Web Clojure accetta connessioni solo da localhost. Puoi accedervi da una posizione remota usando Nginx. Per fare ciò, dovrai configurare il file di configurazione predefinito di Nginx:

nano /etc/nginx/sites-available/default

Modifica il file come mostrato di seguito:

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

Salva e chiudi il file al termine, quindi riavvia il servizio Nginx e Supervisor per applicare tutte le modifiche:

systemctl restart nginx
systemctl restart supervisor

Puoi verificare lo stato di Nginx e Supervisor con il seguente comando:

systemctl status supervisor

Se tutto va bene, dovresti vedere il seguente output:

? 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

Uscita:

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

Accedi all'app Web Clojure

Una volta che tutto è configurato correttamente, è il momento di accedere all'applicazione web Clojure tramite un browser web.

Apri il tuo browser web e digita l'URL http://your-ip-address, verrai reindirizzato alla home page dell'app web Clojure come mostrato di seguito:

Ora, fai clic su Aggiungi posizione pulsante, dovresti vedere la seguente immagine:

Qui, fornisci i valori nel valore x e nel campo del valore y, quindi fai clic su invia posizione pulsante. Ora puoi visualizzare le sedi inviate facendo clic su Visualizza tutte le sedi pulsante. Dovresti vedere la seguente immagine:

Conclusione

Nell'articolo precedente, abbiamo appreso come distribuire l'applicazione Web Clojure utilizzando Supervisor e lein. Abbiamo anche imparato come accedere a un'applicazione Web Clojure da una posizione remota configurando Nginx come server proxy inverso. Spero che ora tu possa distribuire facilmente la tua applicazione personalizzata usando Clojure, Supervisor e lein. Sentiti libero di chiedere qualsiasi cosa in caso di domande.


Debian
  1. Come installare il browser Web Google Chrome su Debian 9

  2. Come installare Cockpit Web Console su Debian 10

  3. Come installare Matomo Web Analytics su Debian 9

  4. Come installare Django Web Application Framework su Debian 10

  5. Debian – Come arricciare il contenuto completo di una pagina Web?

Come installare Flatpak su Debian 11 Bullseye

Come installare Opera Web Browser su Debian 9 Stretch

Come installare il browser Web Chromium su Debian 10

Come installare Netdata su Debian 10

Come installare il server Web Apache su Debian 11

Come installare Team Viewer su Debian 11