我正在为生产环境和登台环境(恰好位于同一服务器中)部署Django应用程序。为了做到这一点,我为两个环境运行supervisord
两个不同的进程。
因此,在我的ansible-playbook
中,我模拟了我的uwsgi配置(根据环境变量)并将其复制到/etc/supervisor/conf.d
文件夹。
假设我想第一次部署到新的临时环境。由于目前没有配置文件,我需要supervisorctl reread
和supervisorctl update
。
当我从docs阅读时:
当
state = present
时,如果程序/组不存在,模块将调用supervisorctl reread
然后调用supervisorctl add
。当
state = restarted
时,模块会拨打supervisorctl update
,然后拨打supervisorctl restart
。
但这是否意味着如果我想支持新的暂存实例和我当前的实例,我需要调用它们?或者仅仅使用state=restarted
就足够了?或者我做错了什么?
这段代码可以吗?或者它是否重复了一些信息?
- name: Add uwsgi app (reread + add)
become: yes
supervisorctl: name={{uwsgi_app}} state=present
- name: Start uwsgi app (update + restart)
become: yes
supervisorctl: name={{uwsgi_app}} state=restarted
答案 0 :(得分:2)
您需要通过添加一行来调用两者或在应用程序配置文件中设置(在/etc/supervisor/conf.d
中设置的文件)for the application to start automatically:
autostart: true
虽然默认情况下是这样,但我更喜欢明确。