我正在使用由distillery支持的edeliver将Elixir项目部署到远程。
我还成功地创建了systemd.service文件,用于从命令行启动、停止、重新启动发行版等。
但是mix edeliver start production命令似乎绕过了systemd,通过普通的好的bin/my_app start外壳命令来运行。我想要的是始终使用systemd,即使是热上传,因为它(与upstart不同)确实提供了reload功能。
我找不到我该告诉谁使用systemd来重新启动版本。它应该是delivery策略吗?还有别的吗?我知道这个问题不适合这么做,但我只是迷路了。
那么:我可以强制distillery上的edeliver使用systemd来启动版本吗?如果是,是如何实现的?
发布于 2017-08-11 19:40:49
FWIW,我会把它贴在这里。我用一个讨厌的杂乱无章的东西解决了这个问题。我有一个包含少量后续build、deploy和ping命令的release.sh脚本。因此,我做了以下工作:
# mix edeliver restart production
for host in `cat .deliver/config | grep PRODUCTION_HOSTS | cut -d '=' -f 2 | sed -e 's/"//g'`
do
echo "Restarting the remote [$host]..."
echo `ssh rates-injector@$host sudo systemctl restart rates_injector.service`
done
echo "Likely restarted."基本上,我手动为systemctl发出restart命令,从.deliver/config文件中获取生产主机列表。
https://stackoverflow.com/questions/45618646
复制相似问题