我刚刚将我的凤凰应用程序更新为0.16.0。我正在关注与deployment相关的文档。
到目前为止,一切都相对顺利。凤凰文档告诉你设置一个upstart脚本:
description "test phoenix app"
## Uncomment the following two lines to run the
## application as www-data:www-data
setuid phoenix
setgid phoenix
start on runlevel [2345]
stop on runlevel [016]
expect stop
respawn
env MIX_ENV=prod
export MIX_ENV
## Uncomment the following two lines if we configured
## our port with an environment variable.
#env PORT=8888
#export PORT
## Add app HOME directory.
env HOME="/home/phoenix"
export HOME
pre-start exec /bin/sh /test_app/bin/test_app start
post-stop exec /bin/sh /test_app/bin/test_app stop
此脚本成功启动应用程序,但是当我运行时
initctl stop phoenix
暴发户告诉我它已经停止了phoenix,但是在运行ps aux|grep phoenix
之后我可以看到应用程序仍在运行,服务器仍在localhost:4000返回200。
我很困惑!
答案 0 :(得分:0)
我没有足够的代表发表评论,因此我将其添加为答案。
我认为这里的问题是以下一行
pre-start exec /bin/sh /test_app/bin/test_app start
产生的流程不受新贵的控制。相反,请尝试以下行:
pre-start exec /bin/sh /test_app/bin/test_app foreground
这应该确保衍生的进程仍然属于暴发户。然后你应该能够正常停止它。