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