我刚刚将我的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/

10-13 09:22