我刚刚将我的phoenix应用程序更新为0.16.0。我正在关注与deployment相关的文档。
到目前为止,一切都进行得比较顺利。 phoenix文档告诉您设置新贵脚本,如下所示:
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
upstart告诉我它已经停止了phoenix,但是运行ps aux|grep phoenix
之后,我可以看到该应用程序仍然非常运行,并且服务器仍在本地主机(localhost):4000返回200。我很困惑!
最佳答案
我没有足够的代表对此发表评论,所以我将其添加为答案。
我认为这里的问题是以下几行
pre-start exec /bin/sh /test_app/bin/test_app start
是不受新贵控制的生成过程。相反,请尝试以下行:
pre-start exec /bin/sh /test_app/bin/test_app foreground
这应该确保产生的进程仍然属于新贵。然后,您应该能够正常停止它。
关于ubuntu - 如何通过Upstart可靠地管理phoenix应用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31952044/