我注册了 init.d 脚本,当我直接调用 /etc/init.d/gae 时,它似乎可以工作……PID 文件已创建,但当我执行附言
我已经谷歌搜索过了,确定这可能是路径问题,因为“python”没有正确定位?如果我删除“引号”程序变量 Google AppEngine 按预期运行并保持运行,但它也不会脱离终端......有什么想法吗?
name=gae
user=$name
pid=/var/run/$name.pid
prog="python /opt/google_appengine/dev_appserver.py --host=0.0.0.0 --admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www"
case "${1}" in
start)
echo "Starting...Google App Engine"
start-stop-daemon --start --make-pidfile --background --oknodo --user "$user" --name "$name" --pidfile "$pid" --startas "$prog"
;;
stop)
echo "Stopping...Google App Engine"
;;
restart)
${0} stop
sleep 1
${0} start
;;
*)
echo "Usage: ${0} {start|stop|restart}"
exit 1
;;
esac
exit 0
答案1
您需要将命令及其选项分开,将所有这些选项指定为 --startas "$prog" 意味着 start-stop-daemon 将查找名为“python /opt/google_appengine/dev_appserver.py --host=0.0.0.0 --admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www”的命令,所有字符串都没有任何选项...
所以:
prog="python"
options="/opt/google_appengine/dev_appserver.py --host=0.0.0.0 --admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www"
...
start-stop-daemon --start --make-pidfile --background --oknodo --user "$user" --name "$name" --pidfile "$pid" --startas "$prog" -- $options
此外,如果 dev_appserver.py 具有执行权限并以 #!/usr/bin/python 开头,则将其设为 $prog 并将其从 $options 中删除:
prog="/opt/google_appengine/dev_appserver.py"
options="--host=0.0.0.0 --admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www"