/usr/share/doc/cherokee-doc/cookbook_glassfish.html is in cherokee-doc 1.2.101-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en-us" />
<meta name="ROBOTS" content="ALL" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="MSSmartTagsPreventParsing" content="true" />
<meta name="Keywords" content="cherokee web server httpd http" />
<meta name="Description" content="Cherokee is a flexible, very fast, lightweight Web server. It is implemented entirely in C, and has no dependencies beyond a standard C library. It is embeddable and extensible with plug-ins. It supports on-the-fly configuration by reading files or strings, TLS/SSL (via GNUTLS or OpenSSL), virtual hosts, authentication, cache friendly features, PHP, custom error management, and much more." />
<link href="media/css/cherokee_doc.css" rel="stylesheet" type="text/css" media="all" />
</head>
<body>
<h2 id="_a_href_index_html_index_a_8594_a_href_cookbook_html_cookbook_a"><a href="index.html">Index</a> → <a href="cookbook.html">Cookbook</a></h2>
<div class="sectionbody">
</div>
<h2 id="_cookbook_setting_up_glassfish">Cookbook: Setting up GlassFish</h2>
<div class="sectionbody">
<div class="paragraph"><p>Supporting Java with Cherokee is almost trivial using
<a href="https://glassfish.dev.java.net">GlassFish</a>, an enterprise class
Java EE 5 application server.</p></div>
<div class="paragraph"><p>For this recipe you will need Cherokee’s
<a href="modules_handlers_proxy.html">HTTP reverse proxy</a> and a valid
GlassFish installation, which in turn requires JDK 5 or JDK 6
installed on your system. The configuration processing depends on Ant
(1.6.5).</p></div>
<div class="paragraph"><p>We will be using GlassFish v2 here since GlassFish v3 is still under
development.</p></div>
<h3 id="debian">Debian installation</h3><div style="clear:left"></div>
<div class="paragraph"><p>If you are lucky enough to be using a Debian based Linux distribution,
simply installing the <tt>glassfishv2</tt> package will be enough.</p></div>
<div class="listingblock">
<div class="content">
<pre><tt># apt-get install glassfishv2</tt></pre>
</div></div>
<div class="paragraph"><p>This will completely deploy the needed infrastructure and launch the
application server.</p></div>
<h3 id="generic">Generic installation</h3><div style="clear:left"></div>
<div class="paragraph"><p>If you are using another OS or Linux distribution, there should be an
alternative available. You can always download it and follow the
installation instructions available at the
<a href="https://glassfish.dev.java.net/public/downloadsindex.html">official
site</a>.</p></div>
<div class="paragraph"><p>The installation process is also simple. For example, for Linux you
could do the following to retrieve the executable installer and run
it:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ wget http://java.net/download/javaee5/v2ur2/promoted/Linux/glassfish-installer-v2ur2-b04-linux.jar
$ java -Xmx256M -jar glassfish-installer-v2ur2-b04-linux.jar</tt></pre>
</div></div>
<div class="paragraph"><p>This will pop up a GUI, guide you through the process and unpack all
the files for GlassFish into ./glassfish</p></div>
<div class="paragraph"><p>There you will find the needed GlassFish setup script. The files
setup.xml and setup-cluster.xml are both used for this. Use the one
that suits you. The Debian version supports clustering, so we will use
that to obtain a coherent output for both Debian and Generic
installations.</p></div>
<div class="paragraph"><p>Ant is also provided, and should be made executable if you didn’t
already have it installed.</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ chmod a+x glassfish/lib/ant/bin/*</tt></pre>
</div></div>
<div class="paragraph"><p>It would be a good time to move the ./glassfish directory to the path
where you will want it in production.</p></div>
<div class="paragraph"><p>Now to run the setup:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ lib/ant/bin/ant -f setup-cluster.xml</tt></pre>
</div></div>
<h3 id="glassfish">Launching Glassfish</h3><div style="clear:left"></div>
<div class="paragraph"><p>To launch the service you will have to start up the GlassFish
server.</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ ./bin/asadmin start-domain</tt></pre>
</div></div>
<div class="paragraph"><p>Or if it is installed system wide:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>$ /usr/bin/asadmin start-domain</tt></pre>
</div></div>
<div class="paragraph"><p>Don’t forget to set up an automatic way of doing this at boot time.
You should obtain an output similar to this:</p></div>
<div class="listingblock">
<div class="content">
<pre><tt>Starting Domain domain1, please wait.
Log redirected to /var/lib/glassfishv2/domains/domain1/logs/server.log.
Redirecting output to /var/lib/glassfishv2/domains/domain1/logs/server.log
Domain domain1 started.
Domain [domain1] is running [Sun Java System Application Server 9.1_01 (build local)] with its configuration and logs at: [/var/lib/glassfishv2/domains].
Admin Console is available at [http://localhost:4848].
Use the same port [4848] for "asadmin" commands.
User web applications are available at these URLs:
[http://localhost:8080 https://localhost:8181 ].
Following web-contexts are available:
[/web1 /__wstx-services ].
Standard JMX Clients (like JConsole) can connect to JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://borg:8686/jmxrmi] for domain management purposes.
Domain listens on at least following ports for connections:
[8080 8181 4848 3700 3820 3920 8686 ].
Domain supports application server clusters and other standalone instances.</tt></pre>
</div></div>
<div class="paragraph"><p>This means you have GlassFish up and running. Now you can:</p></div>
<div class="ulist"><ul>
<li>
<p>
Access the web-based admin page at
<a href="http://localhost:4848">http://localhost:4848</a>, with the used
<tt>admin</tt> and password <tt>adminadmin</tt> by default (which you’ll be
changing right away form the "Application Server" menu). There
you’ll be making whatever configuration changes you need.
</p>
</li>
<li>
<p>
Use GlassFish as is. It works fine as a standalone server. Just
deploy an application and test it.
</p>
</li>
<li>
<p>
Get the real thing: we’ve come this long for a more sophisticated set
up, not just a stanadalone server configuration. We are now going to
proxy it through Cherokee. It is as simple as using the Reverse
Proxy handler to hit the GlassFish server at port 8080.
</p>
</li>
</ul></div>
<h3 id="cherokee">Configuring Cherokee</h3><div style="clear:left"></div>
<div class="paragraph"><p>Cherokee provides a wizard that will assist you on this task. You can
either dedicate a new virtual server for this, or use a preexisting
one. It is your choice, since the Wizard contemplates both scenarios.</p></div>
<div class="paragraph"><p>For the former you’ll have to access the Wizard from the list of
available ones within the <tt>Virtual Servers</tt> section of Cherokee-Admin,
clicking on the <tt>Add</tt> button at the top of the panel. The latter is
accessed through the same list of Wizards, this time using the <tt>Rule
Management</tt> button within the <tt>Behavior</tt> tab of any given virtual
server. Once the panel with the rules is listed, follow a similar
procedure using the <tt>Add</tt> button located at the top.</p></div>
<div class="paragraph"><p>The wizard will simply ask for the host to be proxied and will set it
up for you to see. Should you need to add more machines to your
cluster, you can add extra information sources to your Cherokee
configuration and let it deal with all the load balancing.</p></div>
<div class="paragraph"><p>No extra steps are necessary. You can skip directly to the
<a href="#deployment">deployment</a> section of this recipe. If for any reason
the Wizard doesn’t work for you, you can always use the manual method
described below.</p></div>
<h4 id="_manual_method">Manual method</h4>
<div class="paragraph"><p>You can either create a new virtual server with a matching rule (be it
<tt>default</tt> or anything else) if you are sharing the proxy machine, or
completely dedicate a machine to the Proxy Handler. This will be our
choice, since typically you will be wanting to get the best possible
performance from your proxy server.</p></div>
<div class="paragraph"><p>Launch Cherokee-Admin on your proxy machine, delete every rule of your
virtual server of choice, and redefine the <tt>Default</tt> rule to use the
<tt>HTTP reverse proxy</tt> handler from within the <tt>Handler</tt> tab. Make sure
to enable the <tt>Preserve Host</tt> checkbox.</p></div>
<div class="paragraph"><p>You will need to assign it every information source that you have
previously defined, which must be the list of Glassfish-enabled
machines in your cluster.</p></div>
<div class="paragraph"><p>These information sources are to be defined as external sources, like
the following examples:</p></div>
<div class="tableblock">
<table rules="all"
width="100%"
frame="border"
cellspacing="0" cellpadding="4">
<col width="33%" />
<col width="33%" />
<col width="33%" />
<thead>
<tr>
<th align="left" valign="top">Type </th>
<th align="left" valign="top">Nick </th>
<th align="left" valign="top">Connection</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p class="table">Remote host</p></td>
<td align="left" valign="top"><p class="table">GlassFish1</p></td>
<td align="left" valign="top"><p class="table">192.168.1.101</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Remote host</p></td>
<td align="left" valign="top"><p class="table">GlassFish2</p></td>
<td align="left" valign="top"><p class="table">192.168.1.102</p></td>
</tr>
<tr>
<td align="left" valign="top"><p class="table">Remote host</p></td>
<td align="left" valign="top"><p class="table">GlassFish3</p></td>
<td align="left" valign="top"><p class="table">192.168.1.103</p></td>
</tr>
</tbody>
</table>
</div>
<div class="paragraph"><p>Refer to the <a href="modules_handlers_proxy.html">HTTP reverse proxy</a>
documentation if you need any further help with this.</p></div>
<h3 id="deployment">Deploy application</h3><div style="clear:left"></div>
<div class="paragraph"><p>We will deploy the <tt>quickstart</tt> sample provided by the package using
the administration interface. You can actually skip the web interface
and deploy from the command line, which is a lot faster to replicate
the process among a series of servers. The example is done with one
server, 192.168.1.101, but you can repeat the process for each one of
them.</p></div>
<div class="olist arabic"><ol class="arabic">
<li>
<p>
To do so, open the admin page mentioned above to access the Server
Admin console.
</p>
</li>
<li>
<p>
Choose Applications → Web Applications, and insert
<tt>/usr/share/glassfishv2/samples/quickstart/hello.war</tt> into the field
<tt>Local packaged file or directory that is accessible from the
Application Server</tt>.
</p>
</li>
<li>
<p>
After you press <tt>OK</tt>, you will be able to launch it and it will be
available at, for the case of GlassFish1, the URL
<a href="http://192.168.1.101:8080/hello">http://192.168.1.101:8080/hello</a>
</p>
</li>
</ol></div>
<div class="imageblock">
<div class="content">
<img src="media/images/cookbook_glassfish.png" alt="media/images/cookbook_glassfish.png" />
</div>
</div>
<div class="paragraph"><p>And we are done. The same application is now available through your
proxy. Every request it receives will be dispatched through the list
of its information sources.</p></div>
</div>
<div id="footer">
<div id="footer-text">
</div>
</div>
</body>
</html>
|