2011-07-01 246 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'])” –