2011-07-01 12 views
0

実行しているApacheサーバを再起動するには、私のDjangoアプリケーションが必要です。私はmod_pythonを使用しています。DjangoからApacheを再起動する

どの方法が一番簡単ですか?

+0

アプリケーションソースをリロードしたいからですか? –

+0

あなたはもうmod_pythonを使用すべきではありません。推奨されません。 mod_wsgiを使用してください。 –

答えて

1

唯一の方法は、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を実行する機能を提供する必要があることに注意してください。一般的に、私はこれを達成するための安全な方法を見ることができません。

+1

まあ、sudoのアクセスを特定のアプリケーションやスクリプトの実行のみに制限することは可能です。しかし、すべてで私はOPは、間違ったメカニズムを使用していくつかの基本的な課題を解決しようとしていると推測しています... – andy

+0

@andy合意 - 私は確かにApacheを再起動するよりも基本的な問題を解決する良い方法があります。 –

+0

@ Zhehao: "subprocess.Popen(['/ etc/init.d'、 'apache2 restart'])" –

関連する問題