回到过去的美好时光,我能够用一些在每次 apache 启动时执行的额外代码行来修补 /etc/rc.d/init.d/httpd:
start() {
echo "Setting variables..."
source /path/to/my/script.sh
echo -n $"Starting $prog: "
check13 || exit 1
LANG=$HTTPD_LANG daemon $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
源/path/to/my/script.sh负责设置 PHP 扩展运行所需的一些环境变量。
无论如何,在 systemd 之后,systemctl 占了上风,我无法将系统配置为在 apache 启动之前自动加载 script.sh 变量。手动执行时:
/usr/sbin/httpd -k stop
source /path/to/my/script.sh
/usr/sbin/httpd -k start
一切正常。
在 Fedora 4.0 和类似系统上使用 systemd 服务管理器实现此目的的正确方法是什么?
答案1
您必须使用单元配置文件中的 ExecStartPre 选项。请阅读http://www.freedesktop.org/software/systemd/man/systemd.service.html