2012-02-20 53 views
6

我有一種感覺,我已經錯過了在這裏明顯的東西,但我不知道從哪裏開始尋找。404s當部署黑色戰爭碼頭擠壓

我有一個新的黑色的應用程序,創建正是如此:

$ lein noir new hiworld 

我添加一個新的頁面處理程序的src/hiworld/server.clj:

(ns hiworld.server 
    (:require [noir.server :as server])) 
(server/load-views "src/hiworld/views/") 

(def handler (server/gen-handler {:mode :dev 
            :ns 'hiworld})) 

我設置project.clj彌補環:

(defproject hiworld "0.1.0-SNAPSHOT" 
      :description "FIXME: write this!" 
      :dependencies [[org.clojure/clojure "1.3.0"] 
          [noir "1.2.2-SNAPSHOT"]] 
      :dev-dependencies [[lein-ring "0.5.4"]] 
      :ring {:handler hiworld.server/handler} 
      :main hiworld.server) 

檢查本地工作:

$ lein deps 
$ lein ring server-headless 
# elsewhere 
$ curl -I localhost:3000/welcome 
HTTP/1.1 200 OK 
Date: Mon, 20 Feb 2012 08:51:15 GMT 
Set-Cookie: ring-session=ef00a7ad-2061-4026-9d94-3ed86ec8c46c;Path=/ 
Content-Type: text/html; charset=utf-8 
Content-Length: 0 
Server: Jetty(6.1.25) 

我建一個戰爭:

$ lein ring uberwar 
# builds hiworld-0.1.0-SNAPSHOT-standalone.war 

所有好爲止。現在,我把它部署到碼頭:

$ sudo apt-get install jetty libjetty-extra 
$ sudo cp hiworld-0.1.0-SNAPSHOT-standalone.war /usr/share/jetty/webapps/root.war 
$ sudo chown jetty:adm /usr/share/jetty/webapps/root.war 
$ sudo mv /usr/share/jetty/webapps/root /usr/share/jetty/webapps/root-orig 
$ sudo /etc/init.d/jetty restart 

但是:

$ curl -I localhost:8080/welcome 
HTTP/1.1 404 Not Found 
Date: Mon, 20 Feb 2012 08:59:27 GMT 
Set-Cookie: ring-session=c255da15-6cbd-4d2c-8e17-9d120918bde9;Path=/ 
Content-Type: text/html; charset=utf-8 
Content-Length: 363 
Server: Jetty(6.1.24) 

我錯過了什麼?據我所知,這應該是所有我需要做的部署一個簡單的網絡應用程序碼頭,但顯然我在這裏有什麼問題。我不介意重啓,所以我不認爲我需要定義我自己的上下文 - 或者我?

UPDATE

我跟着指令this序列來創建一個簡單的「Hello World」戰爭涉及的Clojure可言,和它的作品如預期,所以它似乎有什麼東西不相當正確與clojure堆棧。

再次更新

我創建了最簡單的環應用作爲獨立的戰爭和部署它。這工作,所以它看起來像黑色特定的東西。

更新了第三次

我創建和部署一個hello世界的Compojure應用程序,這和預期一樣。

回答

2

我也有這個問題。我在Noir郵件列表here上找到了解決方案。

server.clj我做了兩件事:我刪除了(server/loadviews)調用,並將我的視圖添加到所需的名稱空間。

然後我用命令lein ring uberwar warname.war建立了我的項目。

3

在.war文件中,server/load-views不起作用,因爲它無法在戰爭中找到物理文件。在hiworld/server.clj中,只需要所有提供視圖的名稱空間。

這不是在文檔中解釋,但我發現一個mailing list thread解釋什麼是錯的。