2011-07-01 182 views
0

我需要我的Django應用程序才能重新啓動運行它的Apache服務器。我正在使用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'])」 –