■あぜ道 Eclipseの小技 |
git共有リポジトリからデプロイ |
前回までは、Gitリモートリポジトリまでのプロジェクトの管理について説明しました。 Gitによるソース管理の元、プログラムも無事完成した暁には、 後は、これを運用環境にリリースする いわゆるデプロイ作業という話の流れになります。 苦労して完成したアプリケーションを、世間に公開するための最終作業です。 Eclipseの小技という意味では、もうこれはEclipseの作業とは関係ないのですが、 話の流れ上、説明しておきたいと思います。 リリースのやり方にも人それぞれ色々とこだわりがあり、 人や環境によって、その手順や方法も異なり、これが絶対的正論という方法はありません。 ここではあくまで一例として説明しますので、参考にしてみてください。 ・1)デプロイ先の環境 LinuxOSのサーバーを前提とします。 $JAVA_HOME : /usr/local/jdk とします。 $TOMCAT_HOME:/usr/local/tomcat とします。 $DB_HOME:/usr/local/pgsql とします。(PostgreSQLの場合) $ANT_HOME:/usr/local/ant とします。 ・2)ビルドパス(作業ディレクトリ) Git共有リポジトリからインポートするための作業ディレクトリ ここで、Git共有リポジトリからインポートしたJavaをビルドします。 Git作業ディレクトリは、/home/user/git とします。 ・3)デプロイ先(公開用ディレクトリ) ビルドしたプログラムを、リリースするディレクトリ /home/user/public_web/jLabo とします。 これをTomcatと連携するために [root@ews001 ~]# cd /usr/local/tomcat/webapps/ [root@ews001 webapps]# ln -s jLabo /home/user/public_web/jLabo [root@ews001 webapps]# ls -l jLabo jLabo -> /home/user/public_web/jLabo で、シンボリックリンクしておきます。 ・4)pom.xmlの追加作業 デプロイ作業時のビルドで必要になるGti共有リポジトリ情報を、pom.xmlに追記する必要があります。 本編 「■SpringMVC の小径 1-3)pom.xmlの編集」で説明されている pom.xml の <properties> ブロックの上あたりに、以下を追加しておいてください。 <!-- mvn scm:update (git pullを実施)--> <scm> <connection>scm:git:ssh://user@hostname:22Gtt共有リポジトリパス</connection> </scm> user:Git共有リポジトリがあるサーバーのログインアカウントです。 hostname:Git共有リポジトリがあるサーバー名(or ドメイン名)です。 Gtt共有リポジトリパス:今回の例でいうと、「/home/pub/git/jLabo.git」です。 以上を決定したうえで、ここから具体的なデプロイ作業の説明です。 ■共有リポジトリからのインポート Git共有リポジトリから作業ディレクトリにプロジェクトをインポートします。 作業ディレクトリに移動します。 [user@ews001 ~]$ cd git 共有リポジトリからプロジェクトをインポートします。 [user@ews001 git]$ git clone ssh://user@arimodoki.dip.jp:22/home/pub/git/jLabo.git 作業ディレクトリ生成。 [user@ews001 git]$ ll jLabo ⇒ jLabo が作成されている。 [user@ews001 git]$ cd jLabo [user@ews001 jLabo]$ 以降は、このディレクトリ上での作業となります。 ■プロジェクトのビルド&デプロイ Mavenプロジェクトの場合のビルド&デプロイ手順として、ネットを検索すると mvnコマンドを使った方法がよく紹介されています。 具体例としては、 1)tomcatを一旦停止する。 2)mvn scm:update git pull を実施する。 3)mvn compile Javaをビルドする。 4)mvn package リリース対象のwarファイルを構築する。 tomcat7-maven-pluginを使って、 5)mvn tomcat7:undeploy Tomcat上の公開ディレクトリをundeploy(ディレクトリを削除)。 6)mvn tomcat7:deploy $TOMCAT_HOME/webapps に、4)で作成したwarファイルを設置する。 ※)deploy コマンドは、すでにディレクトリがあるとエラーとなるので、undeployしてから実施する。 ※)tomcat7-maven-pluginには、「redeploy」 が無くなりました。 7)tomcatを再起動する。 という流れで、アプリケーションがリリースされる手順です。 なーんかめんどくさいなぁ。 ひょっとしたら、mvn でとってもエレガントな手順(スクリプトとか)があるのかもしれませんが、 いろいろ調べても、エレガントな美女にはいまだ出会った事がありません。 それで、以下個人的なフラストレーションから始まった解決への道のりです。 ・一)リリース手順が、最低7工程も必要。⇒ 覚えきれない(馬鹿?) ・二)リリース手順ミスやらかしそう。⇒(やっぱ馬鹿?) ・三)リリース先のディレクトリには、画像フォルダなどをシンボリックリンクすんだけど 5)の手順で、ぜーんぶ削除されてしまう(しかも、ご丁寧にもシンボリックリンク先まで!) ⇒これで実際、かなり痛い目にあったことがある。 ・四)上の三)の理由を含めて、個人的には、あまりwarを展開したくない。 ⇒jar と、あとは個別のコンテンツでいいじゃん。 ・五)やっぱし、使い慣れた ant でなんとかならんかのぅ。。。。。 で、色々試行錯誤してたどり着いたのが、maven-ant-tasksプラグインというやつ。 これが何かと言うと、長いことant使ってるので、できればこのままantと添い遂げたいんだけど antは残念なことに mvn コマンドをサポートしていない。 別れようかどうしようか悩んだけど、antは頑張ってmaven-ant-tasksプラグインという 新しいプラグインを生んでくれたので、なんとか別れずに済みました。 つまり、antの枯れた古臭い手順に、mvnの新しい機能が追加されて 両方のいいとこだけを利用してしまおうという理屈。 antについては、もうすでにネット上では語りつくされているはずなので、 ここでは改めて説明しません。 必要な方は、公式サイトTHE APACHE ANT PROJECTから バイナリ拾ってセットアップしてください。 maven-ant-tasksプラグインは、雲の上の楽園 にjarファイルが陳列されているので ここから拾って、antのセットアップ先、$ANT_HOME/lib に配置してください。 で、maven-ant-tasksプラグインに気が付いたまではよかったんですが、 これをまともに動くようにするのにだいぶ一苦労しました。 説明するのにも一苦労しそうなので、以下、 このjLaboで実際に使用しているbuild.xmlを載せますので、もし使いたい人は自由に使ってください。 プロジェクト固有の部分が数カ所ありますが、ほとんど共通的に使えると思います。 配置場所は、Eclipseプロジェクトの直下 pom.xml と同じ場所です。 話の順序が逆転してしまいますが、このbuild.xmlを先に作って、 「■共有リポジトリからのインポート」を行う前に、共有リポジトリに反映(プッシュ)しておくと、 「■共有リポジトリからのインポート」で、作業ディレクトリにインポートされるので、 2度手間にならずに済みます。 |
一つ書き忘れました。 このスクリプトでは、Tomcatのリロードコマンドがありますが、 これを使うためには、$TOMCAT_HOME/conf/tomcat-users.xml に <role rolename="manager-script"/> <user username="tomcat_user" password="tomcat_password" roles="manager-script"/> の設定が必要になります。詳しいことは自分で調べてね!。 これを実際使う場合は、ant と打てば USAGE が表示されるので、あとは、中をよく見てもらえればわかると思います。 1) ant update:Git共有リポジトリから最新をpullします。 2) ant build :1)を実施した後、javaのコンパイルを実施します。 3) ant deploy:1)、2)を実施した後、リリース環境にデプロイを実施します。(前回から変更されたものだけ) 4) ant reload:1)、2)、3)を実施した後、Tomcatのリロードを実施します。 要するに、「ant reload」というコマンドを一つだけ覚えておけばあとは、ant/mvnが全部やってくれるってこと! これで、馬鹿なオイラでも なんくるないさぁ~!! |
※)2020/Jan/23 Maven Central Repositoryの罠 Maven Central Repositoryを覗いていたら Spring Frameworkがバージョンアップしていたので 早速、pom.xml を修正して、アップデートしようとしたところ Linuxサーバー側のビルドで [artifact:mvn] Downloading: http://repo1.maven.org/maven2/..... : : [artifact:mvn] [INFO] [artifact:mvn] [ERROR] BUILD ERROR [artifact:mvn] [INFO] 的なエラーが出て、ビルドできなくなってしまった。 はて? 調査したところ、 どうやら、2020年1月15日 から Maven の Central Repository URL が変更になったらしい。 解決策は、■SpringMVC の小径「1-3)pom.xmlの編集」 のトピックに残しておきました。 |
![]() |
git共有リポジトリからデプロイ |