我正在开发一个使用 python-daemon 包启动瓶子应用程序的守护程序脚本。脚本是 /etc/init.d/app.sh
在 /etc/environment 中设置了一些环境变量,这些变量将在应用程序的 settings.py 文件 (os.environ) 中使用。
一旦我激活 virtualenv,所有系统环境变量都会被删除(包括我在 /etc/environment 中设置的那些)。
我正在使用的初始化脚本是
. /root/webapps/myapp/bin/activate
case "$1" in
start)
echo "Starting server"
# Start the daemon
python /root/webapps/myapp/project/index.py start
;;
stop)
echo "Stopping server"
# Stop the daemon
python /root/webapps/myapp/project/index.py stop
;;
restart)
echo "Restarting server"
python /root/webapps/myapp/project/index.py restart
;;
*)
# Refuse to do other stuff
echo "Usage: /etc/init.d/app {start|stop|restart}"
exit 1
;;
esac
exit 0
此外,当我检查我在 ipython shell 的 /etc/environment 中定义的环境变量时,变量显示正常。只有当我尝试使用 init 脚本启动应用程序时,一切都变为空白。
我正在寻找的是在 virtualenv 中的应用程序中使用 /etc/environment 中定义的变量的正确方法。