Si të vendosni aplikacionin në internet Clojure në Debian 9


Clojure është një gjuhë moderne programimi me qëllime të përgjithshme për JVM që fokusohet në programimin e njëkohshëm që gjendet në sistemet operative. Clojure ju mundëson të përdorni infrastrukturën ekzistuese JVM, duke përfshirë mjetet, bibliotekat dhe serverët e aplikacioneve.

Ky udhëzues do të ecë përmes procesit të vendosjes së një aplikacioni të thjeshtë ueb në Clojure duke përdorur mbikëqyrësin dhe Nginx.

Kërkesat

  • Një server që ekzekuton Ubuntu 16.04.
  • Një konfigurim i fjalëkalimit rrënjësor në serverin tuaj.

Fillimi

Para fillimit, rekomandohet të përditësoni paketën tuaj në versionin më të fundit me komandën e mëposhtme:

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

Pasi të jenë përditësuar të gjitha paketat, rinisni serverin tuaj për të zbatuar të gjitha këto ndryshime.

reboot

Më pas, instaloni disa paketa të kërkuara si, git, curl, Java në serverin tuaj me komandën e mëposhtme:

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

Pasi të instalohen të gjitha paketat e kërkuara, mund të verifikoni versionin e JAVA me komandën e mëposhtme:

java -version

Ju duhet të shihni versionin JAVA në daljen e mëposhtme

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)

Pasi të keni mbaruar, mund të vazhdoni të instaloni Nginx dhe Supervisor.

Instaloni Nginx dhe Supervisor

Si parazgjedhje, Nginx dhe Supervisor është i disponueshëm në depon e Ubuntu 16.04. Ju mund t'i instaloni ato thjesht duke ekzekutuar komandën e mëposhtme:

apt-get install nginx supervisor -y

Pasi të përfundojë instalimi, filloni shërbimin Nginx dhe Supervisor dhe mundësojini ata të fillojnë në kohën e nisjes me komandën e mëposhtme:

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

Pasi të keni mbaruar, mund të vazhdoni në hapin tjetër.

Shkarkoni aplikacionin Clojure

Së pari, do t'ju duhet të shkarkoni modelin e projektit Clojure nga depoja e git. Mund ta shkarkoni lehtësisht me mjetin e linjës së komandës git klon siç tregohet më poshtë:

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

Hapi tjetër është përpilimi dhe ekzekutimi i këtij projekti Clojure duke përdorur Leiningen. Leiningen është një mjet automatizimi i menaxhimit dhe ndërtimit të varësisë që mund të përdoret për të përpiluar aplikacionin Clojure. Mund ta shkarkoni me komandën curl siç tregohet më poshtë:

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

Tjetra, jepni lejet e duhura mjetit të shkarkuar me komandën e mëposhtme:

chmod 755 /usr/bin/lein

Tani, ekzekutoni komandën e mëposhtme për të përpiluar projektin e Mbylljes:

cd do-clojure-web
lein uberjar

Ju duhet të shihni daljen e mëposhtme:

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

Pasi të përpilohet projekti Clojure, mund të vazhdoni në hapin tjetër.

Konfiguro mjedisin e aplikacionit në ueb Clojure

Më pas, do t'ju duhet të krijoni një strukturë drejtorie për aplikacionin në internet Clojure. Ju mund ta bëni këtë me komandën e mëposhtme:

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

Tjetra, kopjoni skedarët e aplikacionit Clojure në drejtorinë e mësipërme:

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

Tjetra, jepni lejet e duhura në drejtorinë e aplikacionit Clojure me komandën e mëposhtme:

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

Më pas, krijoni një lidhje simbolike të aplikacionit në internet clojure me komandën e mëposhtme:

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

Aplikacioni i uebit Clojure tani është gati për përdorim. Mund të kontrolloni nëse po funksionon apo jo me komandën e mëposhtme:

java -jar do-clojure-web.jar

Nëse gjithçka është në rregull, duhet të shihni daljen e mëposhtme:

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 :5000

Konfiguro Nginx dhe Supervisor

Më pas, do t'ju duhet të konfiguroni Mbikëqyrësin për të menaxhuar aplikacionet Clojure si shërbim. Ju mund ta bëni këtë duke krijuar skedarin do-clojure-web.conf nën drejtorinë e konfigurimit të Mbikëqyrësit siç tregohet më poshtë:

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

Shtoni rreshtat e mëposhtëm:

[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

Ruani dhe mbyllni skedarin kur të keni mbaruar.

Më pas, do t'ju duhet gjithashtu të konfiguroni Nginx për t'u përdorur si një përfaqësues i kundërt. Sepse aplikacioni në internet Clojure pranon lidhje vetëm nga localhost. Ju mund ta përdorni atë nga një vendndodhje e largët duke përdorur Nginx. Për ta bërë këtë, do t'ju duhet të konfiguroni skedarin e konfigurimit të paracaktuar Nginx:

nano /etc/nginx/sites-available/default

Ndryshoni skedarin siç tregohet më poshtë:

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

Ruani dhe mbyllni skedarin kur të keni mbaruar, më pas rinisni shërbimin Nginx dhe Supervisor për të aplikuar të gjitha ndryshimet:

systemctl restart nginx
systemctl restart supervisor

Ju mund të verifikoni statusin e Nginx dhe Supervisor me komandën e mëposhtme:

systemctl status supervisor

Nëse gjithçka është në rregull, duhet të shihni daljen e mëposhtme:

? 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

Prodhimi:

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

Hyni në aplikacionin Clojure Web

Pasi gjithçka të jetë konfiguruar siç duhet, është koha për të hyrë në aplikacionin në internet Clojure përmes një shfletuesi uebi.

Hapni shfletuesin tuaj të internetit dhe shkruani URL-në http://your-ip-adresa, do të ridrejtoheni në faqen kryesore të aplikacionit të uebit Clojure siç tregohet më poshtë:

Tani, klikoni në butonin Shto vendndodhje, duhet të shihni imazhin e mëposhtëm:

Këtu, jepni vlerat në vlerën x dhe fushën e vlerës y, më pas klikoni në butonin dorëzo vendndodhjen. Tani mund të shikoni vendndodhjet tuaja të paraqitura duke klikuar në butonin Shiko të gjitha vendndodhjet. Ju duhet të shihni imazhin e mëposhtëm:

konkluzioni

Në artikullin e mësipërm, mësuam se si të vendosim aplikacionin në internet Clojure duke përdorur Supervisor dhe Lein. Ne gjithashtu mësuam se si të aksesojmë një aplikacion në internet Clojure nga një vendndodhje e largët duke vendosur Nginx si një server proxy të kundërt. Shpresoj se tani mund të vendosni lehtësisht aplikacionin tuaj të personalizuar duke përdorur Clojure, Supervisor dhe Lein. Mos ngurroni të pyesni çdo gjë nëse keni ndonjë pyetje.