Linux 上でプロジェクトをリリースするために Tomcat を展開するプロセスにおけるさまざまな問題と解決策

Linux 上でプロジェクトをリリースするために Tomcat を展開するプロセスにおけるさまざまな問題と解決策

プロジェクトをプロジェクトサイトのテスト環境にデプロイする

JDK1.8
トムキャット8.5
Maven パッケージ化された戦争
Linux-----Centos
誰がその場で Tomcat を渡してきて、Linux プラットフォームの ****** ディレクトリにアップロードして解凍したのかはわかりません。ダイレクトスタート

図1:

Tomcat ディレクトリ構造

質問1

Tocmat は初めて起動されるため、ログ ファイルはありません。したがって、./startup.sh を直接起動します。次のコマンドを使用して、ログ情報を動的に表示できます。実行後のヒント実行権限がありません

./startup.sh & tailf ../logs/catalina.out

問題分析:現在のユーザーには .sh 実行ファイルを実行する権限がありません

問題解決:コマンド chmod u+x *.sh を使用します。 tomcat/binディレクトリで実行

コマンド分析:現在のディレクトリ内のすべての .sh ファイルの所有者に実行権限を追加することを意味します。

  • chmodは、ファイルの権限モードを変更する権限管理コマンドの略語です。
  • u は所有者を表します。
  • x は実行権限を表します。
  • 「+」は権限の追加を示します。
  • 次のようにファイルを個別に指定することもできます: chmod u+x abc.sh
  • 次に、./startup.sh で起動します。

図2:

権限が不十分であると表示されました。

質問2

起動後、***** ディレクトリ内のファイルが見つからないというエラー メッセージが表示されます。

問題分析:この問題は、Tomcat の server.xml ファイルに複数のコンテキスト環境が設定されているために発生します。ただし、指定されたディレクトリにはプロジェクトがデプロイされていません。

問題の解決方法: server.xml ファイル内のすべてのコンテキストを削除します。 tomcat ディレクトリの webapps および wtpwebapps の下にデプロイされたすべてのプロジェクトを削除します。現時点では、別のebankを開始するだけです。起動に成功しました。8080 へのアクセスも成功しました。

図3:

コンテキストを含む server.xml ディレクトリ。

質問3

Maven によってパッケージ化された war を Tomcat サーバーの Web アプリケーションに追加します。それでは始めましょう。しかし、エラーポートは使用されています。

問題分析:この操作は、前のステップを一時停止せずに実行されます。これにより、ポートが占有されます。しかし、Tomcatを直接停止した後でも、ポートが占有されていると報告されます。

問題解決:より暴力的なアプローチを使用する:
ebank プロセス ID を照会します: ps aux|grep tomcat
プロセスを直接終了します: kill-9 PID tomcat プロセスを終了し、その後正常に起動できるようになります 図 4:

ポート占有エラーメッセージ

質問4

この時点では正常に起動できますが、エラーが報告されます: java.lang.OutOfMemoryError: PermGen space (永続領域のメモリ オーバーフローに属するメモリ オーバーフローを促します)。

問題分析: Tomcat のメモリ パラメータが以前に設定されていません。現在デプロイされているプロジェクトは大量のメモリを占有し、多くのクラスを読み込みます。その結果、永続領域のメモリが不足することになります。

解決策: tomcat の bin ディレクトリにある catalina.sh ファイルをコピーして変更し、元のファイルをバックアップします。 catalina.sh ファイルで cygwin=false の位置を見つけて、その前にパラメータを追加します。引用符を含める必要があることに注意してください。
JAVA_OPTS="-Xms256m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m"
tomcat/bin 内の変更されたファイルを置き換えます。

図5:

ヒープメモリオーバーフローエラーメッセージ

図6:

catalina.sh ファイルの変更された内容

質問5

このとき、再起動はされますが、catalina.sh ファイルが見つからないというメッセージが表示されます。

問題分析: catalina.sh 実行ファイルが startup.sh 実行ファイル内で呼び出されるため。これにより、Tomcat サービスが開始されます。次に、ll コマンドを使用して bin ディレクトリを表示します。 catalina.sh ファイルが実行可能ファイルではなくなったという問題が見つかりました。 (緑色ではない)問題の解決方法: chmod u+x catalina.sh を再度使用して、実行権限を付与します。

図7:

startup.shファイルでcatalina.sh実行ファイルを呼び出します

図 8: この図では hello.sh を例に挙げています。 (catalina.shとは異なり黒で表示されます)

実行可能ファイルかどうかを判別する

質問6

起動は成功しましたが、ブラウザでプロジェクトにアクセスできませんでしたが、8080へのアクセスは成功しました。

問題分析: Tomcat の webapps ディレクトリで、Tocmat によって解凍された後、各 War パッケージにバージョン番号があることがわかります (war パッケージは Maven パッケージ化によって生成され、バージョン番号があります)。ブラウザがアクセスする正しいアドレスにバージョン番号がない問題の解決策:プロジェクトを削除し、War パッケージの名前を変更します。もう一度やり直してください。これまでのところすべて成功しています 図8:

webapps ディレクトリ内のバージョン番号付きの war プロジェクト

追加コマンド

ログをクリアします:

エコー -n "" > ../logs/catalina.out
	固定構文: echo -n "" >

ログサイズを確認します:

du -h ../logs/catalina.out
	固定構文: du -h >

Linux に Tomcat をデプロイしてプロジェクトをリリースする過程でのさまざまな問題の解決に関するこの記事はこれで終わりです。Linux に Tomcat をデプロイすることに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux(中心OS7)は、Java Webプロジェクトの実行環境を構築するためにJDK、Tomcat、MySQLをインストールします。
  • Linux での Tomcat8 のインストールとアンインストールに関する詳細なグラフィック チュートリアル
  • Linux でシェル スクリプトを使用して Tomcat の状態を監視し、自動的に起動する手順
  • tomcat をインストールし、Linux で Web サイトを展開します (推奨)
  • Linux (CentOS7) に Tomcat をインストールし、Tomcat をスタートアップ項目として設定します (tomcat8 を例に挙げます)
  • Linux システムに 3 つ以上の Tomcat をインストールする (詳細な手順)
  • Linux環境でシェルスクリプトを書いてTomcatサービスを開始および停止する方法
  • LinuxでTomcatのポート番号を変更する方法

<<:  MySql Installer 8.0.18 画像とテキストによるビジュアル インストール チュートリアル

>>:  jsはフォーム検証機能を実装します

推薦する

nginx rewriteを使用してURLをリダイレクトする方法

最近仕事でnginxの設定を変更する必要が頻繁にあり、nginxでrewriteを使用する方法を学び...

Mysql ファジークエリが大文字と小文字を区別するかどうかの詳細な調査

序文最近、私は小さな個人ブログ プロジェクトを書くのに忙しくしています。 「グローバル検索」機能を実...

Vue3 における ref と reactive の詳細な説明と拡張

目次1. 参照と反応1. 反応的2.参照2. shallowRef と shallowReactiv...

位置固定オフセット問題を解決する方法の詳細な説明

質問CSS 固定配置の position:fixed は非常に使いやすいです。ブラウザのビューポート...

Linux システムでのスケジュールされたタスクの紹介

目次1. 計画タスクをカスタマイズする2. 時間を同期する3. 練習する4. セキュリティの問題1....

Nest.js のハッシュと暗号化の例の詳細な説明

0x0 はじめにまず、ハッシュアルゴリズムとは何でしょうか?メッセージやセッション項目など、一部のデ...

Nginx 正規表現関連のパラメータとルールの紹介

序文最近、私はクライアントのサーバー構成を支援しており、Nginx 構成ファイルを頻繁に変更していま...

MySQL の null 制約のケースの説明

目次テーブルを作成するときにNOT NULL制約を設定するテーブルを変更するときに非NULL制約を追...

DELL R730 サーバーの構成 RAID とインストール サーバー システムとドメイン制御の詳細なグラフィック チュートリアル

最近、会社で DELL R730 サーバーを購入したのですが、偶然次のチュートリアルを見つけたので、...

完璧なアロエベラジェルを選ぶには?完璧なアロエベラジェルの本物と偽物の見分け方

最新のパーフェクト アロエ ベラ ジェルのパッケージ ボックスには、赤いフォントで完璧な英語の文字が...

この記事ではJavaScriptのガベージコレクションの仕組みを説明します

目次1. 概要2. メモリ管理3. ガベージコレクション4. GCアルゴリズムの紹介5. 参照カウン...

Docker Compose マルチコンテナデプロイメントの実装

目次1. WordPressの導入1. 環境を整える(II) イメージを実行するDocker の作成...

MySQL の if 関数の正しい使い方の詳細な説明

今日私が書こうとしている内容では、プログラムは 7 時間近く実行され、データベースに 1,000 万...

MySQL での挿入効率のいくつかの例の比較

序文最近、仕事の都合で、約 1000w の大量のデータを MySQL に挿入する必要があり、時間がか...

jsネイティブカルーセルプラグインの制作

この記事では、jsネイティブカルーセルプラグインの具体的なコードを参考までに共有します。具体的な内容...