2012-02-20 32 views
6

Tôi có cảm giác mình đã bỏ lỡ điều gì đó hiển nhiên ở đây, nhưng tôi không biết bắt đầu từ đâu.404s khi triển khai một cuộc chiến tranh noir đến cầu tàu trên vắt

Tôi có một ứng dụng noir tươi, tạo thusly:

$ lein noir new hiworld 

tôi thêm một handler trang mới để 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})) 

tôi đặt project.clj lên cho vòng:

(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) 

Kiểm tra nó hoạt động tại địa phương:

$ 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) 

tôi xây dựng một cuộc chiến tranh:

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

Tất cả tốt cho đến nay. Bây giờ, tôi triển khai nó đến cầu cảng:

$ 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 

Nhưng:

$ 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) 

tôi đã bỏ lỡ gì? Theo như tôi có thể nói, đó là tất cả những gì tôi cần làm để triển khai một ứng dụng web tầm thường đến cầu cảng, nhưng rõ ràng là tôi đã có một cái gì đó sai ở đây. Tôi không nhớ khởi động lại, vì vậy tôi không nghĩ rằng Tôi cần phải xác định bối cảnh của riêng mình - hay tôi?

CẬP NHẬT

Tôi đã theo this chuỗi các hướng dẫn để tạo ra một đơn giản "hello world" cuộc chiến không liên quan đến clojure ở tất cả, và nó hoạt động như mong đợi, vì vậy có thể thấy rằng có điều gì đó không Khá đúng với ngăn xếp clojure.

CẬP NHẬT LẠI

tôi tạo ra các ứng dụng vòng đơn giản nhất có thể là một cuộc chiến tranh độc lập và triển khai nó. Điều này làm việc, vì vậy nó trông giống như nó là một cái gì đó noir cụ thể.

CẬP NHẬT lần thứ ba

tôi tạo ra và triển khai một ứng dụng compojure hello-thế giới, mà làm việc như mong đợi.

Trả lời

2

Tôi cũng gặp sự cố này. Tôi tìm thấy giải pháp trên danh sách gửi thư Noir here.

Trong server.clj Tôi đã làm hai việc: Tôi đã xóa cuộc gọi (server/loadviews) và thêm chế độ xem của tôi vào các không gian tên được yêu cầu.

Sau đó, tôi đã tạo dự án của mình bằng lệnh lein ring uberwar warname.war.

3

Trong tệp .war, máy chủ/lượt xem không hoạt động vì không thể tìm thấy tệp vật lý trong chiến tranh. Trong hiworld/server.clj, chỉ cần yêu cầu tất cả các không gian tên cung cấp các khung nhìn.

Điều này không được giải thích trong tài liệu nhưng tôi đã tìm thấy một số mailing list thread giải thích những gì là sai.

Các vấn đề liên quan