【问题标题】:How can I reload Nginx in tomcat web application如何在 tomcat Web 应用程序中重新加载 Nginx
【发布时间】:2012-08-01 13:02:29
【问题描述】:

当我向 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 雄猫:6.0.24 nginx:1.2.2。 Tomcat和nginx都是通过Ubuntu的“apt-get”方式安装的。

【问题讨论】:

    标签: java nginx


    【解决方案1】:

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

    【讨论】:

    • 非常感谢。你能告诉我如何授予tomcat用户相应的权限,我应该授予tomcat用户什么权限?我对Linux不是很熟悉,只有一点点:)
    • 首先,您可以执行ls -la | grep nginx 命令来确定哪个用户和组拥有nginx。在我的例子中,所有守护进程都有 root 组和 root 用户作为它们的所有者。因此,我可以使用命令sudo groupadd nginx_admin 添加负责 nginx 管理的新组。然后我可以使用命令sudo chown root:nginx_admin /etc/init.d/nginx 将 nginx 的所有者组设置为 nginx_admin 组。请注意,我使用 root 作为 nginx 的所有者用户,因为我不想更改它。然后你终于可以使用sudo usermod -a -G nginx_admin tomcat将tomcat用户添加到nginx_admin组了。
    猜你喜欢
    • 1970-01-01
    • 2011-05-18
    • 2016-05-07
    • 2011-04-25
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多