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はフォーム検証機能を実装します

推薦する

Linux ディスクとディスク パーティションを理解するための記事

序文Linux システムのすべてのハードウェア デバイスは、ファイルの形式で表現され、使用されます。...

TypeScript の Enum が問題となる理由

目次どうしたの?いつ使うか列挙の数を制御するビット値コントロールインデックス非数値列挙結論はType...

Mysql論理アーキテクチャの詳細な説明

1. 全体的なアーキテクチャ図他のデータベースと比較すると、MySQL は、そのアーキテクチャがさま...

mysql 5.6.23 winx64.zip インストール詳細チュートリアル

WindowsにMySQLの圧縮バージョンをインストールする方法の詳細については、以下を参照してくだ...

innerHTML を理解する

<br />関連記事: innerHTML HTML DOM insertRow() メ...

Linux で iostat コマンドを使用するチュートリアル

序文運用・保守を行う人がスキルを持っていなければ、サーバーを操作するのに恥ずかしさを感じてしまうと言...

Dockerにおけるオーバーレイネットワークの詳細な説明

Docker 公式ドキュメントからの翻訳、原文: https://docs.docker.com/n...

Vue画像拡大鏡コンポーネントのカプセル化と使用方法の詳細な説明

Vue画像拡大鏡コンポーネントパッケージに基づいて、参考までに具体的な内容は次のとおりです。画像拡大...

vue-amap のインストールと使用手順

以前、Amap API を非同期にロードする方法を紹介しました。今回は、vue-amap の使用方法...

入力タイプの制限(複数の方法)

1. 入力・貼り付けできるのは中国語のみ<input onkeyup="value=...

div を下から上にスライドさせる CSS3 の例

1. まず、CSS3 のターゲット セレクターを使用し、a タグを使用して id セレクターを指定し...

Mysqlは隣接リスト(隣接リスト)を通じてツリー構造を保存します。

以下の内容では、隣接リストを使用してツリー構造を保存する MYSQL のプロセスとソリューションを紹...

10秒以内にMySQLデータベースに数百万件のレコードを挿入する実装

まず、次の質問について考えてみましょう。このような膨大な量のデータをデータベースに挿入するには、通常...

HTML メタタグの小さなコレクション

<Head>……</head> は <HTML> のファイル ヘ...