POPFileをユーザ権限で動かすことにした。理由は、以下の3つだ。
もちろんセキュリティのため。
複数のユーザがいる場合にも、個々のユーザごとにPOPFileを使いたい。
POPFileがたまに落ちることがあるので、ユーザのcronで定時に再起動をかける。
ついでに、データやログをユーザのディレクトリに移すことにした。。
いままで、/var/lib/popfileにあったデータやログは、ホームディレクトリ直下の.popfileに置くことにする。
まず、動作しているPOPFileを停止する。
そしt、/var/lib/popfileのデータをすべて.popfileディレクトリにコピーし、ファイルのオーナーをユーザ自身にする。
# service popfile stop
# mv /var/lib/popfile ~nor/.popfile
# chown -R nor ~/nor/.popfile
そして、以下のコマンドを~/binディレクトリにpopfileという名で作成する。
#!/bin/sh
# popfile
# usage: popfile { start | stop | restart | }
POPFILE_USER=${HOME}/.popfile/
POPFILE_ROOT=/usr/share/popfile/
popfile="${POPFILE_ROOT}popfile.pl"
cwd=`/bin/pwd`
POPFILE_LOGDIR=${POPFILE_USER}log/
POPFILE_PID=${POPFILE_LOGDIR}popfile.pid
HTML_PORT=8081
PID=`/bin/cat ${POPFILE_PID} 2> /dev/null`
start() {
echo -n "Starting POPFile as background process:"
if [ "${PID}" = "" ] ; then
echo " "
cd ${POPFILE_USER}
export POPFILE_ROOT=${POPFILE_ROOT}
export POPFILE_USER=${POPFILE_USER}
${popfile} --set config_piddir=${POPFILE_LOGDIR} --set logger_logdir=${POPFILE_LOGDIR} --set html_port=${HTML_PORT} &> ${POPFILE_LOGDIR}popfile.boot &
echo " done"
else
echo " POPFile already running PID=${PID}"
fi
}
stop() {
echo -n "Stopping POPFile: "
if [ "${PID}" = "" ] ; then
echo "POPFile not running"
else
kill ${PID}
# echo PID ${PID}
if [ -e $POPFILE_PID ] ; then
rm ${POPFILE_PID}
fi
PID=""
echo " done"
fi
}
status() {
if [ "${PID}" = "" ] ; then
echo "down"
else
echo "up"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac
cd $cwd
exit 0
POPFileが起動したらWebインタフェースで一度[詳細設定]を開き、設定を保存する。
あとは、cronにpopfile restartが一時間後とに実行されるようにセットする。
自動起動が設定してあるなら、それを止めておく。
# chkconfig --level 345 popfile off