|
1 | 1 | <h1>
|
2 |
| -<a name="user-content-quick-start" class="anchor" href="#quick-start" aria-hidden="true"><span class="octicon octicon-link"></span></a>Quick Start</h1> |
| 2 | +<a id="user-content-quick-start" class="anchor" href="#quick-start" aria-hidden="true"><span class="octicon octicon-link"></span></a>Quick Start</h1> |
3 | 3 |
|
4 | 4 | <h2>
|
5 |
| -<a name="user-content-download" class="anchor" href="#download" aria-hidden="true"><span class="octicon octicon-link"></span></a>Download</h2> |
| 5 | +<a id="user-content-download" class="anchor" href="#download" aria-hidden="true"><span class="octicon octicon-link"></span></a>Download</h2> |
6 | 6 |
|
7 | 7 | <ol>
|
8 |
| -<li>Download the latest binaries release v0.2.6 from <a href="https://sourceforge.net/projects/nginx-clojure/files/">here</a>. </li> |
| 8 | +<li>Download the latest binaries release v0.2.7 from <a href="https://sourceforge.net/projects/nginx-clojure/files/">here</a>. </li> |
9 | 9 | <li>Unzip the zip file downloaded then rename the file <code>nginx-${os-arc}</code> to <code>nginx</code>, eg. for linux is <code>nginx-linux-x64</code>
|
10 | 10 | </li>
|
11 | 11 | </ol>
|
12 | 12 |
|
13 | 13 | <h2>
|
14 |
| -<a name="user-content-configuration" class="anchor" href="#configuration" aria-hidden="true"><span class="octicon octicon-link"></span></a>Configuration</h2> |
| 14 | +<a id="user-content-configuration" class="anchor" href="#configuration" aria-hidden="true"><span class="octicon octicon-link"></span></a>Configuration</h2> |
15 | 15 |
|
16 | 16 | <ol>
|
17 | 17 | <li>Open conf/nginx.conf file</li>
|
18 | 18 | <li>
|
19 | 19 | <p>Setting JVM path and class path within <code>http {</code> block in nginx.conf</p>
|
20 | 20 |
|
21 |
| -<div class="highlight highlight-nginx"><pre><span class="c1">### jvm dynamic library path</span> |
22 |
| -<span class="k">jvm_path</span> <span class="s">'/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/libjvm.so'</span><span class="p">;</span> |
| 21 | +<div class="highlight highlight-nginx"><pre><span class="pl-c">### jvm dynamic library path</span><span class="pl-pdv"></span> |
| 22 | +<span class="pl-pdv">jvm_path <span class="pl-s1">'/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/libjvm.so'</span>;</span> |
23 | 23 |
|
24 |
| -<span class="c1">### my app jars e.g. clojure-1.5.1.jar , groovy-2.3.4.jar ,etc.</span> |
25 |
| -<span class="k">jvm_var</span> <span class="s">my_other_jars</span> <span class="s">'my_jar_dir/clojure-1.5.1.jar'</span><span class="p">;</span> |
| 24 | +<span class="pl-c">### my app jars e.g. clojure-1.5.1.jar , groovy-2.3.4.jar ,etc.</span> |
| 25 | +<span class="pl-pdv">jvm_var my_other_jars <span class="pl-s1">'my_jar_dir/clojure-1.5.1.jar'</span>;</span> |
26 | 26 |
|
27 |
| -<span class="c1">### my app classpath, windows user should use ';' as the separator</span> |
28 |
| -<span class="k">jvm_options</span> <span class="s">"-Djava.class.path=jars/nginx-clojure-0.2.5.jar:</span><span class="c1">#{my_other_jars}";</span> |
29 |
| -</pre></div> |
| 27 | +<span class="pl-c">### my app classpath, windows user should use ';' as the separator</span><span class="pl-pdv"></span> |
| 28 | +<span class="pl-pdv">jvm_options <span class="pl-s1">"-Djava.class.path=jars/nginx-clojure-0.2.5.jar:#{my_other_jars}"</span>;</span></pre></div> |
30 | 29 | </li>
|
31 | 30 | <li>
|
32 | 31 | <p>Setting inline Http Service Handler</p>
|
33 | 32 |
|
34 | 33 | <p>For Clojure:</p>
|
35 | 34 |
|
36 | 35 | <div class="highlight highlight-nginx"><pre>
|
37 |
| - <span class="k">location</span> <span class="s">/clojure</span> <span class="p">{</span> |
38 |
| - <span class="kn">handler_type</span> <span class="s">'clojure'</span><span class="p">;</span> |
39 |
| - <span class="kn">handler_code</span> <span class="s">'</span> |
40 |
| - <span class="s">(fn[req]</span> |
41 |
| - <span class="p">{</span> |
42 |
| - <span class="kn">:status</span> <span class="mi">200</span><span class="s">,</span> |
43 |
| - <span class="p">:</span><span class="s">headers</span> <span class="p">{</span><span class="kn">"content-type"</span> <span class="s">"text/plain"</span><span class="err">}</span><span class="s">,</span> |
44 |
| - <span class="p">:</span><span class="s">body</span> <span class="s">"Hello</span> <span class="s">Clojure</span> <span class="s">&</span> <span class="s">Nginx!"</span> |
45 |
| - <span class="err">}</span><span class="s">)</span> |
46 |
| - <span class="s">'</span><span class="p">;</span> |
47 |
| - <span class="p">}</span> |
48 |
| -</pre></div> |
| 36 | + <span class="pl-s">location</span> /clojure { |
| 37 | + <span class="pl-pdv">handler_type <span class="pl-s1">'clojure'</span>;</span> |
| 38 | + <span class="pl-pdv">handler_code <span class="pl-s1">' </span></span> |
| 39 | +<span class="pl-pdv"><span class="pl-s1"> (fn[req]</span></span> |
| 40 | +<span class="pl-pdv"><span class="pl-s1"> {</span></span> |
| 41 | +<span class="pl-pdv"><span class="pl-s1"> :status 200,</span></span> |
| 42 | +<span class="pl-pdv"><span class="pl-s1"> :headers {"content-type" "text/plain"},</span></span> |
| 43 | +<span class="pl-pdv"><span class="pl-s1"> :body "Hello Clojure & Nginx!"</span></span> |
| 44 | +<span class="pl-pdv"><span class="pl-s1"> })</span></span> |
| 45 | +<span class="pl-pdv"><span class="pl-s1"> '</span>;</span> |
| 46 | + }</pre></div> |
49 | 47 |
|
50 | 48 | <p>For Groovy:</p>
|
51 | 49 |
|
52 | 50 | <div class="highlight highlight-nginx"><pre>
|
53 |
| - <span class="k">location</span> <span class="s">/groovy</span> <span class="p">{</span> |
54 |
| - <span class="kn">handler_type</span> <span class="s">'groovy'</span><span class="p">;</span> |
55 |
| - <span class="kn">handler_code</span> <span class="s">'</span> |
56 |
| - <span class="s">import</span> <span class="s">nginx.clojure.java.NginxJavaRingHandler</span><span class="p">;</span> |
57 |
| - <span class="kn">import</span> <span class="s">java.util.Map</span><span class="p">;</span> |
58 |
| - <span class="kn">public</span> <span class="s">class</span> <span class="s">HelloGroovy</span> <span class="s">implements</span> <span class="s">NginxJavaRingHandler</span> <span class="p">{</span> |
59 |
| - <span class="kn">public</span> <span class="s">Object[]</span> <span class="s">invoke(Map<String,</span> <span class="s">Object></span> <span class="s">request)</span><span class="p">{</span> |
60 |
| - <span class="kn">return</span> <span class="s">[200,</span> <span class="s">//http</span> <span class="s">status</span> <span class="mi">200</span> |
61 |
| - <span class="s">["Content-Type":"text/html"],</span> <span class="s">//headers</span> <span class="s">map</span> |
62 |
| - <span class="s">"Hello,</span> <span class="s">Groovy</span> <span class="s">&</span> <span class="s">Nginx!"]</span><span class="p">;</span> <span class="kn">//response</span> <span class="s">body</span> <span class="s">can</span> <span class="s">be</span> <span class="s">string,</span> <span class="s">File</span> <span class="s">or</span> <span class="s">Array/Collection</span> <span class="s">of</span> <span class="s">them</span> |
63 |
| - <span class="err">}</span> |
64 |
| - <span class="err">}</span> |
65 |
| - <span class="s">'</span><span class="p">;</span> |
66 |
| - <span class="p">}</span> |
67 |
| -</pre></div> |
| 51 | + <span class="pl-s">location</span> /groovy { |
| 52 | + <span class="pl-pdv">handler_type <span class="pl-s1">'groovy'</span>;</span> |
| 53 | + <span class="pl-pdv">handler_code <span class="pl-s1">' </span></span> |
| 54 | +<span class="pl-pdv"><span class="pl-s1"> import nginx.clojure.java.NginxJavaRingHandler;</span></span> |
| 55 | +<span class="pl-pdv"><span class="pl-s1"> import java.util.Map;</span></span> |
| 56 | +<span class="pl-pdv"><span class="pl-s1"> public class HelloGroovy implements NginxJavaRingHandler {</span></span> |
| 57 | +<span class="pl-pdv"><span class="pl-s1"> public Object[] invoke(Map<String, Object> request){</span></span> |
| 58 | +<span class="pl-pdv"><span class="pl-s1"> return [200, //http status 200</span></span> |
| 59 | +<span class="pl-pdv"><span class="pl-s1"> ["Content-Type":"text/html"], //headers map</span></span> |
| 60 | +<span class="pl-pdv"><span class="pl-s1"> "Hello, Groovy & Nginx!"]; //response body can be string, File or Array/Collection of them</span></span> |
| 61 | +<span class="pl-pdv"><span class="pl-s1"> }</span></span> |
| 62 | +<span class="pl-pdv"><span class="pl-s1"> }</span></span> |
| 63 | +<span class="pl-pdv"><span class="pl-s1"> '</span>;</span> |
| 64 | + }</pre></div> |
68 | 65 | </li>
|
69 | 66 | </ol>
|
70 | 67 |
|
|
76 | 73 | </blockquote>
|
77 | 74 |
|
78 | 75 | <h2>
|
79 |
| -<a name="user-content-start-up" class="anchor" href="#start-up" aria-hidden="true"><span class="octicon octicon-link"></span></a>Start up</h2> |
| 76 | +<a id="user-content-start-up" class="anchor" href="#start-up" aria-hidden="true"><span class="octicon octicon-link"></span></a>Start up</h2> |
80 | 77 |
|
81 | 78 | <div class="highlight highlight-nginx"><pre>
|
82 |
| -<span class="k">$</span> <span class="s">cd</span> <span class="s">nginx-clojure-0.2.6/nginx-1.6.0</span> |
83 |
| -$ <span class="s">./nginx</span> |
84 |
| -</pre></div> |
| 79 | +$ <span class="pl-pdv">cd nginx-clojure-0.2.6/nginx-1.6.0</span> |
| 80 | +<span class="pl-pdv">$ ./nginx</span></pre></div> |
85 | 81 |
|
86 | 82 | <p>If everything is ok, we can access our first http service by this url</p>
|
87 | 83 |
|
88 |
| -<div class="highlight highlight-nginx"><pre><span class="c1">### For Clojure</span> |
89 |
| -<span class="k">http://localhost:8080/clojure</span> |
90 |
| - |
91 |
| -<span class="c1">### For Groovy</span> |
92 |
| -<span class="s">http://localhost:8080/groovy</span> |
93 |
| -</pre></div> |
| 84 | +<div class="highlight highlight-nginx"><pre><span class="pl-c">### For Clojure</span><span class="pl-pdv"></span> |
| 85 | +<span class="pl-pdv">http://localhost:8080/clojure</span> |
| 86 | +<span class="pl-pdv"></span> |
| 87 | +<span class="pl-pdv">### For Groovy</span> |
| 88 | +<span class="pl-pdv">http://localhost:8080/groovy</span></pre></div> |
94 | 89 |
|
95 | 90 | <p>We can check the logs/error.log to see error information.</p>
|
96 | 91 |
|
97 | 92 | <h2>
|
98 |
| -<a name="user-content-reload" class="anchor" href="#reload" aria-hidden="true"><span class="octicon octicon-link"></span></a>Reload</h2> |
| 93 | +<a id="user-content-reload" class="anchor" href="#reload" aria-hidden="true"><span class="octicon octicon-link"></span></a>Reload</h2> |
99 | 94 |
|
100 | 95 | <p>If we change some settings we can reload the settings without stoping our services.</p>
|
101 | 96 |
|
102 |
| -<div class="highlight highlight-nginx"><pre><span class="k">$</span> <span class="s">./nginx</span> <span class="s">-s</span> <span class="s">reload</span> |
103 |
| -</pre></div> |
| 97 | +<div class="highlight highlight-nginx"><pre>$ ./<span class="pl-pdv">nginx -s reload</span></pre></div> |
104 | 98 |
|
105 | 99 | <h2>
|
106 |
| -<a name="user-content-stop" class="anchor" href="#stop" aria-hidden="true"><span class="octicon octicon-link"></span></a>Stop</h2> |
| 100 | +<a id="user-content-stop" class="anchor" href="#stop" aria-hidden="true"><span class="octicon octicon-link"></span></a>Stop</h2> |
107 | 101 |
|
108 |
| -<div class="highlight highlight-nginx"><pre><span class="k">$</span> <span class="s">./nginx</span> <span class="s">-s</span> <span class="s">stop</span> |
109 |
| -</pre></div> |
| 102 | +<div class="highlight highlight-nginx"><pre>$ ./<span class="pl-pdv">nginx -s stop</span></pre></div> |
0 commit comments