1. 背景 同社のプロジェクトは、これまでは手動で Maven でパッケージ化し、サーバーにアップロードして、Tomcat を閉じたり開いたりしていました。このプロセス全体は時間がかかり、労力がかかります。シェル スクリプトを使用してすべてのプロセスを一度に解決することもできますが、アイデアの Jenkins プラグインを使用して 1 回のクリックで自動的に展開できれば、さらに時間と労力を節約できます。 以下は、Tomcat を公開するための簡単なシェル スクリプトです。次のスクリプトを実行するための前提条件は、サーバーに git と maven をインストールすることです。 # まず tomcat プロセスをシャットダウンします kill -9 `ps aux|grep tomcat|grep -v 'grep'| awk 'NR==1{print $2}'` # プロジェクトの保存場所に切り替える cd nxyyProjectSource/NXYY # git 最新のコードをプルする git pull xxxx # プロジェクトの下のコード保存場所に切り替えます cd nxyy # Maven パッケージング mvn clean mvn インストール -DskipTests # tomcat cdにwarパッケージを入れる cp nxyyProjectSource/NXYY/nxyy/target/nxyy.war /home/tomcat/webapps # Tomcatを起動する cd /home/tomcat/bin ./スタートアップ.sh # ログを表示する tail -f ../logs/catalina.out Git をプルするたびにパスワードが必要になります。次の設定を行うと、パスワードは最初に入力するだけで、サーバーに永続的に保存されます。次回 Git をコピー/プルするときにはパスワードを入力する必要はありません。
アカウントとパスワードを消去する場合は、次を入力します。
一時保存(デフォルトは 15 分)が必要な場合は、次のように入力します。
プロジェクトをパスワードから免除するには、https リンクに
上記の設定は 2. Jenkinsのインストール/設定/ホットデプロイメント/スクリプトTomcatの再起動 インストール パッケージ jenkins.war をダウンロードし、インストール パッケージのルート パスで、コマンド ブラウザを開き、リンク http://ip:8080 に移動し、プラグインのインストール選択に入ります。 よく使用される基本的な機能を使用できるように、推奨プラグインを選択することをお勧めします。 選択後、プラグインのインストールページに入ります。 一部のプラグインのインストールに失敗した場合は、クリックして再度インストールできます。 次回のログイン時の初期ユーザー名とパスワードを設定します。 システムに入るとインストールが完了します。 注: それでもシステムに入ることができない場合は、しばらく待つか、ページを更新する必要があります。 それでも入ることができない場合は、Jenkins サーバーを再起動する必要があります。 起動ホームページ URL の後に restart を追加するだけです [Restart: $JENKINS_HOME/hudson.model.UpdateCenter.xml ファイルのデフォルトの内容は次のとおりです。 <?xml バージョン = '1.0' エンコーディング = 'UTF-8'?> <サイト> <サイト> <id>デフォルト</id> <url>http://updates.jenkins-ci.org/update-center.json</url> </サイト> </サイト> このアドレスは外部サーバ上にあります。ファイアウォールのせいで初期化インターフェースに必要なプラグインがダウンロードできず、待機状態になっています。URLを プラグインのインストール元を設定します: プラグイン管理 -> 詳細、http://mirror.xmission.com/jenkins/updates/current/update-center.json Maven、JDK、Git 構成を含むシステム管理用のグローバル ツール構成を実行します。 設定後、プロジェクトをビルドし、[新しいタスク] を選択します。 プロジェクト情報を設定する前に、gitのユーザー名とパスワード、tomcatユーザーのユーザー名とパスワードなどの資格情報が必要です: システム管理 -> 資格情報の管理 Jenkins が tomcat をリモートで公開するには、tomcat のユーザー名とパスワードが必要です。これらは、tomcat の conf の tomcat-users.xml で設定されます。tomcat リモート公開には、tomcat-users.xml、context.xml (次の構成で発生する落とし穴、ポイント 5)、および manager.xml (次の構成で発生する落とし穴、ポイント 6) を変更する必要があります。 <tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" バージョン="1.0"> <role rolename="マネージャー GUI"/> <role rolename="マネージャースクリプト"/> <ロール ロール名="マネージャー-jmx"/> <role rolename="マネージャーステータス"/> <ロール ロール名="admin-gui"/> <user username="ユーザー名" password="パスワード" roles="マネージャーGUI、マネージャースクリプト、マネージャーJMX、マネージャーステータス、管理者GUI"/> </tomcat-ユーザー> プロジェクト情報を設定し、設定後にビルドします。サーバーで Tomcat を起動する必要があります。 上記はTomcatのホットデプロイメントです。以下はTomcatの再起動実行プロジェクトです。まず、プラグインPublish Over SSHをインストールし、情報を設定します。システム管理 -> 情報設定 -> Publish over SSH 設定を構築する前に、Tomcatを再起動するスクリプトを作成する必要があります: vi tomcat.sh、次に実行権限を付与します chmod 777 tomcat.sh
ビルド: ポストステップで「SSH 経由でファイルを送信するかコマンドを実行する」を選択します。次のビルド後の操作 -> コンテナーに war/ear をデプロイする必要はなくなりました。 3. 建設現場で遭遇する落とし穴 Mavenプロジェクトが構築されていない場合は、プラグインを検索してインストールしてください: Maven統合プラグイン ビルド後にコンテナにwar/earをデプロイしない場合は、プラグインを検索してインストールします: コンテナにデプロイプラグイン 次のエラーが発生します:
解決策: pom.xml の <build> タグに <defaultGoal>install</defaultGoal> を追加します。 次のエラーが発生します: org.codehaus.cargo.container.ContainerException: デプロイに失敗しました、または org.codehaus.cargo.container.ContainerException: [cargo.remote.username] および [cargo.remote.password] プロパティは必須であり、構成で定義する必要があります 解決策: pom.xml の <build> タグに <plugins> を追加します。 <プラグイン> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-プラグイン</artifactId> <バージョン>1.4.9</バージョン> <構成> <コンテナ> <!-- コンテナのバージョン名 --> <コンテナId>Tomcat 9.x</コンテナId> <type>リモート</type> </コンテナ> <構成> <type>ランタイム</type> <プロパティ> <!-- tomcat 管理インターフェース --> <cargo.remote.uri>http://ip:8888/manager/text</cargo.remote.uri> <!-- Tomcat 管理インターフェースのユーザー名とパスワード --> <cargo.remote.username>ユーザー名</cargo.remote.username> <cargo.remote.password>パスワード</cargo.remote.password> </プロパティ> </構成> </構成> </プラグイン> 次の問題が発生します: 原因: org.codehaus.cargo.container.tomcat.internal.TomcatManagerException: 指定したユーザー名は、テキストベースの Tomcat Manager の使用を許可されていません <コンテキスト antiResourceLocking="false" privileged="true" > <!-- <Valve クラス名="org.apache.catalina.valves.RemoteAddrValve" 許可="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> --> //コメントアウトします <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/> </コンテキスト> Tomcat リモート接続が 403 拒否と表示される場合は、conf/Catalina/localhost の下に manager.xml を追加します。 <?xml バージョン="1.0" エンコーディング="UTF-8"?> <コンテキスト特権="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager"> <Valve クラス名="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /> </コンテキスト> このアイデアは、リモート公開用の Jenkins プラグインと組み合わされています。Crumb データが http://ip:8080/crumbIssuer/api/xml?tree=crumb# から取得され、入力されると、CSRF が有効になります -> 欠落または不良な crumb データが表示されます オンラインで解決策を検索すると、CSRF サービスを有効にするように指示されるものがほとんどです。 しかし、問題はまだ解決できません。解決策は次のとおりです。ユーザー名 -> 設定 -> APIトークン -> 現在のトークンをクリックし、トークン名でトークンを生成し、上記のユーザー名とパスワードを置き換えて、ようやく成功しました。 Jenkins+tomcat 自動リリースのホット デプロイメント/再起動と、発生した問題の解決策 (推奨) に関するこの記事はこれで終わりです。Jenkins tomcat ホット デプロイメントに関する関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
Vue では、ほとんどの場合、テンプレートを使用して HTML を作成することを推奨しています。ただ...
animation-name アニメーション名。複数のアニメーションがバインドされていることを示す...
1. インストールバージョンの詳細 サーバー: MariaDB サーバーバージョン: 5.5.60-...
簡略化されたファイル サイズを変更し、サンプルをダウンロードします。ファイルをローカル コンピュータ...
ステートフック例: 'react' から useState をインポートします。 関...
この記事では、デジタル時計効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...
目次1. イベントの流れ1. コンセプト2. DOMイベントフロー2. イベントの委任1. イベント...
序文:データベースの運用や保守の際には、リンクの総数がいくつあるか、アクティブなリンクがいくつあるか...
最近 Linux を研究していて、いくつかの Linux ディストリビューションを試してみましたが、...
VMware と Ubuntu を再インストールしましたが、コマンドラインプロンプトが単調すぎて美し...
目次序文作成手順CentOSベースイメージを作成するコンテナを作成してカスタマイズするカスタムコンテ...
MySQLのインストール(4、5、6は省略可能)ステートメント: CentOS のバージョンは 7....
目次序文1. 文字列の長さを取得する2. 文字列の指定された位置の値を取得する(1) charAt(...
1. KVM仮想マシンの移行方法と注意すべき点KVM 仮想マシンを移行する方法は 2 つあります。...
前回は、Explain 実行プランの表示、インデックスの分析など、MySQL での SQL クエリの...