2016-12-27 16 views
2

我正面臨Nginx未啓動的問題。按照步驟 - 也提到link - > 我下載了包含nginx-clojure-0.4.4的.zip文件,並將其解壓縮到C:\ nginx中。我.conf文件看起來像如下:Nginx與Windows 10上的Clojure/Java - 未啓動

daemon off; 

#master_process off; 
#user nobody; 
worker_processes 1; 
error_log logs/error.log; 
pid  logs/nginx.pid; 
events { 
    worker_connections 1024; 
} 
http { 
    include  mime.types; 
    default_type application/octet-stream; 
    sendfile  on; 
    keepalive_timeout 65; 
    #jvm_path auto; 
    jvm_path 'C:/Program Files/Java/jdk1.8.0_91/jre/bin/server/jvm.dll'; 
    jvm_var my_other_jars 'C:/nginx-clojure-0.4.4/jars'; 
    jvm_classpath "#{my_other_jars}/*.jar;libs/*"; 
    #jvm_options "-Djava.class.path=jars/nginx-clojure-0.4.0.jar;#{my_other_jars}"; 
    jvm_options "-Xms1024m"; 
    jvm_options "-Xmx1024m"; 
    server { 
     #listen  8080; 
     listen  9091; 
     server_name localhost; 
     location/{ 
      root html; 
      index index.html index.htm; 
     } 
    location /java { 
     content_handler_type 'java'; 
     content_handler_name 'mytest.HelloService'; 
    } 
     error_page 500 502 503 504 /50x.html; 
     location = /50x.html { 
      root html; 
     } 

     location /clojure { 
      handler_type 'clojure'; 
      handler_code ' 
         (fn[req] 
          { 
          :status 200, 
          :headers {"content-type" "text/plain"}, 
          :body "Hello Clojure & Nginx!" 
          }) 
      '; 
     }  
    } 
} 

現在我運行Nginx的-win64.exe如下:

Windows PowerShell 
Copyright (C) 2016 Microsoft Corporation. All rights reserved. 

PS C:\WINDOWS\system32> cd c:\nginx 
PS C:\nginx> .\nginx-win64.exe 
PS C:\nginx> 

當我去到本地主機:9091,頁面沒有加載nginx的意義沒有開始。

這裏是.log文件的快照:

java.lang.NoClassDefFoundError: nginx/clojure/MiniConstants 
Caused by: java.lang.ClassNotFoundException: nginx.clojure.MiniConstants 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
2016/12/26 20:27:48 [error] 8400#4396: can not initialize jvm memory util 
2016/12/26 20:27:48 [error] 8400#4396: jvm start times 1 
Exception in thread "main" 2016/12/26 20:27:48 [error] 8408#2548: jvm may be mad for wrong options! See hs_err_pid****.log for detail! restarted 2 
2016/12/26 20:27:48 [error] 8408#2548: we try quit master now! 
2016/12/26 20:27:48 [crit] 8408#2548: ngx_http_clojure_quit_master, file ("C:\nginx\nginx-win64.exe"), arg (""C:\nginx\nginx-win64.exe" -s stop") 
2016/12/26 20:27:48 [error] 8584#8808: jvm may be mad for wrong options! See hs_err_pid****.log for detail! restarted 3 
2016/12/26 20:27:48 [error] 8584#8808: we try quit master now! 
2016/12/26 20:27:48 [crit] 8584#8808: ngx_http_clojure_quit_master, file ("C:\nginx\nginx-win64.exe"), arg (""C:\nginx\nginx-win64.exe" -s stop") 
2016/12/26 20:27:48 [error] 2580#8744: CreateFile() "C:\nginx/logs/nginx.pid" failed (2: The system cannot find the file specified) 

以下是後@dscastro評論error.log文件:

2017/01/03 14:24:58 [error] 2552#5560: invalid java content_handler code : mytest.HelloService 
Exception in thread "main" 2017/01/03 14:24:59 [error] 3304#4676: jvm may be mad for wrong options! See hs_err_pid****.log for detail! restarted 2 
2017/01/03 14:24:59 [error] 3304#4676: we try quit master now! 
2017/01/03 14:24:59 [crit] 3304#4676: ngx_http_clojure_quit_master, file ("C:\nginx\nginx-win64.exe"), arg (""C:\nginx\nginx-win64.exe" -s stop") 
2017/01/03 14:24:59 [error] 4584#5632: jvm may be mad for wrong options! See hs_err_pid****.log for detail! restarted 3 
2017/01/03 14:24:59 [error] 4584#5632: we try quit master now! 
2017/01/03 14:24:59 [crit] 4584#5632: ngx_http_clojure_quit_master, file ("C:\nginx\nginx-win64.exe"), arg (""C:\nginx\nginx-win64.exe" -s stop") 
2017/01/03 14:24:59 [error] 7172#5508: CreateFile() "C:\nginx/logs/nginx.pid" failed (2: The system cannot find the file specified) 
+1

nginx不能在Windows上生產。讓我們嘗試添加jvm和clojure,***什麼可能會出錯?!*** – cnst

回答

3

很簡單......它找不到類nginx.clojure.MiniConstants,因爲它不在你的類路徑中。

此類放入nginx-clojure-0.4.4.jar,所以改變你的jvm_classpath到:

jvm_classpath "jars/nginx-clojure-0.4.4.jar;#{my_other_jars}/*.jar;libs/*;"; 

...和錯誤應該消失。 :)

+0

太棒了..謝謝!它解決了找不到的問題。有一件事仍然存在,即無法創建.pid文件。下面是error.log輸出: '2017/01/03 14:24:58 [error] 2552#5560:invalid java content_handler code:mytest.HelloService ::::::::::: 2017/01/03 14:24:59 [error] 7172#5508:CreateFile()「C:\ nginx/logs/nginx.pid」失敗(2:系統找不到指定的文件)' –

+0

終於奏效了。我不得不將mytest.jar添加到類路徑中。現在類路徑如下: 'jvm_classpath「jars/mytest.jar; jars/nginx-clojure-0.4.4.jar;#{my_other_jars}/*。jar; libs/*;」;' –

+0

不客氣! :) – bosco