我正在使用edeliver
备份的distillery
将Elixir项目部署到远程项目。
我还成功创建了systemd.service
文件,用于从命令行启动,停止,重启等等。
但mix edeliver start production
命令似乎通过普通的旧systemd
shell命令绕过bin/my_app start
运行发布。我想要的是始终使用systemd
,即使是热门上传,因为它(与upstart
不同)确实提供了reload
功能。
我无法找到使用systemd
来重新启动发布的内容和对象。应该是delivery
策略吗?别的什么?我理解这个问题并不适合SO,但我只是迷失了。
所以:我可以强制edeliver
超过distillery
使用systemd
开始发布吗?如果是,怎么样?
答案 0 :(得分:1)
FWIW,我会在这里发布。我用一个讨厌的kludge克服了这个问题。我有一个release.sh
脚本,其中包含很少的后续build
,deploy
和ping
命令。所以我做了以下事情:
# 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."
基本上,我手动为restart
发出systemctl
命令,从.deliver/config
文件中获取生产主机列表。