我正在为django网站使用mod_wsgi apache2适配器,我喜欢在视图中调用一些bash进程,使用通常的
...
p = subprocess.Popen("/home/example.com/restart-tomcat.sh", shell=True)
sts = os.waitpid(p.pid, 0)[1]
...
这个代码在通常的python shell中完美运行,但在django中调用时什么都不做(我现在可以追踪)。我错过了一些wsgi约束吗?该脚本有755个烫发,所以它应该是可执行的。
快速测试
p = subprocess.Popen("date >> home/example.com/wsgi-test.txt", shell=True)
sts = os.waitpid(p.pid, 0)[1]
显示它甚至不执行简单的命令。我目前没有想法,并感谢任何意见。
感谢。
答案 0 :(得分:2)
脚本本身可能具有755个权限,但它调用的内容可能没有正确的权限。特别是如果你在端口80上运行tomcat,这是一个特权端口。
有很多方法可以解决这类问题(setuid,sudo),但你最好知道自己在做什么。
我会更改你的Popen调用,打开一个包含内容date >> /home/example.com/test.txt
的不同脚本,只是为了查看它是否正在执行它,然后你可以担心尝试调试权限。
答案 1 :(得分:0)