如何用upstart可靠地管理凤凰应用程序

时间:2015-08-11 21:12:55

标签: ubuntu upstart phoenix-framework

我刚刚将我的凤凰应用程序更新为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。

我很困惑!

1 个答案:

答案 0 :(得分:0)

我没有足够的代表发表评论,因此我将其添加为答案。

我认为这里的问题是以下一行

pre-start exec /bin/sh /test_app/bin/test_app start

产生的流程不受新贵的控制。相反,请尝试以下行:

 pre-start exec /bin/sh /test_app/bin/test_app foreground

这应该确保衍生的进程仍然属于暴发户。然后你应该能够正常停止它。