Today I finally got sick of starting virgo on my Ubuntu 10.4 servers manually (using screen), being forced to check after each reboot for application servers waiting to be started. So I did my homework and wrote an upstart configuration. It turns out it isn’t that hard at all.Only little has to be done. I usually create a user named virgo and unzip the distribution (Virgo Web server 2.1.1) in the newly created home directory.
sudo useradd -m -c 'Virgo Application Server' -s /bin/bash virgo sudo su - virgo wget http://mirror.netcologne.de/eclipse//virgo/release/VWS/2.1.1.RELEASE/virgo-web-server-2.1.1.RELEASE.zip unzip virgo-web-server-2.1.1.RELEASE.zip
Next the startup script needs to be fixed to replace itself with java using the exec call. Otherwise the shell script lingers between upstart and the java process. Which makes further configuration just a pain. sed comes in handy here.
sed -i 's/\$JAVA_HOME\/bin\/java/exec \$JAVA_HOME\/bin\/java/g' virgo-web-server-2.1.1.RELEASE/bin/dmk.sh
If you can’t use sed for what ever reason, take an editor, open the file web-server-2.1.1.RELEASE/bin/dmk.sh and look for any occurrence of $JAVA_HOME/bin/java. Prepend it with exec.
Nearly done. Exit the virgo users shell.
Now copy this upstart configuration to /etc/init/virgo.conf.
description "Virgo 2.1.1" author "Friedrich Schaeuffelhut" start on (net-device-up and local-filesystems and runlevel ) stop on runlevel  console output kill timeout 60 respawn env JAVA_HOME=/opt/jdk1.6.0 env LANG=en_US.UTF-8 exec start-stop-daemon --signal INT --start --chuid virgo --exec /home/virgo/virgo-web-server-2.1.1.RELEASE/bin/startup.sh
Make sure to set the correct path to JAVA_HOME.
[UPDATE:] Also make sure to set the environment variable LANG. Java uses it to determine it’s default locale.
Voila! You might now start/stop your virgo appliaction server with these commands.
start virgo stop virgo
Virgo will also be started on boot and stopped on a system shutdown.