Questo è un seguito alla mia domanda here. Ho creato un server domestico (solo il mio altro portatile con Ubuntu e Nginx) e voglio servire i file dei clandestini.Posso usare Clojure con nginx?
Sto chiedendo aiuto per capire come funziona questo processo. Mi dispiace a questo punto sono confuso e penso di dover ricominciare da capo. Sto facendo una nuova domanda perché voglio usare nginx
non lein ring server
, come suggerito nella risposta per quella domanda.
Prima ho avviato un progetto guestbook
con leiningen e ho eseguito lein ring server
e vedo "Hello World" a localhost:3000
. Per quanto ho capito, questo non ha nulla a che fare con nginx!
Come nginx entra in questo processo? All'inizio cercavo di creare un server proxy con nginx e anche quello funzionava, ma non sapevo come servire i file clojure con quella configurazione.
Questo è quello che ho nel mio file nginx.conf adattato da this answer:
upstream ring {
server 127.0.0.1:3000 fail_timeout=0;
}
server {
root /home/a/guestbook/resources/public;
# make site accessible from http://localhost
server_name localhost;
location/{
# first attempt to serve request as file
try_files $uri $uri/ @ring;
}
location @ring {
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_pass http://ring;
}
location ~ ^(assets|images|javascript|stylesheets|system)/ {
expires max;
add_header Cache-Control public;
}
}
quindi voglio utilizzare il mio dominio example.com
(non localhost); Come procedo a fare questo?
EDIT
Come da @noisesmith's comment farò scegliere di andare opzione uberjar Lein con. Come spiegato here, sembra molto facile creare uno:
$ lein uberjar
Unpacking clojure-1.1.0-alpha-20091113.120145-2.jar
Unpacking clojure-contrib-1.0-20091114.050149-13.jar
Compiling helloworld
[jar] Building jar: helloworld.jar
$ java -jar helloworld.jar
Hello world!
Mi può dirigere anche la documentazione giusta su come posso usare questo uberjar con nginx?
Ok, grazie. Questo mi dà una migliore comprensione. Ma come li metto in pratica? Ad esempio, ho trovato questo documento https://github.com/ddellacosta/Clojure-under-Jetty-and-Apache#rationale-and-other-approaches in cui l'autore elenca molti approcci diversi per la distribuzione delle applicazioni di clojure inclusa la sua soluzione (per Apache). Pensavo che ci sarebbe stato un modo standard per dispiegare. Sto anche considerando di passare a Python. Come principiante pensi che avrei un tempo più semplice per implementare Python? Grazie. – Zeynel
L'opzione più semplice è usare 'lein ring uberwar' e caricare il risultato su un beanstalk aws. Il secondo modo più semplice è usare 'lein uberjar' e caricare il risultato su un server Linux ed eseguirlo tramite' java -jar'. L'utilizzo di lein in produzione non semplifica le cose, perché richiede una toolchain di sviluppo separato sulla produzione e può portare a imprevedibilità perché la risoluzione delle dipendenze e il packaging non si verificano sulla macchina di sviluppo. – noisesmith
Per quanto riguarda Pyton, non mi fiderei di Python direttamente parlando al web più di quanto mi fiderei di clojure parlando direttamente al web, e la migliore pratica sarebbe quella di usare nginx o un equivalente di fronte ad esso anche in quel caso. La creazione di un uberjar risulta in un singolo file che esegue la tua app, senza bisogno di altre configurazioni o installazioni oltre alla jvm. Python non offre nulla di più semplice. – noisesmith