2012-02-20 1 views
6

У меня такое чувство, что я пропустил что-то очевидное здесь, но я не знаю, с чего начать.404s при развертывании войны noir с причалом на сжатии

У меня есть свежий нуар приложение, созданные таким образом:

$ 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 последовательность команд для создания простого «привет мир» войну не с участием Clojure на всех, и он работает, как ожидалось, поэтому, казалось бы, что там что-то не Совершенно верно с помощью стека clojure.

ОБНОВЛЕНО СНОВА

Я создал простейшее кольцо приложения в качестве автономной войны и развернуть его. Это сработало, так что похоже, что это что-то вроде noir.

ОБНОВЛЕНО третий раз

я создал и развернул привет-приложение мира compojure, который работал, как ожидалось.

ответ

2

У меня также была эта проблема. Я нашел решение в списке рассылки Noir here.

В server.clj Я сделал две вещи: я удалил вызов (server/loadviews) и добавил свои представления в требуемые пространства имен.

Затем я построил свой проект командой lein ring uberwar warname.war.

3

В .war файле, сервер/load-views не работает, потому что он не может найти физические файлы в войне. В hiworld/server.clj просто требуются все пространства имен, предоставляющие представления.

Это не объяснено в документах, но я нашел mailing list thread, объяснив, что не так.

 Смежные вопросы

  • Нет связанных вопросов^_^