1

Web アプリケーションに http リクエストを送信するときに、nginx をリロードしたいと考えています。そこで、Web アプリケーションのサーブレットで、nginx reload コマンドを実行します。Java コードは次のとおりです: " Runtime.getRuntime().exec("/etc/init.d/nginx reload").waitFor(); ". 私はそれを試しましたが、それは役に立ちません。しかし、root ユーザーとしてサーバーにログインし、上記の Java コードを実行すると、動作します! その理由は、Tomcat ユーザーに nginx をリロードする権限がないためだと思います。tomcat プロセスは、ユーザー tomcat6 として実行されています。nginx マスター プロセスはユーザー root として実行され、nginx ワーカー プロセスはユーザー www-data として実行されます。どうすればこの問題を解決できますか? ありがとう。

私の環境:OS: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 に答える