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

推薦する

iPhone デバイスの WAP ページでフォントサイズが大きい問題の解決策

JavaScriptコントロールを使用したくない場合は、次の方法を試してください。 Safariブラ...

入力タイプ=ファイルスタイルを定義する方法

ファイルコントロールを美しくする理由は何ですか?他の子供たちはみんなきちんとしたきれいな服を着ている...

MySQL 5.6 から 5.7 にアップグレードする際のマスター スレーブ遅延問題のトラブルシューティング

最近、Zabbix データベースを MySQL 5.6 から 5.7 にアップグレードしたときに、マ...

vue3.0 でカルーセル コンポーネントをカプセル化する手順

目次1: カプセル化の考え方2. 包装工程3: ドットインジケーター4: 左と右のインジケーター5:...

有名ウェブサイトのロゴにおすすめのフォント40選

世界で最も有名なウェブサイトのロゴデザインにはどんなフォントが使われているかご存知ですか?これらのフ...

Reactのdiffアルゴリズムの詳細な分析

Reactのdiffアルゴリズムの理解diffアルゴリズムは、 Virtual DOMの変更された部...

Vue は Echarts をインポートして折れ線グラフを実現します

この記事では、VueでEchartsをインポートして線散布図を実現する具体的なコードを参考までに共有...

dockerコンテナは直接実行され、pingを介してパブリックIP操作を取得します。

コンテナを通じてローカル パブリック IP アドレスを取得します。ローカル IP アドレスを使用して...

WeChatミニプログラムが星評価を実装

この記事では、WeChatアプレットで星評価を実装するための具体的なコードを参考までに紹介します。具...

ソフトウェア テスト - MySQL (VI: データベース関数)

1.MySQL関数1. 数学関数PI() # 円周率 (pi) の値を返します。デフォルトの小数点...

要素の幅(高さ)の適応を実現するCSSおよびCSS3の柔軟なボックスモデル

1. CSSは左の固定幅と右の適応幅を実現します1. ポジショニング <!DOCTYPE ht...

MySQL をベースにしたシンプルな検索エンジンを実装する

目次MySQL ベースの検索エンジンの実装1. ngram全文パーサー2. 全文インデックスを作成す...

React双方向データバインディングの原理についての簡単な説明

目次双方向データバインディングとは双方向データバインディングの実装データ影響ビュービューはデータに影...

JavaScriptのアンチシェイクとスロットリングとは

目次1. 関数デバウンス1. 画像安定化とは何ですか? 2. 関数のスロットリング2.1 タイマーの...