我找到了一个init.d脚本模板 - 填充空白并尝试使用以下内容调用GAE:
start-stop-daemon -S --background 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
这不起作用......但如果我从命令行运行正常但挂起输入......
如何在启动时使用init.d调用此命令并更改为用户“gae” - 类似于Apache运行为www-data
答案 0 :(得分:0)
我也(简要地)尝试使用start-stop-daemon
来控制Google App Engine(没有任何运气),所以我最终使用/etc/rc.local
来启动守护程序。
将以下内容添加到/etc/rc.local
(任何exit
命令之前):
sudo -i -u gae python /opt/google_appengine/dev_appserver.py --host=0.0.0.0 \
--storage_path /var/cache/appengine/gae \
--admin_host=0.0.0.0 --php_executable_path=/usr/bin/php-cgi /var/www > /dev/null 2> /dev/null &
注意,我在启动选项中包含了storage_path。确保执行以下操作:
sudo mkdir -p /var/cache/appengine/gae
sudo chown gae: /var/cache/appengine/gae
要重新启动进程(更新后),我只需要杀死python并手动执行rc.local:
sudo killall -9 python
sudo /etc/rc.local
答案 1 :(得分:0)
我终于弄清楚了start-stop-daemon是如何以及为什么不能正常工作......这一切都归结为一些简单的语法错误和一个(仍然?)我的误解:
简而言之,当我使用这个init.d脚本并相应地注册它时,GAE会相应地启动和停止:
#!/bin/sh
### BEGIN INIT INFO
# Provides: Google App Engine daemon management
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop:
# Short-Description: Google App Engine initscript
# Description: Start/stop appengine web server
### END INIT INFO
# Author: Alex Barylski <alex.barylski@gmail.com>
. /lib/lsb/init-functions
#
# Initialize variables
#
name=appengine
desc="Google App Engine"
bind=0.0.0.0
docroot=/var/www
phpexec=/usr/bin/php-cgi
pidfile=/var/run/$name.pid
args="--host=$bind --admin_host=$bind --php_executable_path=$phpexec"
prog='/usr/bin/python /opt/google_appengine/dev_appserver.py'
#
# TODO: Figure out how to switch user (ie: --chuid www-data)
#
case "${1}" in
start)
echo "Starting...$desc"
start-stop-daemon --start --make-pidfile --background --oknodo \
--pidfile $pidfile \
--name $name \
--exec $prog \
-- $args $docroot
;;
stop)
echo "Stopping...$desc"
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $prog
;;
restart)
${0} stop
sleep 1
${0} start
;;
*)
echo "Usage: ${0} {start|stop|restart}"
exit 1
;;
esac
exit 0
我无法弄清楚如何以www-data启动服务,我确信我可以使这个脚本更加健壮,但出于开发目的,它已经足够并且可以作为守护进程运行。
希望这可以帮助将来的某个人, 亚历