This is no question, it's how i managed to get Jetty running on Debian with one app each port and with Apache forwarding requests. Maybe it's useful for someone.
INSTALL APACHE2 & JETTY HIGHTIDE 7.1.6 ON DEBIAN WITH VIRTUALHOSTS
==================================================================
Foreword
------------------------------------------------------------------
As beginner with Java and Jetty I had my struggles to find
sufficient information. Especially because Jetty is brand new
and there are no books yet on the market. As the Eclipse people
are very helpful on their mailinglist (also with beginners) I
thought I give back a "practical" manual for people trying to
do the same like me. Getting Jetty to work on Linux in a
Virtualhost environment using Apache to Proxy requests to
applications running on a seperate port each website.
This documentation is not sought as detailed explanation. It
should rather be a practical manual get you up and running.
Overview
------------------------------------------------------------------
- www.app1.com - - Jetty 127.0.0.1:8090
User - - Apache (80) -
- www.app2.com - - Jetty 127.0.0.1:8091
Installation of the Java Runtime Environment
------------------------------------------------------------------
Over Debian Ports:
apt-get install <java version>
Manually:
* Download the latest Java Runtime Environment for Linux
* Install it to /usr/local or to the path of your desire
I took the JRE from Debian ports, as it was easier to install.
Edit /etc/profile:
export PATH=$PATH:/usr/lib/jvm/java-6-sun-1.6.0.20/bin
export JAVA_HOME="/usr/lib/jvm/java-6-sun-1.6.0.20"
Maybe you also want to add the path to /root/.bashrc or to your
user account in /home/<user>/.bashrc:
Download and install Jetty Hightide
------------------------------------------------------------------
Download Jetty:
Download the newest version of Jetty from:
http://www.eclipse.org/jetty/
Copy Jetty to /usr/local and register the rc script:
tar -xvzf jetty-distribution-<version>.v<build>.tar.gz
mv jetty-distribution-<version>.v<build> /usr/local/jetty
cd /etc/init.d/
ln -s /usr/local/jetty/bin/jetty.sh jetty
update-rc.d jetty defaults
If you start jetty you should be able to connect to port 8080 out
of the box:
/etc/init.d/jetty start
lynx
http://127.0.0.1:8080
Create custom directory structure
-----------------------------------------------------------------
I have decided to use a seperate directory structure for the
jetty configuration:
A custom etc2 directory (used for jetty configuration):
mkdir /usr/local/jetty/etc2
A custom context directory (used for virtualhost configuration):
mkdir /usr/local/jetty/contexts2
A custom webapp directory (used for application repository):
mkdir /usr/local/jetty/webapps2
Configure
www.app1.com in Jetty
-----------------------------------------------------------------
File: /usr/local/jetty/etc2/www.app1.com.xml
Configure id: jetty8090 (has to be a unique name for each server
that is started)
Set name=port: each server must bind to a different port
Set name=configurationDir: Path to context relative to the
JETTY_HOME directory (/usr/local/jetty)
<!-- BEGIN OF FILE /usr/local/jetty/etc2/www.app1.com.xml -->
<Configure id="jetty8090" class="org.eclipse.jetty.server.Server">
<Set name="connectors">
<Array type="org.eclipse.jetty.server.Connector">
<Item>
<New class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<Set name="Host">127.0.0.1</Set>
<Set name="port">8090</Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">10</Set>
</New>
</Item>
</Array>
</Set>
<Set name="handler">
<New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
<Set name="handlers">
<Array type="org.eclipse.jetty.server.Handler">
<Item>
<New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
</Item>
<Item>
<New id="DefaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler"/>
</Item>
</Array>
</Set>
</New>
</Set>
<Call name="addLifeCycle">
<Arg>
<New class="org.eclipse.jetty.deploy.ContextDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts2/
www.app1.com</Set>
<Set name="scanInterval">5</Set>
</New>
</Arg>
</Call>
</Configure>
<!-- END OF FILE /usr/local/jetty/etc2/www.app1.com.xml -->
File: /usr/local/context2/
www.app1.com/www.app1.com.xmlCreate directory: mkdir /usr/local/jetty/contexts2/
www.app1.com
set name=contextPath: The root directory of your application url
Set name=war: Path to the webapps2 directory
Item: IP addresses or Hostnames
<!-- BEGIN OF FILE /usr/local/jetty/contexts2/
www.app1.com/www.app1.com.xml -->
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/</Set>
<Set name="war"><SystemProperty name="jetty.home"/>/webapps2/www.app1.com.war</Set>
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item>
www.app1.com</Item>
<Item>
app1.com</Item>
<Item>127.0.0.1</Item>
</Array>
</Set>
</Configure>
<!-- END OF FILE /usr/local/jetty/contexts2/
www.app1.com/www.app1.com.xml -->
Copy your application in to /usr/local/jetty/webapps2/www.app1.com.war
Add the config file to /usr/local/etc/jetty.conf
-------------------------------------------------------------------------
In order to start your new application on port 8090 add the file in
/usr/local/jetty/etc2 to jetty.conf:
--pre=etc2/www.app1.com.xml
#--pre=etc2/www.app2.com.xml
--pre=etc/jetty-logging.xml
Restart Jetty
-------------------------------------------------------------------------
After a restart of Jetty you can test your setup by connecting on to the
port:
lynx
http://127.0.0.1:8090
If you see your app you can proceed adding a second app that runs for
example on port 8091 by reusing the steps above.
Configuring Apache
------------------------------------------------------------------------
To configure Apache the mod_proxy module has to be loaded:
cd /etc/apache2/mods-enabled/
ln -s ../mods-available/proxy.load .
ln -s ../mods-available/proxy_connect.load .
ln -s ../mods-available/proxy_balancer.load .
ln -s ../mods-available/proxy_http.load .
ln -s ../mods-available/proxy_ftp.load .
Now you can configure your VirtualHost:
File: /etc/apache2/sites-available/www.app1.com.conf
<VirtualHost *:80>
ServerName
www.app1.com ServerAlias
app1.com
ErrorLog /var/log/apache2/www.app1.com.err.log
CustomLog /var/log/apache2/www.app1.acc.log combined
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
ProxyStatus On
<Location /status>
SetHandler server-status
Order Deny,Allow
Allow from all
</Location>
ProxyPass /
http://127.0.0.1:8090/
SetEnv proxy-nokeepalive 1
</VirtualHost>
_______________________________________________
jetty-users mailing list
jetty-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/jetty-users