I’d installed Openfire 4.0.3 into a new CenOS 7, and now I am having problems with lost of configuration after rebooting OS. Clients can’t connect and administrators can’t sign in to Openfire admin area. Everytime when I need to reboot my CentOS, I need to edit /opt/openfire/conf/openfire.xml and change setup = true, to reconfigure all again. I had lucky that I’m using external database (MySQL) to store data, thus avoiding further losses. Someone could help me to identify the problem? I attached my logs. Thank you.
warn.log.zip (773 Bytes)
info.log.zip (1414 Bytes)
error.log.zip (1347 Bytes)
all.log.zip (1903 Bytes)
Did you install Openfire with the RPM provided by this website?
Are you running openfire via the sysvinit (systemd) script? systemctl start openfire
rpm -Va openfire
output would be useful as well.
Yes, I did. I running openfire via the ntsysv, automaticaly.
This ‘rpm -Va openfire’ results in:
rpm -Va openfire
S.5…T. c /opt/openfire/conf/openfire.xml
S.5…T. c /opt/openfire/conf/security.xml
S.5…T. c /opt/openfire/resources/security/keystore
S.5…T. c /opt/openfire/resources/security/truststore
This mean it is all right?!
ll /opt/openfire/
total 244
drwxr-xr-x 2 daemon daemon 91 Ago 22 14:25 bin
-rw-r–r-- 1 daemon daemon 211535 Ago 19 10:19 changelog.html
drwxr-xr-x 2 daemon daemon 4096 Set 1 09:59 conf
drwxr-xr-x 4 daemon daemon 28 Ago 19 10:19 documentation
drwxr-xr-x 2 daemon daemon 54 Ago 1 09:07 embedded-db
drwxr-xr-x 6 daemon daemon 4096 Ago 22 14:25 jre
drwxr-xr-x 2 daemon daemon 4096 Ago 22 14:25 lib
-rw-r–r-- 1 daemon daemon 10871 Ago 19 10:19 LICENSE.html
drwxr-xr-x 2 daemon daemon 139 Ago 22 14:27 logs
drwxr-xr-x 3 daemon daemon 19 Mar 18 2015 monitoring
drwxr-xr-x 8 daemon daemon 4096 Ago 22 14:26 plugins
-rw-r–r-- 1 daemon daemon 5332 Ago 19 10:19 README.html
drwxr-xr-x 7 daemon daemon 76 Ago 19 10:19 resources
— // —
cat /etc/rc.d/init.d/openfire
#!/bin/sh
openfire Stops and starts the Openfire XMPP service.
chkconfig: 2345 99 1
description: Openfire is an XMPP server, which is a server that facilitates \
XML based communication, such as chat.
config: /opt/openfire/conf/openfire.xml
config: /etc/sysconfig/openfire
pidfile: /var/run/openfire.pid
This script has currently been tested on Redhat, CentOS, and Fedora based
systems.
Begin setup work
Initialization
PATH="/sbin:/bin:/usr/bin:/usr/sbin"
RETVAL=0
Check that we are root … so non-root users stop here.
if [ “id -u
” != 0 ]; then
echo $0 must be run as root
exit 1
fi
Get config.
[ -f “/etc/sysconfig/openfire” ] && . /etc/sysconfig/openfire
if [ -f “/etc/init.d/functions” ]; then
FUNCTIONS_FOUND=true
. /etc/init.d/functions
fi
If openfire user is not set in sysconfig, set to daemon.
[ -z “$OPENFIRE_USER” ] && OPENFIRE_USER=“daemon”
If pid file path is not set in sysconfig, set to /var/run/openfire.pid.
[ -z “$OPENFIRE_PIDFILE” ] && OPENFIRE_PIDFILE="/var/run/openfire.pid"
-----------------------------------------------------------------
If a openfire home variable has not been specified, try to determine it.
if [ -z “$OPENFIRE_HOME” -o ! -d “$OPENFIRE_HOME” ]; then
if [ -d "/usr/share/openfire" ]; then
OPENFIRE_HOME="/usr/share/openfire"
elif [ -d "/usr/local/openfire" ]; then
OPENFIRE_HOME="/usr/local/openfire"
elif [ -d "/opt/openfire" ]; then
OPENFIRE_HOME="/opt/openfire"
else
echo "Could not find Openfire installation under /opt, /usr/share, or /usr/local."
echo "Please specify the Openfire installation location as variable OPENFIRE_HOME"
echo "in /etc/sysconfig/openfire."
exit 1
fi
fi
If log path is not set in sysconfig, set to $OPENFIRE_HOME/logs.
[ -z “$OPENFIRE_LOGDIR” ] && OPENFIRE_LOGDIR="${OPENFIRE_HOME}/logs"
Attempt to locate java installation.
if [ -z “$JAVA_HOME” ]; then
if [ -d "${OPENFIRE_HOME}/jre" ]; then
JAVA_HOME="${OPENFIRE_HOME}/jre"
elif [ -d "/etc/alternatives/jre" ]; then
JAVA_HOME="/etc/alternatives/jre"
else
jdks=`ls -r1d /usr/java/j*`
for jdk in $jdks; do
if [ -f "${jdk}/bin/java" ]; then
JAVA_HOME="$jdk"
break
fi
done
fi
fi
JAVACMD="${JAVA_HOME}/bin/java"
if [ ! -d “$JAVA_HOME” -o ! -x “$JAVACMD” ]; then
echo "Error: JAVA_HOME is not defined correctly."
echo " Can not sure execute $JAVACMD."
exit 1
fi
Prepare location of openfire libraries
OPENFIRE_LIB="${OPENFIRE_HOME}/lib"
Prepare openfire command line
OPENFIRE_OPTS="${OPENFIRE_OPTS} -DopenfireHome=${OPENFIRE_HOME} -Dopenfire.lib.dir=${OPENFIRE_LIB}"
Prepare local java class path
if [ -z “$LOCALCLASSPATH” ]; then
LOCALCLASSPATH="${OPENFIRE_LIB}/startup.jar"
else
LOCALCLASSPATH="${OPENFIRE_LIB}/startup.jar:${LOCALCLASSPATH}"
fi
Export any necessary variables
export JAVA_HOME JAVACMD
Lastly, prepare the full command that we are going to run.
OPENFIRE_RUN_CMD="${JAVACMD} -server ${OPENFIRE_OPTS} -classpath “${LOCALCLASSPATH}” -jar “${OPENFIRE_LIB}/startup.jar”"
End setup work
start() {
OLD_PWD=`pwd`
cd $OPENFIRE_LOGDIR
PID=$(findPID)
if [ -n "$PID" ]; then
echo "Openfire is already running."
RETVAL=1
return
fi
# Start daemons.
echo -n "Starting openfire: "
rm -f nohup.out
su -s /bin/sh -c "nohup $OPENFIRE_RUN_CMD > $OPENFIRE_LOGDIR/nohup.out 2>&1 &" $OPENFIRE_USER
RETVAL=$?
echo
[ $RETVAL -eq 0 -a -d /var/lock/subsys ] && touch /var/lock/subsys/openfire
sleep 1 # allows prompt to return
PID=$(findPID)
echo $PID > $OPENFIRE_PIDFILE
cd $OLD_PWD
}
stop() {
# Stop daemons.
echo -n "Shutting down openfire: "
if [ -f "$OPENFIRE_PIDFILE" ]; then
killproc -p $OPENFIRE_PIDFILE -d 10
rm -f $OPENFIRE_PIDFILE
else
PID=$(findPID)
if [ -n $PID ]; then
kill $PID
else
echo "Openfire is not running."
fi
fi
RETVAL=$?
echo
[ $RETVAL -eq 0 -a -f "/var/lock/subsys/openfire" ] && rm -f /var/lock/subsys/openfire
}
restart() {
stop
sleep 10 # give it a few moments to shut down
start
}
condrestart() {
[ -e "/var/lock/subsys/openfire" ] && restart
return 0
}
status() {
PID=$(findPID)
if [ -n "$PID" ]; then
echo "openfire is running"
RETVAL=0
else
echo "openfire is not running"
RETVAL=1
fi
}
findPID() {
echo `ps ax --width=1000 | grep openfire | grep startup.jar | awk '{print $1}'`
}
Handle how we were called.
case “$1” in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
condrestart
;;
status)
status
;;
*)
echo "Usage $0 {start|stop|restart|status|condrestart}"
RETVAL=1
esac
exit $RETVAL
Try to ‘ls -l /opt/openfire/conf/openfire.xml && chmod 777 /opt/openfire/conf/openfire.xml’ before starting openfire. Set the permissions back to something save after the initial configuration.
‘cat /opt/openfire/conf/openfire.xml’ to make sure that it contains your setup data.
Thank you for the tips but it didn’t work. My steps were:
cat /opt/openfire/conf/openfire.xml
here I copied the 1st result for after compare
ls -l /opt/openfire/conf/openfire.xml
-rw-r–r-- 1 daemon daemon 2432 Set 2 15:56 /opt/openfire/conf/openfire.xml
chmod 777 /opt/openfire/conf/openfire.xml
ls -l /opt/openfire/conf/openfire.xml
-rwxrwxrwx 1 daemon daemon 2432 Ago 22 14:28 /opt/openfire/conf/openfire.xml
service openfire restart
here I detected that Openfire lost the config again
vim /opt/openfire/conf/openfire.xml
I changed true to false
service openfire restart
now I made sure that all is all right after reconfiguring Openfire through web browser
chmod 644 /opt/openfire/conf/openfire.xml
ls -l /opt/openfire/conf/openfire.xml
-rw-r–r-- 1 daemon daemon 2432 Set 2 15:45 /opt/openfire/conf/openfire.xml
cat /opt/openfire/conf/openfire.xml
here I copied the 2nd result for the comparison; conclusion: no changes
service openfire restart
again openfire lost config
The openfire.xml should have changed?
Yes it should change. If I got it right the only change you see is false to true which is odd.