Confluence refused to start
Asked by Kayode Odeyemi:

I'm trying to write a startup script for confluence on Ubuntu server 11.10. I tried the 2 scripts below:

script 1:

#!/bin/bash

### BEGIN INIT INFO

# Provides: confluence

# Required-Start: $local_fs $network mysql

# Should-Start:

# Required-Stop: $local_fs $network mysql

# Should-Stop:

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Description: Start Confluence - The Enterprise Wiki

### END INIT INFO

## START OF CONFIGURATION

# Name of the user to run as

USER=prisa

# Location of application's bin directory

CATALINA_HOME=/opt/confluence

# Minimum Tomcat heap space (for performance reasons on high load,

# this value should be the same as MAX_HEAP)

MIN_HEAP=1024m

# Maximum Tomcat heap space

MAX_HEAP=1024m

# This should be roughly 40% of your MAX_HEAP

EDEN_SIZE=400m

# Additional options

# see <http://confluence.atlassian.com/display/DOC/Recognised+System+Properties> for a complete list of options

EXTRA_OPTS=

# Sleep time in seconds, only even numbers

WAIT=10

## TUNING OPTIONS

#

# Most of these optimizations come from

# <http://java.sun.com/performance/reference/whitepapers/tuning.html>

# <http://confluence.atlassian.com/display/DOC/Garbage+Collector+Performance+Issues>

#

# No Tuning per default

#TUN_EXTRA_OPTS=

# This setting enables the latest performance optimizations from the Java team

# Be cautious, as this option enables/disables other options and is subject to changes

# from release to release

# In general, this has proven to give Confluence a decent performance boost

#TUN_EXTRA_OPTS=$TUN_EXTRA_OPTS -XX:+AggressiveOpts

# Escape Analysis

#TUN_EXTRA_OPTS=$TUN_EXTRA_OPTS -XX:-DoEscapeAnalysis

# Enable this if you're running a small instance with 512MB - 768MB max heap

#TUN_EXTRA_OPTS=$TUN_EXTRA_OPTS -XX:+UseSerialGC -XX:MaxHeapFreeRatio=10 -XX:MinHeapFreeRatio=5 -XX:NewRatio=8

# If JDK 6 Update 20 or later is installed, enable this

#TUN_EXTRA_OPTS=$TUN_EXTRA_OPTS -XX:+OptimizeStringConcat

# If you run on an Intel CPU with 'Quick Path Interconnect', then enable this

#TUN_EXTRA_OPTS=$TUN_EXTRA_OPTS -XX:+UseNUMA

#

## END OF TUNING OPTIONS

## END OF CONFIGURATION

# Reset everything

true

export JRE_HOME=$CATALINA_HOME/jre

# Write a PID file

export CATALINA_PID=$CATALINA_HOME/work/catalina.pid

# These are our Java parameters

export JAVA_OPTS=-server -Xms$MIN_HEAP -Xmx$MAX_HEAP -XX:NewSize=$EDEN_SIZE -XX:MaxPermSize=256m -Djava.awt.headless=true $EXTRA_OPTS $TUN_EXTRA_OPTS

# Clear the setenv.sh if it isn't empty (because we set the environment via JAVA_OPTS above)

if -s $CATALINA_HOME/bin/setenv.sh ; then

cat /dev/null \> $CATALINA_HOME/bin/setenv.sh

fi

APP=confluence

case $1 in

start)

if -e $CATALINA_PID ; then

$0 status \&\>/dev/null

ret=$?

if $ret = 1 ; then

echo Warning: found stale pidfile (unclean shutdown?)

rm -f $CATALINA_PID

elif $ret = 0 ; then

echo $APP is already running ($CATALINA_PID)

exit $ret

fi

fi

echo Starting $APP

cd $CATALINA_HOME

/bin/su $USER -c $CATALINA_HOME/bin/startup.sh \>/dev/null

;;

stop)

pid=$(\<$CATALINA_PID)

echo Shutting down $APP

cd $CATALINA_HOME

/bin/su $USER -c $CATALINA_HOME/bin/shutdown.sh \>/dev/null

sleep $WAIT

$0 status \&\>/dev/null

if -f $CATALINA_PID ; then

echo $APP didn't stop within $WAIT seconds, forcing stop...

kill -TERM $pid 2\>/dev/null

sleep $(( $WAIT/5 ))

$0 status \&\>/dev/null

ret=$?

rm -f $CATALINA_PID

if $ret = 0 ; then

# not terminated yet, we force it

echo ($app still running, killing...)

kill -KILL $pid 2\>/dev/null

fi

fi

;;

restart)

$0 stop

$0 start

;;

force-reload)

echo Force reload not supported

;;

status)

echo -n $APP is

if ! -f $CATALINA_PID ; then

# not running

echo not running

exit 3

elif -s $CATALINA_PID -a -d /proc/$(\<$CATALINA_PID) ; then

# running

echo running

:

else

# stale pid file

echo dead

exit 1

fi

;;

\*)

echo Usage: /etc/init.d/$APP {start\|restart\|stop\|status}

exit 1

;;

esac

exit 0

script 2

--------

#!/bin/bash

### BEGIN INIT INFO

# Provides: confluence

# Required-Start: $local_fs $network mysql

# Should-Start:

# Required-Stop: $local_fs $network mysql

# Should-Stop:

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Description: Start Confluence - The Enterprise Wiki

### END INIT INFO

# Define some variables

# Name of app ( JIRA, Confluence, etc )

APP=confluence

# Name of the user to run as

USER=prisa

# Location of application's bin directory

CATALINA_HOME=/opt/confluence

# Location of Java JDK

export JAVA_HOME=/usr/lib/jvm/java-6-oracle

case $1 in

# Start command

start)

echo Starting $APP

/bin/su -m $USER -c $CATALINA_HOME/bin/start-confluence.sh \&\> /dev/null

;;

# Stop command

stop)

echo Stopping $APP

/bin/su -m $USER -c $CATALINA_HOME/bin/shutdown.sh \&\> /dev/null

echo $APP stopped successfully

;;

# Restart command

restart)

$0 stop

sleep 5

$0 start

;;

\*)

echo Usage: /etc/init.d/$APP {start\|restart\|stop}

exit 1

;;

esac

exit 0

I tried script 1, when it fails I removed and tried script 2. script 2 seems fine but then there's no catalina pid generated, so I guess it is not started.

Please I need help with this. We are currently in production and can't access confluence.

Thanks

<br />


Answers:
author: PauloP
body: Hi Kayode

I'd suggest to review the all the settings using the official script as a guideline:

<https://confluence.atlassian.com/display/DOC/Start+Confluence+Automatically+on+Linux>

Probably, you're forgetting to call some Tomcat/JAVA function.

Cheers,

Paulo Renato


author: Bruna Griebeler
body: Hi Kayode:  

Great script!  
It seems to be working fine. I adapted here on Ubuntu and I could start and stop my confluence instance just fine.  

**1) Check if the path to the scripts are ok:**   
/opt/confluence/bin/start-confluence.sh  
/opt/confluence/bin/stop-confluence.sh  

**2) Check if the your Java path is correct**   
export JAVA_HOME=/usr/lib/jvm/java-6-oracle  
(you can comment this line or change your JAVA_HOME to /usr/lib/jvm)  

**3) Check if the USER prisa can actually start confluence.** To do that login as that user and see if he is able to manually start it:  

root@yourmachine:\~# **su prisa**   
prisa@yourmachine:\~$ **ls /opt/confluence/bin/**   
prisa@yourmachine:/opt/confluence/bin/$ **./start-confluence.sh**   

I used root to start my confluence and it started just fine.  

**4) Try to remove the \&\> /dev/null from the following lines:**   
/bin/su -m $USER -c $CATALINA_HOME/bin/start-confluence.sh \&\> /dev/null  
/bin/su -m $USER -c $CATALINA_HOME/bin/shutdown.sh \&\> /dev/null  

So you'll be able to see if the confluence is starting or not.  

**5) And the last advice:**   
To see if confluence is actuallt starting, check the process is running.  

# ps aux \| grep confluence  

Hope it helps


author: Bruna Griebeler
body: Hi Kayode:

The script that worked fine for me was the second (script2.txt).

I made some changes to my environment.

Attached as txt for security reasons.


author: Kayode Odeyemi
body: Thanks.

The line \`cat /dev/null \> $CATALINA_HOME/bin/setenv.sh\` was the major problem in script 1. It cleared entries in setenv.sh. Thanks to Ryan Goodwin for this.

Which of the scripts worked for you Bruna?


Tags: error

startup