Hudson
From KevinWiki
(Difference between revisions)
Line 48: | Line 48: | ||
... Default Host Info ... | ... Default Host Info ... | ||
- | <Host name="hudson.yourdomain.com" appBase="/opt/ | + | <Host name="hudson.yourdomain.com" appBase="/opt/tomcat_user_dir/hudson_webapps" |
unpackWARs="true" autoDeploy="true" | unpackWARs="true" autoDeploy="true" | ||
xmlValidation="false" xmlNamespaceAware="false"> | xmlValidation="false" xmlNamespaceAware="false"> | ||
Line 56: | Line 56: | ||
* If the virtual host is for Hudson only (e.g. http://hudson.yourdomain.com), | * If the virtual host is for Hudson only (e.g. http://hudson.yourdomain.com), | ||
- | # Remove all the files and directories in the <code>appBase</code> directory which is, in the example above, <code>/opt/ | + | # Remove all the files and directories in the <code>appBase</code> directory which is, in the example above, <code>/opt/tomcat_user_dir/hudson_webapps</code>. |
# Copy <code>hudson.war</code> file to the <code>appBase</code> directory and change <code>hudson.war</code> to <code>ROOT.war</code>. | # Copy <code>hudson.war</code> file to the <code>appBase</code> directory and change <code>hudson.war</code> to <code>ROOT.war</code>. | ||
Line 81: | Line 81: | ||
... Default Host Info ... | ... Default Host Info ... | ||
- | <Host name="hudson.yourdomain.com" appBase="/opt/ | + | <Host name="hudson.yourdomain.com" appBase="/opt/tomcat_user_dir/hudson_webapps" |
unpackWARs="true" autoDeploy="true" | unpackWARs="true" autoDeploy="true" | ||
xmlValidation="false" xmlNamespaceAware="false"> | xmlValidation="false" xmlNamespaceAware="false"> | ||
Line 90: | Line 90: | ||
</source> | </source> | ||
* To solve this problem, as mentioned already (Read the instructions to <code>Use Subdomain to Access Hudson (with SSL)</code>), | * To solve this problem, as mentioned already (Read the instructions to <code>Use Subdomain to Access Hudson (with SSL)</code>), | ||
- | # Remove all the files and directories in the <code>appBase</code> directory which is, in the example above, <code>/opt/ | + | # Remove all the files and directories in the <code>appBase</code> directory which is, in the example above, <code>/opt/tomcat_user_dir/hudson_webapps</code>. |
# Copy <code>hudson.war</code> file to the <code>appBase</code> directory and change <code>hudson.war</code> to <code>ROOT.war</code>. | # Copy <code>hudson.war</code> file to the <code>appBase</code> directory and change <code>hudson.war</code> to <code>ROOT.war</code>. | ||
# Remove <code>Context</code> element in the <code>server.xml</code> file. | # Remove <code>Context</code> element in the <code>server.xml</code> file. |
Revision as of 03:00, 12 July 2009
Hudson is a continuous integration tool built using Java. It can work as a standalone server since it has the Winstone Servlet Container or it can work on various Servlet Containers or JEE servers such as Apache Tomcat, Glassfish, JBoss, IBM WebSphere, Jetty 6, etc. Hudson supports Apache Ant and Maven as well as SCM tools such as CSV and Subversion.
Contents |
Installation
- Download the latest hudson from the hudson web site.
- Deploy
hudson.war
file as a web application to Tomcat server.
Use Subdomain to Access Hudson (with SSL)
- Install and enable mod_jk.
- Open the
workers.properties
file in the/etc/apache2
directory. - Add a new
worker
for hudson.
workers.tomcat_home=/opt/tomcat workers.java_home=/usr/lib/jvm/java-6-sun ps=/ worker.list=worker1,hudson worker.worker1.port=8009 worker.worker1.host=localhost worker.worker1.type=ajp13 worker.worker1.lbfactor=1 worker.hudson.port=8009 worker.hudson.host=hudson.yourdomain.com worker.hudson.type=ajp13 worker.hudson.lbfactor=1
- Set up
JkMount
in the apache virtual host configuration.
<VirtualHost *:443> ServerAdmin master@yourdomain.com SSLEngine on SSLOptions +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key ServerName hudson.yourdomain.com JkMount / hudson JkMount /* hudson </VirtualHost>
- Open the
$CATALINA_HOME/conf/server.xml
file to set up a new tomcat virtual host for the hudson. - Add the virtual host info inside the
Engine
element.
<Engine name="Catalina" defaultHost="localhost"> ... Default Host Info ... <Host name="hudson.yourdomain.com" appBase="/opt/tomcat_user_dir/hudson_webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host> </Engine>
- If the virtual host is for Hudson only (e.g. http://hudson.yourdomain.com),
- Remove all the files and directories in the
appBase
directory which is, in the example above,/opt/tomcat_user_dir/hudson_webapps
. - Copy
hudson.war
file to theappBase
directory and changehudson.war
toROOT.war
.
- Restart tomcat and apache.
$ /etc/init.d/tomcat stop $ /etc/init.d/tomcat start $ /etc/init.d/apache restart
- access https://hudson.yourdomain.com.
Known Problem
- This problem will not happen if the instructions above are used to install Hudson.
- If Hudson complains about two hudson instances using the same HUDSON_HOME with the following error message, stop the tomcat server and check $CATALINA_HOME/work directory and removes duplicate ones if found.
Hudson detected that you appear to be running more than one instance of Hudson that share the same home directory ... This greatly confuses Hudson and you will likely experience strange behaviors, so please correct the situation.
- Check
server.xml
. - If the virtual host is only for Hudson and
server.xml
has the virtual host setup like below withhudson.war
placed in thewebapps
directory, Tomcat server will create two instances (hudson
andROOT
) of Hudson when it starts.
<Engine name="Catalina" defaultHost="localhost"> ... Default Host Info ... <Host name="hudson.yourdomain.com" appBase="/opt/tomcat_user_dir/hudson_webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <!-- WARNING: This is WRONG!!! --> <Context path="" docBase="hudson" debug="0" reloadable="true" /> </Host> </Engine>
- To solve this problem, as mentioned already (Read the instructions to
Use Subdomain to Access Hudson (with SSL)
),
- Remove all the files and directories in the
appBase
directory which is, in the example above,/opt/tomcat_user_dir/hudson_webapps
. - Copy
hudson.war
file to theappBase
directory and changehudson.war
toROOT.war
. - Remove
Context
element in theserver.xml
file.
Configuration
- To set the Tomcat to use UTF-8 to decode URLs, open
$CATALINA_HOME/conf/server.xml
file. - Add
URIEncoding="UTF-8"
to the following Connector element.
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
- So it should be like this
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" />
- If it uses
mod_jk
, addURIEncoding="UTF-8"
to
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
- So this should be
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8" />
- Restart the tomcat server.
-
JkOptions +ForwardURICompatUnparsed
option needs to be added to the/etc/apache2/mods-enabled/jk.load
file or in the virtual host setup.
<VirtualHost *:443> ServerAdmin master@yourdomain.com SSLEngine on SSLOptions +StrictRequire SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key ServerName hudson.yourdomain.com JkOptions +ForwardURICompatUnparsed JkMount / hudson JkMount /* hudson </VirtualHost>
- Restart the apache server.