Over a million developers have joined DZone.

Running Hudson Behind an Apache Server: a Primer

· Java Zone

Check out this 8-step guide to see how you can increase your productivity by skipping slow application redeploys and by implementing application profiling, as you code! Brought to you in partnership with ZeroTurnaround.

If you are running Hudson in a Unix environment, you may want to hide it behind an Apache HTTP server in order to harmonize the server URLs and simplify maintenance and access. This way, users can access the Hudson server using a URL like http://myserver.myorg.com/hudson rather than http://myserver.myorg.com:8081. One way to do this is to use the Apache mod_proxy and mod_proxy_ajp modules. In this article, we discuss one approach.

The exact configuration of this module will vary depending on the details of your Apache version and installation details, but one possible approach is outlined in this article.

First, if you are running Hudson as a stand-alone application, make sure you start up Hudson using the --prefix option. The prefix you choose must match the suffix in the public-facing URL you want to use. So if you want to access Hudson via a URL like http://myserver.myorg.com/hudson, you will need to provide 'hudson' as a prefix:

$ java -jar hudson.war --httpPort=8081 --ajp13Port=8010 --prefix=hudson
If you are running Hudson on an application server such as Tomcat, Hudson will already have its own web context ("/hudson" by default).

Next, make sure the mod_proxy and mod_proxy_ajp modules are activated. In your httpd.conf file (often in the /etc/httpf/conf directory), you should have the following line:

LoadModule proxy_module modules/mod_proxy.so

The proxy is actually configured in the proxy_ajp.conf file (often in the /etc/httpd/conf.d directory). An example of such a configuration file is given here:

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
ProxyPass /hudson http://localhost:8081/hudson
ProxyPassReverse /hudson http://localhost:8081/hudson
ProxyRequests Off

Once this is done, you just need to restart your Apache server:

$ sudo /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
Now you should be able to access your Hudson server using a URL like http://myserver.myorg.com/hudson.

This is one approach - there are others. I'd be curious to hear about alternative configurations that people are using or issues people have come across.

From http://www.wakaleo.com/blog/269-running-hudson-behind-an-apache-server-a-primer

The Java Zone is brought to you in partnership with ZeroTurnaround. Check out this 8-step guide to see how you can increase your productivity by skipping slow application redeploys and by implementing application profiling, as you code!

Topics:

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}