実行しているApacheサーバを再起動するには、私のDjangoアプリケーションが必要です。私はmod_pythonを使用しています。DjangoからApacheを再起動する
どの方法が一番簡単ですか?
実行しているApacheサーバを再起動するには、私のDjangoアプリケーションが必要です。私はmod_pythonを使用しています。DjangoからApacheを再起動する
どの方法が一番簡単ですか?
唯一の方法は、Djangoアプリケーションのルート権限を与えた場合です。恐ろしく危険です。しかし、あなたのアプリケーションがrootとして実行されていると仮定して、あなたは
import subprocess
subprocess.Popen(['/etc/init.d/apache2', 'restart'])
を実行するか、またはあなたのディストリビューションは、Apacheを再起動するために持っているものは何でも命令できます。 Djangoアプリがrootでない場合は、pexpect pythonライブラリを使用してsudo
で実行できます。
import pexpect
child = pexpect.spawn('sudo /etc/init.d/apache2 restart')
child.expect('[sudo] password for .*:')
child.sendline(password)
child.interact()
この方法は、Apacheユーザーにも安全ではないどのsudo
を実行する機能を提供する必要があることに注意してください。一般的に、私はこれを達成するための安全な方法を見ることができません。
まあ、sudoのアクセスを特定のアプリケーションやスクリプトの実行のみに制限することは可能です。しかし、すべてで私はOPは、間違ったメカニズムを使用していくつかの基本的な課題を解決しようとしていると推測しています... – andy
@andy合意 - 私は確かにApacheを再起動するよりも基本的な問題を解決する良い方法があります。 –
@ Zhehao: "subprocess.Popen(['/ etc/init.d'、 'apache2 restart'])" –
アプリケーションソースをリロードしたいからですか? –
あなたはもうmod_pythonを使用すべきではありません。推奨されません。 mod_wsgiを使用してください。 –