Clojure ist eine moderne Allzweck-Programmiersprache für die JVM, die sich auf die gleichzeitige Programmierung in Betriebssystemen konzentriert. Clojure ermöglicht es Ihnen, die vorhandene JVM-Infrastruktur zu nutzen, einschließlich Tools, Bibliotheken und Anwendungsserver.
Dieser Leitfaden führt Sie durch den Prozess der Bereitstellung einer einfachen Webanwendung in Clojure mit Supervisor und Nginx.
Anforderungen
- Ein Server mit Ubuntu 16.04.
- Ein Root-Passwort-Setup auf Ihrem Server.
Erste Schritte
Bevor Sie beginnen, wird empfohlen, Ihr Paket mit dem folgenden Befehl auf die neueste Version zu aktualisieren:
apt-get update -y
apt-get upgrade -y
Sobald alle Pakete aktualisiert sind, starten Sie Ihren Server neu, um alle diese Änderungen zu übernehmen.
Neustart
Installieren Sie als Nächstes einige erforderliche Pakete wie Git, Curl und Java mit dem folgenden Befehl auf Ihrem Server:
apt-get install git curl openjdk-8-jre-headless -y
Sobald alle erforderlichen Pakete installiert sind, können Sie die Version von JAVA mit dem folgenden Befehl überprüfen:
Java-Version
Sie sollten die JAVA-Version in der folgenden Ausgabe sehen
openjdk-Version „1.8.0_131“OpenJDK-Laufzeitumgebung (Build 1.8.0_131-8u131-b11-2-b11)OpenJDK 64-Bit-Server-VM (Build 25.131-b11, gemischter Modus)
Sobald Sie fertig sind, können Sie mit der Installation von Nginx und Supervisor fortfahren.
Nginx und Supervisor installieren
Standardmäßig sind Nginx und Supervisor im Ubuntu 16.04-Repository verfügbar. Sie können sie installieren, indem Sie einfach den folgenden Befehl ausführen:
apt-get install nginx supervisor -y
Starten Sie nach Abschluss der Installation den Nginx- und Supervisor-Dienst und ermöglichen Sie ihnen, beim Booten mit dem folgenden Befehl zu starten:
systemctl start nginx
systemctl start supervisor
systemctl enable nginx
systemctl enable supervisor
Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Clojure-App herunterladen
Zuerst müssen Sie das Clojure-Beispielprojekt aus dem Git-Repository herunterladen. Sie können es ganz einfach mit dem Befehlszeilendienstprogramm git clone herunterladen, wie unten gezeigt:
git-Klon https://github.com/do-community/do-clojure-web.git
Der nächste Schritt besteht darin, dieses Clojure-Projekt mit Leiningen zu kompilieren und auszuführen. Leiningen ist ein Abhängigkeitsverwaltungs- und Build-Automatisierungstool, das zum Kompilieren der Clojure-App verwendet werden kann. Sie können es mit dem Curl-Befehl wie unten gezeigt herunterladen:
curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein -o /usr/bin/lein
Geben Sie als Nächstes dem heruntergeladenen Tool mit dem folgenden Befehl die richtigen Berechtigungen:
chmod 755 /usr/bin/lein
Führen Sie nun den folgenden Befehl aus, um das Closure-Projekt zu kompilieren:
cd do-clojure-web
lein uberjar
Sie sollten die folgende Ausgabe sehen:
WARNUNG:Sie werden derzeit als root ausgeführt; wahrscheinlich aus Versehen. Drücken Sie Strg-C zum Abbrechen oder Enter, um als Root fortzufahren. Legen Sie LEIN_ROOT fest, um diese Warnung zu deaktivieren. Leiningen wird jetzt nach /root/.lein/self-installs/leiningen-2.7.1-standalone.jar heruntergeladen ... % Gesamt % Empfangen % Xferd Durchschnittliche Geschwindigkeit Zeit Zeit Zeit Aktueller Dload-Upload Gesamtverbrauch Verbleibende Geschwindigkeit100 618 0 618 0 0 309 0 --:--:-- 0:00:02 --:--:-- 207100 14.6M 100 14.6M 0 0 326k 0 0:00:46 0:00:46 --:--:-- 279kAbrufen von lein-ring/lein-ring/0.8.13/lein-ring-0.8.13.pom von clojarsAbrufen von org/ clojure/clojure/1.2.1/clojure-1.2.1.pom von centralRetrieving org/clojure/data.xml/0.0.6/data.xml-0.0.6.pom von centralRetrieving org/clojure/pom.contrib/0.0. 25/pom.contrib-0.0.25.pom von centralRetrieving org/sonatype/oss/oss-parent/5/oss-parent-5.pom von centralRetrieving org/clojure/clojure/1.3.0/clojure-1.3.0. pom aus der Zentrale Abrufen von leinjacker/leinjacker/0.4.1/leinjacker-0.4.1.pom aus c lojarsOrg/clojure/core.contracts/0.0.1/core.contracts-0.0.1.pom von Central abrufenOrg/clojure/pom.contrib/0.0.26/pom.contrib-0.0.26.pom von Central abrufenOrg/clojure abrufen /core.unify/0.5.3/core.unify-0.5.3.pom von centralRetrieving org/clojure/clojure/1.4.0/clojure-1.4.0.pom von centralRetrieving org/clojure/clojure/1.2.1/clojure -1.2.1.jar vom zentralen Abruf von org/clojure/core.contracts/0.0.1/core.contracts-0.0.1.jar vom zentralen Abruf von org/clojure/data.xml/0.0.6/data.xml-0.0.6 .jar von CentralAbrufen von org/clojure/core.unify/0.5.3/core.unify-0.5.3.jar von CentralAbrufen von org/clojure/clojure/1.2.1/clojure-1.2.1.jar von Clojars
Sobald das Clojure-Projekt kompiliert ist, können Sie mit dem nächsten Schritt fortfahren.
Clojure-Web-App-Umgebung einrichten
Als nächstes müssen Sie eine Verzeichnisstruktur für die Clojure-Webanwendung erstellen. Sie können dies mit dem folgenden Befehl tun:
mkdir -p /var/www/html/do-clojure-web/app/db
Als nächstes kopieren Sie die Anwendungsdateien von Clojure in das obige Verzeichnis:
cp /root/do-clojure-web/target/do-clojure-web-0.1.0-standalone.jar /var/www/html/do-clojure-web/app/
Geben Sie als Nächstes mit dem folgenden Befehl die richtigen Berechtigungen für das Clojure-App-Verzeichnis:
chown -R www-data:www-data /var/www/html/do-clojure-web/
Erstellen Sie als Nächstes mit dem folgenden Befehl eine Symbolink der Clojure-Webanwendung:
cd /var/www/html/do-clojure-web/app/
ln -s do-clojure-web-0.1.0-standalone.jar do-clojure-web.jar
Die Clojure-Web-App ist jetzt einsatzbereit. Sie können mit dem folgenden Befehl überprüfen, ob es ausgeführt wird oder nicht:
java -jar do-clojure-web.jar
Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe sehen:
2017-10-01 10:30:48.349:INFO:oejs.Server:jetty-7.x.y-SNAPSHOT2017-10-01 10:30:48.590:INFO:oejs.AbstractConnector:Started [email protected]:5000
Nginx und Supervisor konfigurieren
Als Nächstes müssen Sie Supervisor konfigurieren, um Clojure-Anwendungen als Dienst zu verwalten. Sie können dies tun, indem Sie die Datei do-clojure-web.conf im Supervisor-Konfigurationsverzeichnis erstellen, wie unten gezeigt:
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/log/do-clojure-web.app.log
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Als Nächstes müssen Sie Nginx auch für die Verwendung als Reverse-Proxy konfigurieren. Weil die Clojure-Webanwendung nur Verbindungen vom localhost akzeptiert. Sie können mit Nginx von einem entfernten Standort aus darauf zugreifen. Dazu müssen Sie die Nginx-Standardkonfigurationsdatei konfigurieren:
nano /etc/nginx/sites-available/default
Ändern Sie die Datei wie unten gezeigt:
upstream http_backend { server 127.0.0.1:5000; keepalive 32;}server {listen 80 default_server; hören [::]:80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; Servername _; 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, und starten Sie dann den Nginx- und Supervisor-Dienst neu, um alle Änderungen zu übernehmen:
systemctl restart nginx
systemctl restart supervisor
Sie können den Status von Nginx und Supervisor mit dem folgenden Befehl überprüfen:
Systemctl Status Supervisor
Wenn alles in Ordnung ist, sollten Sie die folgende Ausgabe sehen:
systemctl status nginx
Ausgabe:
Zugriff auf die Clojure-Web-App
Sobald alles richtig konfiguriert ist, ist es an der Zeit, über einen Webbrowser auf die Clojure-Webanwendung zuzugreifen.
Öffnen Sie Ihren Webbrowser und geben Sie die URL http://Ihre-IP-Adresse ein. Sie werden wie unten gezeigt auf die Startseite der Clojure-Webanwendung weitergeleitet:
Klicken Sie nun auf Standort hinzufügen klicken, sollten Sie das folgende Bild sehen:
Geben Sie hier die Werte im x-Wert- und im y-Wert-Feld ein und klicken Sie dann auf den Standort übermitteln Taste. Sie können jetzt Ihre eingereichten Standorte anzeigen, indem Sie auf Alle Standorte anzeigen klicken Taste. Sie sollten das folgende Bild sehen:
Schlussfolgerung
Im obigen Artikel haben wir gelernt, wie man die Clojure-Webanwendung mit Supervisor und lein bereitstellt. Wir haben auch gelernt, wie man von einem entfernten Standort auf eine Clojure-Webanwendung zugreift, indem man Nginx als Reverse-Proxy-Server einrichtet. Ich hoffe, Sie können Ihre benutzerdefinierte Anwendung jetzt problemlos mit Clojure, Supervisor und lein bereitstellen. Fühlen Sie sich frei, alles zu fragen, wenn Sie Fragen haben.