1

当我向 Web 应用程序发送 http 请求时,我想重新加载 nginx。所以在 web 应用程序的 servlet 中,我执行了 nginx reload 命令。Java 代码是:“ Runtime.getRuntime().exec("/etc/init.d/nginx reload").waitFor(); ”。我试过了,但没有用。但是如果我以 root 用户身份登录服务器,然后执行上面的 Java 代码,它就可以工作了!所以我猜测原因是tomcat用户没有权限重新加载nginx。tomcat 进程以用户tomcat6 运行。nginx 主进程以 root 用户身份运行,nginx 工作进程以用户 www-data 身份运行。我该如何解决这个问题?谢谢。

我的环境:操作系统:Ubuntu 10.04 tomcat:6.0.24 nginx:1.2.2。Tomcat 和 nginx 都是通过 Ubuntu 的“apt-get”方式安装的。

4

1 回答 1

0

你可以使用sudo命令。您也可以授予tomcat用户相应的权限。您也可以执行su将用户更改为具有相应权限的用户,然后执行 nginx reload。实际上有很多不同的方法可以解决这个问题。我认为编写和测试一些可以从tomcat用户会话重新加载nginx并将其用于重新加载而不是命令
的脚本会更好。/etc/init.d/nginx reload

于 2012-08-01T13:06:01.047 回答