PCI DSS複数のアプリを実行する準拠環境があり、サーバーを再起動せずに1つのアプリのみを再起動したいのですが、この環境では明らかに許可されていないため、マネージャーがありません。
コマンドラインから単一のWebアプリを再起動するにはどうすればよいですか?
私はパーティーに遅れていることを知っていますが、コマンドラインからアプリをリロードするためにあなたができるちょっとしたトリックは、アプリケーションのweb.xmlに行き、単にそれに触れることです。
touch web.xml
Tomcatは、このファイルの変更に気づくたびにアプリケーションをリロードします。単にタッチすると、実際にはファイルを変更するのではなく、タイムスタンプを変更するだけです。
ここに私がそれをする方法があります:
${Tomcat}/conf/Tomcat-users.xml
に次のような行があることを意味します。<user username="admin" password="secret" roles="manager-gui,manager-script"/>
そうしないと、クロスサイトリクエストフォージェリ(CSRF)保護のために403エラーが発生します。
curl
または任意のコマンドラインツールを使用して、URlをフェッチします<yourserver>/manager/text/reload?path=/<context_path>
:
curl --user user:secret http://localhost:8080/manager/text/reload?path=/mypath
Managerアプリケーションにアクセスしないと、それを行うことはできません。マネージャーアプリケーションにアクセスできても、Webブラウザーの代わりにコマンドラインを使用したい場合は、この Tomcatを管理するためのコマンドラインスクリプト Tomcat-managerを試すことができます。 Pythonが必要ですが、Unixシェルから次のようなことができます。
$ Tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager/ reload /myapp
そして:
$ Tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war
作品はapp.warの名前をtemp app.war.bkp(バックアップの任意の名前)に変更し、Tomcatがwebappのソースフォルダーを削除するときに.bkpの名前を元の名前に変更します。これは、コンソールアクセスユーザーに対してのみ機能します。
残念ながら、コマンドラインからこれを行う方法はないと思います。代わりに、Tomcatの別のインスタンスで再起動する必要がある単一のアプリケーションをホストして、他のアプリケーションに影響を与えずにそのインスタンスを再起動できる方法があるかどうかを確認することをお勧めします。