Create a group for a system user (daemnos and program users like www-data, mysql...)
# addgroup --system jboss
Create a user (system user, without home -> See below the command, to the jboss group and no login shell)
# useradd -r -M -g jboss -s /bin/false jboss
Maybe we want home to store data from maven, ant... that is needed by the jboss user when executing jenkins stuff
# useradd -r -g jboss -s /bin/false jboss
Add to /etc/environment
JBOSS_HOME var
# echo "JBOSS_HOME=\"/usr/share/jboss7\"" >> /etc/environment
Download Jboss 7 from [jboss donwnload site] (http://www.jboss.org/jbossas/downloads)
Extract jboss in the proper place for example /usr/share
$ cd /usr/share
# tar xvf /home/xxxxx/Downloads/jboss-as-7.X.X.Final.tar.gz
# chown -R jboss:jboss /usr/share/jboss-as-7.X.X.Final/
# ln -s /usr/share/jboss-as-7.X.X.Final /usr/share/jboss7
# chown -h jboss:jboss /usr/share/jboss7
Download the libs, [actually mod_cluster 1.1.3] (http://www.jboss.org/mod_cluster/downloads/1-1-3) Extract the libs
$ cd /home/xxxx/Downloads
$ mkdir ./mod_cluster_libs
$ cd ./mod_cluster_libs
$ tar xvf ./mod_cluster-1.1.3.Final-linux2-XXXX-so.tar.gz
Copy libs (not all, mod_proxy_ajp.so, mod_proxy_http.so and mod_proxy.so NO) to apache modules dir (i.e /usr/lib/apache2/modules/)
# cp ./mod_advertise.so ./mod_manager.so ./mod_proxy_cluster.so ./mod_slotmem.so /usr/lib/apache2/modules/
Configure jboss Standalone mode to enable mod_cluster. Edit the standalone.xml
file in $JBOSS_HOME/standalone/configuration/standalone.xml
and add this two lines in their sections
Extensions
<extension module="org.jboss.as.modcluster"/>
profile
<subsystem xmlns="urn:jboss:domain:modcluster:1.0" />
Create two files in mods-available (/etc/apache2/mods-available
)
mod_cluster.load
LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so
LoadModule proxy_http_module /usr/lib/apache2/modules/mod_proxy_http.so
LoadModule proxy_ajp_module /usr/lib/apache2/modules/mod_proxy_ajp.so
LoadModule slotmem_module /usr/lib/apache2/modules/mod_slotmem.so
LoadModule manager_module /usr/lib/apache2/modules/mod_manager.so
LoadModule proxy_cluster_module /usr/lib/apache2/modules/mod_proxy_cluster.so
LoadModule advertise_module /usr/lib/apache2/modules/mod_advertise.so
mod_cluster.conf
CreateBalancers 1
<IfModule manager_module>
Listen 127.0.0.1:6666
ManagerBalancerName mycluster
<VirtualHost 127.0.0.1:6666>
KeepAliveTimeout 300
MaxKeepAliveRequests 0
AdvertiseFrequency 5
ServerAdvertise On
<Location />
Order deny,allow
Allow from 127.0.0
</Location>
</VirtualHost>
</IfModule>
And enable the module
# a2enmod mod_cluster
Create a file (virtual host) for jboss in sites-available (/etc/apache2/sites-available
)
jboss
NameVirtualHost *:80
<VirtualHost *:80>
#ServerAdmin [email protected]
ServerName jboss.mdiss.info
ServerAlias jboss.mdiss.info
ProxyPass / balancer://mycluster stickysession=JSESSIONID|jsessionid nofailover=On
ProxyPassReverse / balancer://mycluster
ProxyPreserveHost On
<Location />
Order deny,allow
Allow from All
</Location>
<Location /mod_cluster-manager>
SetHandler mod_cluster-manager
Order deny,allow
#Deny from all
Allow from 127.0.0
</Location>
</VirtualHost>
And enable the site
# a2ensite jboss
There is a problem with mod_cluster (in ubuntu?), needs the log directory in /etc/apache2
We can do two things, create the dir or create a symbloic link to /var/log/apache2
Creating the dir
# mkdir /etc/apache2/logs
Creating the symbolic link
#ln -s /var/log/apache2 /etc/apache2/logs
Create a Daemon to start jboss as jboss user, so create aa file (/etc/init.d/jboss
) with this content
#!/bin/sh
### BEGIN INIT INFO
# Provides: jboss
# Required-Start: $local_fs $remote_fs $network $syslog
# Required-Stop: $local_fs $remote_fs $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start/Stop JBoss AS v7.0.2
### END INIT INFO
#
#source some script files in order to set and export environmental variables
#as well as add the appropriate executables to $PATH
#[ -r /etc/profile.d/java.sh ] && . /etc/profile.d/java.sh
#[ -r /etc/profile.d/jboss.sh ] && . /etc/profile.d/jboss.sh
case "$1" in
start)
echo "Starting JBoss AS 7.0.2"
sudo -u jboss sh ${JBOSS_HOME}/bin/standalone.sh
;;
stop)
echo "Stopping JBoss AS 7.0.2"
sudo -u jboss sh ${JBOSS_HOME}/bin/jboss-admin.sh --connect command=:shutdown
;;
*)
echo "Usage: /etc/init.d/jboss {start|stop}"
exit 1
;;
esac
exit 0
We download Jenkins from the [site] (http://mirrors.jenkins-ci.org/war/latest/jenkins.war) and we deploy the war.
Connect to the jboss admin console
# $JBOSS_HOME/bin/jboss-admin.sh
$ connect
$ deploy /home/xxxx/Downloads/jenkins.war
$ exit
Create the jenkins home (data storage)
# mkdir /usr/share/jenkins
# chown jboss:jboss /usr/share/jenkins
Set env variable in java (the system vars sometimes doesn't work with jboss user from jboss-as). Edit servers boot conf (standalone, domain). For example for estandalone: Edit $JBOSS_HOME/bin/standalone.conf
Add in the end of the file:
#Set jenkins home env variable
JAVA_OPTS="$JAVA_OPTS -DJENKINS_HOME=/usr/share/jenkins"
Thanks for this good howto for mod_cluster. Unfortantly i don't get forwarded (when i access my servers url on port 80) to my jboss server (port 8080). Is there something else needed to get forwarded to jboss?