5

次のものを持つDjangoアプリをホストするサーバーをセットアップしています:

  1. uWSGIubuntu の uWSGI init スクリプトによって起動されるアプリ
  2. celerydによって開始されたsupervisord

そこで、次のようなデプロイ スクリプトを作成しています。

  1. git からコードをプルする
  2. DB を移行する
  3. uWSGI起動するように指示すると、新しいコードが取得されます。
  4. celeryd起動するように指示すると、新しいコードも取得されます。

uWSGI次の構成機能があります。

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

したがって、私のスクリプトは、アプリのすべてのプロセスが実行される特権のないユーザーによって実行されます。

再起動するuWSGIには、簡単にできますtouch ~/.restart_uwsgi

特権のないユーザーに sudo アクセスを許可せずに実行するために同じことをceleryd実行できる方法はありますか?supervisordsupervisorctl restart celeryd

4

1 に答える 1

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を使用していますが、これは最善の解決策ではありませんが、機能します。

誰かがこれに対してより良い答えを持っているなら、私は喜んで受け入れられた答えを変更します。

于 2012-05-16T16:25:42.277 に答える