我正在为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]
揭示它甚至不执行琐碎的命令.我现在没有想法,并感谢任何意见.
谢谢.
解决方法:
脚本本身可能具有755个权限,但它调用的内容可能没有正确的权限.特别是如果你在端口80上运行tomcat,这是一个特权端口.
有很多方法可以解决这类问题(setuid,sudo),但你最好知道自己在做什么.
我将更改您的Popen调用以打开另一个脚本,其内容日期为>> /home/example.com/test.txt只是为了查看它是否正在执行它,然后您可以担心尝试调试权限.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。