Supervisord:有没有办法让孩子接触?

时间:2012-05-15 13:10:21

标签: supervisord

我正在设置一台服务器来托管一个Django应用程序:

  1. uWSGI应用程序由ubuntu的uWSGI init脚本启动
  2. celerydsupervisord
  3. 开始

    所以我正在编写一个部署脚本:

    1. 从git中提取代码
    2. 迁移数据库
    3. 告诉uWSGI重新启动,这样它就会获取新代码。
    4. 告诉celeryd重新启动,因此它也会选择新代码。
    5. uWSGI具有以下配置功能:

      touch-reload
      gracefully reload the uWSGI stack when a file/directory changes.
      

      所以我的脚本由非特权用户运行,在该用户下运行所有​​应用程序的进程。

      要重新启动uWSGI我只需touch ~/.restart_uwsgi

      对于celeryd下运行的supervisord,如果没有授予对非特权用户的sudo访问权限,我可以做同样的事情,这样他就可以supervisorctl restart celeryd吗?

1 个答案:

答案 0 :(得分:0)

由于我还没有找到更好的方法,这就是我现在正在做的事情:

# restart_my_proc.sh:
#!/bin/sh
supervisorctl restart <my_proccess_name>

chmod +x restart_my_proc.sh

# sudoers:
<site_user> ALL= NOPASSWD:/path/to/restart_my_proc.sh

# my_deploy_script.sh
sudo /path/to/restart_my_proc.sh

所以我使用sudo,不是最好的解决方案,但它确实有用。

如果有人对此有更好的答案,我很乐意改变已接受的答案。