GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So stellen Sie eine Clojure-Webanwendung mit Nginx unter Ubuntu 20.04 bereit

Clojure ist eine moderne, dynamische und leistungsfähige Programmiersprache auf der Java-Plattform. Es basiert auf der Programmiersprache LISP und verfügt über Compiler, die es ermöglichen, sowohl in der Java- als auch in der .Net-Laufzeitumgebung ausgeführt zu werden. Clojure hilft Ihnen, Systeme von Grund auf neu zu erstellen, ohne Java-Code direkt zu berühren. Derzeit wird es von vielen großen Unternehmen verwendet, darunter Walmart und Puppet Lab.

In diesem Tutorial erklären wir, wie Sie eine Clojure-Webanwendung unter Ubuntu 20.04 bereitstellen.

Voraussetzungen

  • Ein Server mit Ubuntu 20.04.
  • Ein gültiger Domainname, auf den Ihre Server-IP verweist.
  • Ein Root-Passwort wird auf dem Server konfiguriert.

Erste Schritte

Bevor Sie beginnen, wird empfohlen, Ihre Systempakete auf die neueste Version zu aktualisieren. Sie können sie mit dem folgenden Befehl aktualisieren:

apt-get update -y

Nachdem alle Pakete aktualisiert wurden, installieren Sie Java und andere erforderliche Pakete, indem Sie den folgenden Befehl ausführen:

apt-get install git curl default-jdk -y

Sobald alle Pakete installiert sind, überprüfen Sie die installierte Version von Java mit dem folgenden Befehl:

Java-Version

Sie sollten die folgende Ausgabe erhalten:

openjdk version „11.0.9.1“ 2020-11-04OpenJDK 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 , gemischter Modus, Teilen)

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Nginx und Supervisor installieren

Als nächstes müssen Sie den Nginx-Webserver und Supervisor auf Ihrem System installieren. Nginx ist ein Webserver, der zum Hosten von Anwendungen im Internet verwendet wird. Supervisor ist ein Client/Server-System, das es seinen Benutzern ermöglicht, eine Reihe von Prozessen auf Linux-basierten Betriebssystemen zu überwachen und zu steuern.

Sie können beide Pakete mit dem folgenden Befehl installieren:

apt-get install nginx supervisor -y

Sobald beide Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.

Clojure-App herunterladen

Zuerst müssen Sie die Clojure-App aus dem Git-Repository herunterladen. Sie können es herunterladen, indem Sie den folgenden Befehl ausführen:

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

Sobald der Download abgeschlossen ist, sollten Sie die folgende Ausgabe erhalten:

Klonen in 'do-clojure-web'...remote:Enumerating objects:37, done.remote:Total 37 (delta 0), reused 0 (delta 0), pack-reused 37Objekte entpacken:100% (37 /37), 6,25 KiB | 399,00 KiB/s, fertig.

Als nächstes müssen Sie Leiningen in Ihrem System installieren. Leiningen ist ein Build-Automatisierungs- und Abhängigkeitsverwaltungstool, das zum Erstellen von Projekten verwendet wird, die in der Programmiersprache Clojure geschrieben sind. Sie können das Leiningen-Binärpaket mit dem folgenden Befehl herunterladen:

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

Sobald der Download abgeschlossen ist, setzen Sie die Ausführungserlaubnis mit dem folgenden Befehl:

chmod 755 /usr/bin/lein

Wechseln Sie als Nächstes in das Verzeichnis Clojure und kompilieren Sie das Projekt mit dem folgenden Befehl:

cd do-clojure-web
lein uberjar

Nachdem das Projekt kompiliert wurde, sollten Sie die folgende Ausgabe erhalten:

Abrufen von commons-codec/commons-codec/1.6/commons-codec-1.6.jar von CentralAbrufen von javax/servlet/servlet-api/2.5/servlet-api-2.5.jar von CentralAbrufen von org/clojure/java.jdbc/ 0.2.3/java.jdbc-0.2.3.jar vom zentralen Abruf von com/h2database/h2/1.3.170/h2-1.3.170.jar vom zentralen Abruf von org/eclipse/jetty/jetty-server/7.6.13.v20130916/ jetty-server-7.6.13.v20130916.jar vom zentralen Abruf von org/eclipse/jetty/orbit/javax.servlet/2.5.0.v201103041518/javax.servlet-2.5.0.v201103041518.jar vom zentralen Abruf von org/eclipse/jetty/ jetty-continuation/7.6.13.v20130916/jetty-continuation-7.6.13.v20130916.jar von centralRetrieving org/eclipse/jetty/jetty-http/7.6.13.v20130916/jetty-http-7.6.13.v20130916.jar from centralRetrieving org/eclipse/jetty/jetty-io/7.6.13.v20130916/jetty-io-7.6.13.v20130916.jar from centralRetrieving org/eclipse/jetty/jetty-util/7.6.13.v20130916/jetty-util -7.6.13.v20130916.jar from centralRetrieving medley/medley/0.5.3/medley-0.5.3.jar from clojarsRetrieving clout/clout/2.1.0/clout-2.1.0.jar von clojarsAbrufen von compojure/compojure/1.3.1/compojure-1.3.1.jar von clojarsAbrufen von ring/ring-core/1.3.2/ring-core-1.3. 2.jar von clojarsAbrufen von instaparse/instaparse/1.3.4/instaparse-1.3.4.jar von clojarsAbrufen von crypto-random/crypto-random/1.2.0/crypto-random-1.2.0.jar von clojarsAbrufen von crypto-equality/crypto -equality/1.0.0/crypto-equality-1.0.0.jar von clojarsAbrufen von clj-time/clj-time/0.6.0/clj-time-0.6.0.jar von clojarsAbrufen von ring/ring-codec/1.0.0 /ring-codec-1.0.0.jar von Clojars Abrufen von ring/ring-defaults/0.1.2/ring-defaults-0.1.2.jar von Clojars Abrufen von ring/ring-ssl/0.2.1/ring-ssl-0.2.1 .jar von clojarsAbrufen von ring/ring-headers/0.1.1/ring-headers-0.1.1.jar von clojarsAbrufen von ring/ring-anti-forgery/1.0.0/ring-anti-forgery-1.0.0.jar von clojarsAbrufen hiccup/hiccup/1.0.2/hiccup-1.0.2.jar from clojarsRetrieving ring/ring-jetty-adapter/1.3.2/ring-jetty-adapter-1.3.2.jar from clojarsRetrieving ring/ring-s ervlet/1.3.2/ring-servlet-1.3.2.jar von clojarsKompilieren von do-clojure-web.handlerCreated /root/do-clojure-web/target/do-clojure-web-0.1.0.jarCreated /root/do -clojure-web/target/do-clojure-web-0.1.0-standalone.jar

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Verzeichnisstruktur für Clojure-Anwendung erstellen

Als Nächstes müssen Sie eine Verzeichnisstruktur für die Clojure-App erstellen und die erforderlichen Dateien und Verzeichnisse an einem bestimmten Ort ablegen.

Erstellen Sie zunächst eine Verzeichnisstruktur mit dem folgenden Befehl:

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

Kopieren Sie als Nächstes Ihre Clojure-App und -Datenbank mit dem folgenden Befehl in das spezifische Verzeichnis:

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/

Legen Sie als Nächstes die richtigen Berechtigungen und Eigentumsrechte mit dem folgenden Befehl fest:

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

Wechseln Sie als Nächstes in das Verzeichnis der Clojure-App und erstellen Sie einen symbolischen Link Ihrer Clojure-Anwendung:

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

Überprüfen Sie als Nächstes, ob Ihre Anwendung funktioniert oder nicht, indem Sie den folgenden Befehl ausführen:

java -jar do-clojure-web.jar

Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe erhalten:

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

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Supervisor für die Clojure-Anwendung konfigurieren

Es gibt mehrere Möglichkeiten, die Clojure-Anwendung als Dienst zu verwalten. In diesem Tutorial verwenden wir Supervisor zum Verwalten der Clojure-App. Sie können es konfigurieren, indem Sie eine Datei im Supervisor-Konfigurationsverzeichnis erstellen:

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

Fügen Sie die folgenden Zeilen hinzu:

[program:do-clojure-web]command=/usr/bin/java -jar do-clojure-web.jardirectory=/var/www/html/do-clojure-web/appuser=www-dataautostart=trueautorestart =truestartretries=3redirect_stderr=truestdout_logfile=/var/log/do-clojure-web.app.log

Speichern und schließen Sie die Datei und starten Sie dann den Supervisor-Dienst neu, um die Änderungen zu übernehmen:

Systemctl-Neustart-Supervisor

Aktivieren Sie als Nächstes den Supervisor-Dienst so, dass er beim Systemneustart gestartet wird:

systemctl enable supervisor

Sie können jetzt den Status des Supervisors mit dem folgenden Befehl überprüfen:

Systemctl Status Supervisor

Sie sollten die folgende Ausgabe erhalten:

? supervisor.service – Supervisor-Prozessleitsystem für UNIX Geladen:geladen (/lib/systemd/system/supervisor.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Wed 2020-11-25 10:22:31 KOORDINIERTE WELTZEIT; Vor 1min 12s Dokumente: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.jarNov 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 wird als Root ausgeführt. Privilegien wurden nicht gelöscht, weil> Nov 25 10:22:31 ubuntu2004 Supervisord[40927]:2020-11-25 10:22:31,603 INFO Enthaltene zusätzliche Datei "/etc/supervisor/conf.d/do-clojure-web.conf " d> 25. November 10:22:31 Ubuntu2004 Supervisord [40927]:2020-11-25 10:22:31,608 INFO RPC-Schnittstelle 'Supervisor' initialisiert 25. November 10:22:31 Ubuntu2004 Supervisord [40927]:2020-11-25 10:22:31,608 CRIT Server 'unix_http_server' läuft ohne HTTP-Authentifizierung> 25. November 10:22:31 ubuntu2004 Supervisord [40927]:2020-11-25 10:22:31,609 INFO Supervisord gestartet mit PID 40927 25. November 10:22:32 Ubuntu2004 Supervisord[40927]:2020-11-25 10:22:32.612 INFO erzeugt:'do-clojure-web' mit PID 40946Nov 25 10:22:33 Ubuntu2004 Supervisord[40927]:2020-11-25 10:22 :33,615 INFO-Erfolg:do-clojure-web ist in den Zustand RUNNING gegangen, Prozess ist geblieben>

An diesem Punkt wird der Supervisor-Dienst gestartet und Ihre Anwendung lauscht auf Port 5000. Sie können dies mit dem folgenden Befehl überprüfen:

ss -antpl | grep 5000

Sie sollten die folgende Ausgabe erhalten:

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

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Nginx für Clojure-Anwendung konfigurieren

Als nächstes müssen Sie Nginx als Reverse-Proxy konfigurieren, um die Clojure-App zu bedienen. Erstellen Sie zunächst mit dem folgenden Befehl eine Konfigurationsdatei für den virtuellen Nginx-Host:

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

Fügen Sie die folgenden Zeilen hinzu:

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; Servername clojure.example.com; Standort / { Proxy_Pass http://http_backend; Proxy_http_Version 1.1; proxy_set_header Verbindung ""; 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; }}

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Aktivieren Sie dann den virtuellen Nginx-Host mit dem folgenden Befehl:

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

Überprüfen Sie als Nächstes Nginx mit dem folgenden Befehl auf Syntaxfehler:

nginx -t

Sie sollten die folgende Ausgabe erhalten:

nginx:Die Syntax der Konfigurationsdatei /etc/nginx/nginx.conf ist oknginx:Der Test der Konfigurationsdatei /etc/nginx/nginx.conf ist erfolgreich

Starten Sie abschließend den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl startet nginx neu

Wenn Sie fertig sind, können Sie mit dem Zugriff auf die Clojure-App fortfahren.

Zugriff auf die Clojure-Anwendung

Öffnen Sie nun Ihren Webbrowser und greifen Sie über die URL http://clojure.example.com auf die Clojure-Anwendung zu . Sie sollten das Dashboard der Clojure-Anwendung auf dem folgenden Bildschirm sehen:

Klicken Sie auf Standort hinzufügen Taste. Sie sollten den folgenden Bildschirm sehen:

Geben Sie Ihre gewünschten Werte ein und klicken Sie auf Senden Standort-Schaltfläche. Sie sollten den folgenden Bildschirm sehen:

Klicken Sie nun auf Alle Standorte anzeigen Taste. Sie sollten Ihren hinzugefügten Standort auf dem folgenden Bildschirm sehen:

Schlussfolgerung

Herzliche Glückwünsche! Sie haben die Clojure-App erfolgreich mit Nginx als Reverse-Proxy auf dem Ubuntu 20.04-Server bereitgestellt. Sie können jetzt versuchen, Ihre benutzerdefinierte Anwendung mit Clojure bereitzustellen.


Ubuntu
  1. So stellen Sie Node.js-Anwendungen mit pm2 und Nginx auf Ubuntu bereit

  2. So stellen Sie Modsecurity mit Nginx auf Ubuntu 20.04 LTS bereit

  3. Stellen Sie Modsecurity mit Nginx auf Ubuntu 20.04 LTS bereit

  4. So sichern Sie Nginx mit Letsencrypt unter Ubuntu 20.04

  5. So stellen Sie die Flask-Anwendung mit Nginx und Gunicorn unter Ubuntu 20.04 bereit

So installieren Sie OSClass mit Nginx unter Ubuntu 20.04

So stellen Sie eine Clojure-Webanwendung mit Nginx unter Ubuntu 20.04 bereit

So stellen Sie Ghost Blog mit Nginx unter Ubuntu 20.04 bereit

So installieren Sie Nginx mit ModSecurity unter Ubuntu 15.04

So installieren Sie Nextcloud 13 auf Ubuntu 16.04 mit Nginx

Wie stellt man die Laravel-Anwendung mit Nginx auf Ubuntu bereit?