Kann ich Clojure mit nginx verwenden?

8

Dies ist ein Follow-up zu meiner Frage hier . Ich habe einen Home-Server eingerichtet (nur meinen anderen Laptop mit Ubuntu und Nginx) und ich möchte Clojure-Dateien bereitstellen.

Ich bitte um Hilfe, um zu verstehen, wie dieser Prozess funktioniert. Es tut mir leid, an diesem Punkt bin ich verwirrt und ich denke, ich muss neu beginnen. Ich stelle eine neue Frage, weil ich nginx nicht lein ring server verwenden möchte, wie in der Antwort für diese Frage vorgeschlagen.

Zuerst habe ich mit leiningen ein Projekt guestbook gestartet und ich habe lein ring server ausgeführt und ich sehe "Hello World" bei localhost:3000 . Soweit ich verstehe, hat das nichts mit nginx zu tun!

Wie kommt nginx in diesen Prozess? Zuerst habe ich versucht, einen Proxy-Server mit Nginx zu erstellen, und das hat auch funktioniert, aber ich wusste nicht, wie Clojure-Dateien mit diesem Setup dienen.

Das habe ich in meiner Datei nginx.conf, die von dieser Antwort angepasst wurde:

%Vor%

Also möchte ich meine Domain example.com (nicht localhost) verwenden; Wie gehe ich dabei vor?

BEARBEITEN

Laut @ noisesmith's Kommentar werde ich mich entscheiden, mitzugehen Lein Uberjar Option. Wie hier hier erklärt wird, scheint es sehr einfach zu sein:

%Vor%

Können Sie mir auch die richtige Dokumentation geben, wie ich dieses Uberjar mit nginx verwenden kann?

    
Zeynel 18.12.2013, 19:13
quelle

2 Antworten

7

Für den Anfang verwenden Sie lein nicht, um Dinge in der Produktion auszuführen. Sie können lein uberjar verwenden, um eine JAR-Datei mit allen bereitzustellenden Deps zu erstellen, und java -jar , um die App vom resultierenden JAR auszuführen. Es gibt auch die Möglichkeit, lein ring uberwar auszuführen, um ein Kriegsarchiv zu erstellen, das innerhalb von Tomcat ausgeführt wird, was einige andere Vorteile bietet (wie Log-Rotation und Integration mit /etc/init.d als Dienst etc. auf den meisten Linux-Systemen).

nginx befindet sich vor Ihrer App auf Port 80. Es wird den Inhalt durch die Proxys Ihrer App bereitstellen. Dies ist nützlich, da nginx viele Funktionen (insbesondere bezüglich der Sicherheit) bietet Sie müssen dann nicht in Ihrer eigenen App implementieren, einschließlich optionaler Integration mit https und selinux Integration. Die Verwendung von nginx vor Ihrer App verhindert auch, dass Sie Java als root ausführen müssen (normalerweise kann nur der Benutzer root Port 80 verwenden). Außerdem können Sie statische Ressourcen direkt von nginx bereitstellen lassen, anstatt sie von Ihrer App aus bereitzustellen.

    
noisesmith 18.12.2013, 19:36
quelle
11

Bitte versuchen Sie das Nginx-Clojure-Modul . Sie können clojure Ringhandler mit Nginx ohne Java Web Server ausführen, z. Anlegesteg.

    
xfeep 09.01.2014 11:52
quelle

Tags und Links