這是跟我的問題here。我建立了一個家庭服務器(只是我的其他筆記本電腦運行Ubuntu和Nginx),我想服務clojure文件。我可以在Nginx中使用Clojure嗎?
我在尋求幫助,瞭解這個過程如何工作。我很抱歉,在這一點上我很困惑,我想我需要重新開始。我正在問一個新問題,因爲我想使用nginx
而不是lein ring server
,正如該問題的答案中所建議的那樣。
首先我開始一個項目guestbook
與leiningen和我跑lein ring server
,我看到「Hello World」在localhost:3000
。據我瞭解,這與nginx無關!
nginx如何進入這個過程?起初,我試圖用nginx創建一個代理服務器,這也起到了作用,但我不知道如何使用該設置來提供clojure文件。
這是我在改編自this answer nginx.conf文件:
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;
}
}
所以我想用我的域名example.com
(不是localhost);我該如何去做這件事?
編輯
按@noisesmith's comment我會選擇去與雷音uberjar選項。作爲解釋here,它似乎很容易地創建一個:
$ 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!
你能直也我我如何可以使用此uberjar nginx的正確文檔?
好的,謝謝。這給了我一個更好的理解。但是,我怎麼把這些實踐?例如,我發現這個文檔https://github.com/ddellacosta/Clojure-under-Jetty-and-Apache#rationale-and-other-approaches其中作者列出了許多不同的方法來部署clojure應用程序,包括他自己的解決方案(對於Apache)。我認爲會有一種標準的部署方式。我也在考慮切換到Python。作爲一名初學者,你認爲我會更容易部署Python嗎?謝謝。 – Zeynel
最簡單的選擇是使用'lein ring uberwar'並將結果上傳到aws beanstalk。其次最簡單的方法是使用'lein uberjar'並將結果上傳到Linux服務器並通過'java -jar'運行。在生產環境中使用lein並不能簡化事情,因爲它需要在生產環境中使用單獨的開發工具鏈,並且可能導致不可預測性,因爲依賴關係解析和打包不會在您的開發機器上發生。 – noisesmith
關於pyton,我不會相信python直接與web交談,我不會相信clojure會直接與web交談,並且最好的做法是在這種情況下也使用nginx或其前面的等價物。製作uberjar會生成一個運行應用程序的文件,除了jvm之外,不需要其他配置或安裝。 Python沒有提供任何簡單的東西。 – noisesmith