Difference between revisions of "Configure JBoss service"
(→FreeBSD 9.0) |
(→FreeBSD 9.0) |
||
Line 283: | Line 283: | ||
== FreeBSD 9.0 == | == FreeBSD 9.0 == | ||
− | + | FreeBSD service configuration is a forum contribution, more information at http://forum.openkm.com/viewtopic.php?f=3&t=5766&p=17109#p17109 | |
Create file /usr/local/etc/rc.d/openkm.sh | Create file /usr/local/etc/rc.d/openkm.sh |
Revision as of 19:21, 4 July 2012
These instructions are related to installing and running JBoss 4.2.3 as a service, which means that will be launched at system boot and will be closed properly on system shutdown.
Running as a Linux Service
For security reasons you shouldn't run JBoss as root. It is better to create a user named openkm and run JBoss from him:
$ sudo adduser openkm
Create a file with the script:
$ sudo vim /etc/init.d/jboss
#!/bin/sh
### BEGIN INIT INFO
# Provides: jboss
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop JBoss AS
# Description: Enable JBoss AS service provided by daemon.
### END INIT INFO
ECHO=/bin/echo
TEST=/usr/bin/test
JBOSS_USER=openkm
JBOSS_IP=127.0.0.1
JBOSS_HOME=/home/openkm/jboss-4.2.3.GA
JBOSS_START_SCRIPT=$JBOSS_HOME/bin/run.sh
JBOSS_STOP_SCRIPT=$JBOSS_HOME/bin/shutdown.sh
$TEST -x $JBOSS_START_SCRIPT || exit 0
$TEST -x $JBOSS_STOP_SCRIPT || exit 0
start() {
$ECHO -n "Starting JBoss"
su - $JBOSS_USER -c "$JBOSS_START_SCRIPT -b $JBOSS_IP > /dev/null &"
$ECHO "."
}
stop() {
$ECHO -n "Stopping JBoss"
su - $JBOSS_USER -c "$JBOSS_STOP_SCRIPT -s $JBOSS_IP > /dev/null &"
while [ "$(ps -fu $JBOSS_USER | grep java | grep jboss | wc -l)" -gt "0" ]; do
sleep 5; $ECHO -n "."
done
$ECHO "."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 30
start
;;
*)
$ECHO "Usage: jboss {start|stop|restart}"
exit 1
esac
exit 0
And make it executable:
$ sudo chmod 755 /etc/init.d/jboss
Now update the run-levels:
$ sudo update-rc.d jboss defaults Adding system startup for /etc/init.d/jboss ... /etc/rc0.d/K20jboss -> ../init.d/jboss /etc/rc1.d/K20jboss -> ../init.d/jboss /etc/rc6.d/K20jboss -> ../init.d/jboss /etc/rc2.d/S20jboss -> ../init.d/jboss /etc/rc3.d/S20jboss -> ../init.d/jboss /etc/rc4.d/S20jboss -> ../init.d/jboss /etc/rc5.d/S20jboss -> ../init.d/jboss
start jboss service:
$ sudo service jboss start
stop jboss service:
$ sudo service jboss stop
If you are a Red Hat user use:
$ chkconfig --add jbossTake a look at update-rc.d like command on Redhat Enterprise / CentOS Linux. |
It's also a good idea to configure JBoss memory utilization. Edit the file $JBOSS_HOME/bin/run.sh and add a new parameter JAVA_OPTS where you can increase the system memory managed by the JVM (Java Virtual Machine):
DIRNAME=`dirname $0`
PROGNAME=`basename $0`
GREP="grep"
JAVA_OPTS="-Xmx1744m -XX:MaxPermSize=256m"
This example is for a system with 2 GB of RAM.
For more info, read http://jboss.org/community/docs/DOC-11566.
Configure on Redhat / CentOS
Copy the jboss_init_redhat.sh located into $JBOSS_HOME/bin to /etc/init.d/jboss
$ cp bin/jboss_init_redhat.sh /etc/init.d/jboss
Make jboss script executable
$ chmod +x /etc/init.d/jboss
Modify default jboss script ( add or modify some lines )
# chkconfig: - 64 36 # description: Jboss Start|Restart|Stop Application Server # pidfile: /var/run/jboss.pid .... JBOSS_HOME=${JBOSS_HOME:-"/home/openkm/jboss-4.2.3.GA"} #define the user under which jboss will run, or use 'RUNASIS' to run as the current user JBOSS_USER=${JBOSS_USER:-"openkm"} #make sure java is in your path JAVAPTH=${JAVAPTH:-"/usr/java/jdk1.6.0_27/bin"} #configuration to use, usually one of 'minimal', 'default', 'all' JBOSS_CONF=${JBOSS_CONF:-"default"} #if JBOSS_HOST specified, use -b to bind jboss services to that address JBOSS_HOST="0.0.0.0" JBOSS_BIND_ADDR=${JBOSS_HOST:+"-b $JBOSS_HOST"}
Add jboss script as service
$ chkconfig --add jboss
If you see an error message like service jboss does not support chkconfig, edit /etc/init.d/jboss file and add the following lines right after "#!/bin/sh":
# chkconfig: 345 90 10 # description: Runs the JBoss Application Server # processname: jboss
Change service level
$ chkconfig jboss --level 3 on
Run or stop jboss service
$ service jboss start $ service jboss stop
Running as a Windows Service
You can install JBoss as a service on the Windows platform in several ways:
First method
JBoss recomended is using jboss native windows. Take a look here http://community.jboss.org/wiki/RunJBossAsAServiceOnWIndows and http://community.jboss.org/wiki/JBossNativeWindows. Download jboss native in concordance with your architecture - 32 bit or 64 bit. http://labs.jboss.com/jbossweb/downloads/ ( jboss native ).
- Uncompress files into your %JBOSS_HOME%
- If you want, you can edit the service name by editing the file %JBOSS_HOME%\bin\service.bat
set SVCNAME=JBAS50SVC
set SVCDISP=JBoss Application Server 5.0
set SVCDESC=JBoss Application Server 5.0.0 GA/Platform: Windows x86
- Then open a command promt window, cd to the %JBOSS_HOME%\bin\ folder and execute
service.bat install
- Now in your service control panel, JBoss is installed as a service. We tested it on several Windows versions and it runs well.
Other windows service installation methods explained below haven't been tested directly by us. |
Second method
- Download JavaService-2.0.10.zip from http://download.forge.objectweb.org/javaservice/
- Extract to C:\JavaService-2.0.10
- copy InstallJBoss.bat,UninstallJBoss.bat, JavaService.exe (JavaService.exe must be renames as JBossService.exe ) to jboss bin directory. In our case C:\jboss-4.2.3.GA\
- Make sure JBOSS_HOME and JAVA_HOME are set. In our case: C:\jboss-4.2.3.GA and D:\jdk1.6.0 respectively
- Create a batch file install.bat in %JBOSS_HOME%/bin directory. Its contents should be as follows:
Rem Start Here
set JAVA_HOME=d:/jdk1.6.0
set javadll=%JAVA_HOME%\jre\bin\client\jvm.dll
set javatool=%JAVA_HOME%\lib\tools.jar
set javarun=%JBOSS_HOME%\bin\run.jar
set outlog=%JBOSS_HOME%\bin\stdout.log
set errlog=%JBOSS_HOME%\bin\stderr.log
JBossService.exe -install JBoss "%javadll%" -Djava.class.path="%javatool%";"%javarun%" -Xms1024M -Xmx1024M -XX:PermSize=64m -XX:MaxPermSize=128m -start org.jboss.Main -params -b 0.0.0.0 -stop org.jboss.Main -method systemExit -out "%outlog%" -err "%errlog%" -current "%JBOSS_HOME%\bin" -manual
Rem End Here
- Make sure to set word wrap off in the file and do not forget the quotes. This will allow the Program
Files path to work correctly. You can change the location of stderr.log and stdout.log to another path if you prefer.
- Start a command prompt window and cd to %JBOSS_HOME%\bin. Run install.bat by typing install. This will install JBoss as a service.
To start the service type:
net start JBoss.
- JBoss should now be running as a service.
- To uninstall the JBoss service:
javaservice -uninstall jboss
Third method
Start a command prompt window. To start the service, type:
set JAVA_HOME=d:/jdk1.6.0
set JBOSS_HOME=C:/jboss-4.2.3.GA/
installJboss MSSQLSERVER -auto
MSSQLSERVER is a service that must be running before JBoss starts.
Fourth method
Is using Microsoft Resource KIT, you can get more information here:
Microsoft resource kit are several programs that cover specific functionalities not present by default in Windows OS (really it could be a good question why it doesn't come by default - other Microsoft policy? The thing is that in these utilities is present a service registration utility).
Mac OS X Server
Create a file called jboss.plist with values ( some paths, adminserver user name could be different ) save into /Users/adminuser/Library/LaunchAgents
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>openkm</string>
<key>UserName</key>
<string>adminuser</string>
<key>GroupName</key>
<string>staff</string>
<key>ProgramArguments</key>
<array>
<string>/Users/adminserver/jboss-4.2.3.GA/bin/run.sh</string>
<string>-c</string>
<string>default</string>
<string>-b</string>
<string>0.0.0.0</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Change the user owner to root and privilegees to 644
$ sudo chown root jboss.plist $ sudo chmod 644 jboss.plist
Register as service
$ launchctl load <path-to-file>/jboss.plist
Start service
$ launchctl start openkm
Stop service
$ launchctl stop openkm
More information at Running JBoss As A Mac OS X Service.
FreeBSD 9.0
FreeBSD service configuration is a forum contribution, more information at http://forum.openkm.com/viewtopic.php?f=3&t=5766&p=17109#p17109
Create file /usr/local/etc/rc.d/openkm.sh
#!/bin/sh
# Openkm startup Script
# PROVIDE: Openkm
# REQUIRE: mysql LOGIN
# KEYWORD: shutdown
. /etc/rc.subr
name="Openkm"
rcvar=${name}_enable
Openkm_enable=${Openkm_enable-"NO"}
start_cmd="${name}_start"
stop_cmd="${name}_stop"
load_rc_config $name
JAVA_HOME="/usr/local/openjdk6/";
export JAVA_HOME
procname="java"
Openkm_start(){
echo "Starting OpenKM....."
rm -r /alldata/programs/jboss/server/default/work &
rm -r /alldata/programs/jboss/server/default/tmp &
/usr/local/lib/libreoffice/program/soffice "--accept=socket,host=localhost,port=2222;urp;StarOffice.ServiceManager" --nologo --headless --nofirststartwizard &
su -m nobody -c /alldata/programs/jboss/bin/run.sh -b 0.0.0.0 & > /dev/null
}
Openkm_stop(){
echo "Stopping OpenKM....."
/alldata/programs/jboss/bin/shutdown.sh -S
killall -9 soffice.bin &
}
run_rc_command "$1"
Add the following to /etc/rc.conf
openkm_enable="YES"
Add the following to /etc/rc.conf
soffice_enable="YES"
JBoss with SSL
We encourage using apache proxy to port 80 or 443 and not expose directly jboss ports. There could be some security bugs if the jboss ports are exposed. For those people who decide to expose jboss ports, there's a problem with IE and https / SSL jboss configuration. To solve it:
Edit the file $JBOSS_HOME/server/default/deploy/jboss-web.deployer/server.xml and uncomment
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystorePass="XxXxXxXx"
clientAuth="false" sslProtocol="TLS" />
You need to generate some keystorePass.