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

推薦する

mysqlのデータディレクトリ内のファイルを直接コピーしてデータを復元する実装

mysqlはデータディレクトリ内のファイルをコピーしてデータを復元します背景: MySQL がクラッ...

Mysql 5.7.19 無料インストール版 (64 ビット) の設定方法に関する詳細なチュートリアル

公式サイトから mysql-5.7.19-winx64 をダウンロードします。これはシステムの 64...

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

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

TomcatはNginxリバースプロキシのクライアントドメイン名を取得します

質問Nginx リバース プロキシの後、Tomcat アプリケーションは、クライアント ブラウザーの...

MySQLはgroup_concat()関数に基づいて複数のデータ行を結合します

非常に便利な機能group_concat() について、マニュアルには次のように記載されています: ...

ウェブデザイナーは3つの側面からウェブページを最適化する必要がある

<br />帯域幅の増加に伴い、Web ページ上のオブジェクトも増えているため、Web ...

あまり使われていない、または誤解されている HTML タグ 10 個

ここでは、あまり使われていない、または誤解されている 10 個の HTML タグを紹介します。あまり...

純粋なJSを使用してセカンダリメニュー効果を実現します

この記事の例では、セカンダリメニュー効果を実現するためのJSの具体的なコードを参考までに共有していま...

ウェブページ制作と饅頭の関係(体験の共有)

昨日は遅くまで寝ていて、一日中起きていました。私の年齢では、夜更かしして本を書くのはもう無理のようで...

JS+Canvas が抽選ホイールを引く

この記事では、宝くじターンテーブルを描画するJS + Canvasの具体的なコードを参考までに共有し...

TypeScriptのインストールと使用方法と基本的なデータ型

最初のステップはTypeScriptをグローバルにインストールすることですnpmを使用してインストー...

Vue+webrtc (Tencent Cloud) ライブブロードキャスト機能の実装実践

目次1. 生放送効果2. ライブストリーミングを開始する手順2.1 Tencent Web(高速ライ...

MySQL の frm ファイルからテーブル構造を復元する 3 つの方法 [推奨]

mysql が正常に実行されている場合、テーブル構造を表示することは難しくありません。しかし、場合...

MySQL 8.0.15 で MGR シングル マスターと複数スレーブを構成する方法

1. はじめにMySQL グループ レプリケーション (略して MGR) は文字通り MySQL グ...

PHP環境構築におけるDockerの柔軟な実装

Docker を使用して、柔軟なオンライン PHP 環境を構築します。場合によっては、他の人がすでに...