<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>プロキシ - BLACKND</title>
	<atom:link href="https://blacknd.com/tag/%e3%83%97%e3%83%ad%e3%82%ad%e3%82%b7/feed/" rel="self" type="application/rss+xml" />
	<link>https://blacknd.com</link>
	<description>エンジニアがオススメするPCライフハック術</description>
	<lastBuildDate>Wed, 18 May 2022 07:19:13 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://blacknd.com/wp-content/uploads/2021/04/logo-mark-6-100x100.png</url>
	<title>プロキシ - BLACKND</title>
	<link>https://blacknd.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>CentOS 7でGitBucketを動かしてJenkinsで自動デプロイ</title>
		<link>https://blacknd.com/develop-wordpress/centos7-gitbucket-jenkins-auto-deploy/</link>
					<comments>https://blacknd.com/develop-wordpress/centos7-gitbucket-jenkins-auto-deploy/#respond</comments>
		
		<dc:creator><![CDATA[りゅう]]></dc:creator>
		<pubDate>Tue, 23 Dec 2014 14:14:43 +0000</pubDate>
				<category><![CDATA[開発・WordPress]]></category>
		<category><![CDATA[プロキシ]]></category>
		<category><![CDATA[自動デプロイ]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[デプロイ]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[リポジトリ]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[自動]]></category>
		<category><![CDATA[設定]]></category>
		<category><![CDATA[インストール]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[GitBucket]]></category>
		<category><![CDATA[Jenkins]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://blacknd.com/?p=597</guid>

					<description><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2014/12/centos7-gitbucket-jenkins-auto-deploy-1-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>CentOS 7にLAMP環境を構築。GitBucketとJenkinsを動かし、自動ビルドや自動デプロイまでやってみます。 なぜGitBucketか GitBucketはGitHubクローンで、似たものに有名なGitL [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2014/12/centos7-gitbucket-jenkins-auto-deploy-1-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p>CentOS 7にLAMP環境を構築。GitBucketとJenkinsを動かし、自動ビルドや自動デプロイまでやってみます。</p>



<h2 class="wp-block-heading">なぜGitBucketか</h2>



<p>GitBucketは<a href="https://github.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">GitHub</a>クローンで、似たものに有名な<a href="https://about.gitlab.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">GitLab</a>があります。 GitLabも最近はrpmコマンド一発でインストールできるほど簡単になっていますが、今回はより簡単 (.warファイルを置くだけ) で、見た目や使い勝手もGtiHubに近いGitBucketを選びました。</p>



<h2 class="wp-block-heading">概要</h2>



<ul class="wp-block-list"><li>ソースからのビルドは行わず、yumパッケージや.warファイルを使用</li><li>Apacheのmod_proxy_ajpを使い、Tomcatへはポート8080ではなく80でアクセス</li><li>GitBucketでリポジトリにpushがあったらJenkinsで自動ビルド</li><li>Jenkinsのビルドでは、rsyscでApacheの公開ディレクトリに自動デプロイ</li><li>自動デプロイ時のユーザーはtomcatではなくapacheで行う</li></ul>



<h2 class="wp-block-heading">動作環境</h2>



<p>CentOS 7のミラーサイト一覧で、日本のミラーから最新版をダウンロードしてください。 <a href="https://www.vagrantup.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Vagrant</a>で起ち上げた仮想マシンや<a href="https://www.docker.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Docker</a>のコンテナでも構いませんが、一部読み替えたり、ポートマッピング等の追加設定が必要になります。</p>



<h2 class="wp-block-heading">リポジトリの準備</h2>



<p>デフォルトではパッケージが少なかったり古かったりするので、EPELとremiのリポジトリを追加します。</p>



<p><strong>EPELリポジトリの追加</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>yum install -y epel-release</code></pre></div>



<p><strong>remiリポジトリの追加</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm</code></pre></div>



<h2 class="wp-block-heading">パッケージのインストールと起動設定</h2>



<p>とりあえずは最新の状態にしておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>yum -y update</code></pre></div>



<p>必須パッケージに加え、普段よく使うパッケージも入れておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>yum --enablerepo=epel,remi install -y sudo vim-enhanced syslog httpd httpd-devel php php-devel php-pear php-mysql php-gd php-mbstring php-pecl-imagick mariadb-server phpmyadmin wget git java-1.7.0-openjdk-devel tomcat</code></pre></div>



<p>各種サービスを起動し、さらに再起動時にもサービスが有効になるように設定します。</p>



<p>CentOS 6までは<code>service</code>(または<code>/etc/rc.d/init.d/</code>のスクリプト)と<code>chkconfig</code>コマンドを使用しましたが、CentOS 7では<code>systemctl</code>に変更されています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>systemctl enable --now httpd
systemctl enable --now tomcat
systemctl enable --now mariadb</code></pre></div>



<p>サービスの状況は以下のコマンドで確認できます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>systemctl list-unit-files</code></pre></div>



<h2 class="wp-block-heading">GitBucketをインストール</h2>



<p>先述の通り、.warファイルを置くだけの簡単インストールです。</p>



<p>https://github.com/gitbucket/gitbucket</p>



<p>releaseから最新版のgitbucket.warをダウンロードして、実行用のディレクトリにコピーします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>cp gitbucket.war /var/lib/tomcat/webapps/</code></pre></div>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0828111045403072"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-0828111045403072"
     data-ad-slot="7288081085"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">Jenkinsをインストール</h2>



<p>こちらも.warファイルを置くだけです。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>簡単でいいですね！</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p>https://jenkins.io/</p>



<p>最新版のJava Web Archive (.war)をダウンロードして、以下のディレクトリにコピーします。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>cp jenkins.war /var/lib/tomcat/webapps/</code></pre></div>



<p>ここでTomcatを再起動しておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>systemctl restart tomcat</code></pre></div>



<h2 class="wp-block-heading">ファイアウォールの設定</h2>



<p>CentOS 6まではiptablesを使用しましたが、CentOS 7ではfirewalldに変更されています。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>firewall-cmd --add-port=80/tcp --permanent</code></pre></div>



<h2 class="wp-block-heading">Apacheのプロキシ設定</h2>



<p>AJPというプロトコルによって、ApacheとTomcatの相互通信を行い、外部への配信はApacheが担当するようにします。</p>



<p>TomcatのAJP通信は、ポート8080ではなく8009を用います。</p>



<p>以下のファイルを作成します。</p>



<p><strong>/etc/httpd/conf.d/gitbucket.conf</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>&lt;Location /gitbucket&gt;
    ProxyPass ajp://localhost:8009/gitbucket
&lt;/Location&gt;</code></pre></div>



<p><strong>/etc/httpd/conf.d/jenkins.conf</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>&lt;Location /jenkins&gt;
    ProxyPass ajp://localhost:8009/jenkins
&lt;/Location&gt;</code></pre></div>



<p>ファイルを作成したら、Apacheを再起動しておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>systemctl restart httpd</code></pre></div>



<h2 class="wp-block-heading">アクセスしてみる</h2>



<p>まずはGitBucketにアクセスしてみます。</p>



<p><code>http://<span style="color: #800000;">[hostname]</span>/gitbucket</code></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="674" height="286" src="https://blacknd.com/wp-content/uploads/2014/12/gitbucket_start.jpg" alt="" class="wp-image-760" srcset="https://blacknd.com/wp-content/uploads/2014/12/gitbucket_start.jpg 674w, https://blacknd.com/wp-content/uploads/2014/12/gitbucket_start-300x127.jpg 300w" sizes="auto, (max-width: 674px) 100vw, 674px" /></figure>



<ul class="wp-block-list"><li>ユーザー名：<strong>root</strong></li><li>パスワード：<strong>root</strong></li></ul>



<p>ログイン後はrootのパスワードを変更し、新規ユーザーを作成しておきます。</p>



<p>次にJenkinsにアクセスしてみます。</p>



<p><code>http://<span style="color: #800000;">[hostname]</span>/jenkins</code></p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="674" height="286" src="https://blacknd.com/wp-content/uploads/2014/12/jenkins_start.jpg" alt="" class="wp-image-762" srcset="https://blacknd.com/wp-content/uploads/2014/12/jenkins_start.jpg 674w, https://blacknd.com/wp-content/uploads/2014/12/jenkins_start-300x127.jpg 300w" sizes="auto, (max-width: 674px) 100vw, 674px" /></figure>



<p>正常に起動し、アクセスできました。</p>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0828111045403072"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-0828111045403072"
     data-ad-slot="7288081085"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">Jenkinsにプラグインをインストールする</h2>



<p>「Jenkinsの管理」→「プラグインの管理」→「利用可能」へと進みます。</p>



<p>フィルタに「git」と入力して、以下のプラグインを選択して「再起動後にインストール」します。</p>



<ul class="wp-block-list"><li><a href="https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Git Plugin</a></li><li><a href="https://wiki.jenkins-ci.org/display/JENKINS/GitBucket+Plugin" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">GitBucket Plugin</a></li></ul>



<p>必要なプラグインがインストールされますので、「インストール完了後、ジョブがなければJenkinsを再起動する」にチェックを入れて待ちましょう。</p>



<p>長時間インストールが終わらない場合、実は既に終っているのに表示に変化がないだけということもあります。</p>



<h2 class="wp-block-heading">GitBucketとJenkinsの連携設定</h2>



<p>GitBucketのリポジトリを作成し、pushがあった際にJenkinsで自動デプロイを行うよう設定します。</p>



<h3 class="wp-block-heading">GitBucket の設定</h3>



<p>画面右上のレンチ型アイコンから設定画面へ進み、「System Settings」を選択します。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>設定値</th></tr></thead><tbody><tr><td>Base URL</td><td><code>http://<span style="color: #800000;">[hostname]</span>/gitbucket/</code></td></tr><tr><td>SSH access</td><td>■ Enable SSH access to git repository</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">GitBucketでリポジトリを作成する</h3>



<p>「new repository」からリポジトリ名を入力、「Initialize this repository with a README」にチェックを入れて新規リポジトリを作成します。</p>



<p>これで、リポジトリのトップページに表示されるREADME.mdのみがInitial commitされた状態になります。</p>



<p>次にリポジトリの「Settings」→「Service Hooks」と進み、「WebHook URLs」を入力します。</p>



<p><code>http://<span style="color: #800000;">[hostname]</span>/jenkins/gitbucket-webhook/</code></p>



<p>GitBucket側での設定は、このWebHookのみです。</p>



<h3 class="wp-block-heading">apacheユーザーでデプロイするための設定</h3>



<p>普通にデプロイの設定をすると、ファイル群はtomcatユーザーのままデプロイされます。<br>これだとApache的に都合が悪い場合もあるため、デプロイをapacheユーザーで行うようにします。</p>



<p>そのためには、Jenkinsを動かしているtomcatユーザーが、<code>sudo -u apache</code>できるようにしなければなりません。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>visudo</code></pre></div>



<p>▼<strong> 変更前</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>Defaults    requiretty</code></pre></div>



<p>▼<strong> 変更後</strong>（コメントアウトする）</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>$ Defaults    requiretty</code></pre></div>



<p>さらにtomcatユーザーがパスワード無しでsudoできるよう設定します。</p>



<p><strong>以下の行を追加</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>tomcat  ALL=(ALL)       NOPASSWD: ALL</code></pre></div>



<p>そして、デフォルトでは/var/www/htmlの所有者がrootになっており、このために自動デプロイが失敗するので、権限を変更しておきます。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>chown -R apache. /var/www/html</code></pre></div>



<h3 class="wp-block-heading">Jenkinsの自動デプロイ用ジョブを作成</h3>



<p>新規ジョブ作成から、ジョブ名を入力 (例：project01)、「フリースタイル・プロジェクトのビルド」を選択してOKをクリックします。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>GitBucketのリポジトリページからコピペできる項目が多いです。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>設定値</th></tr></thead><tbody><tr><td>GitBucket - URL</td><td><code>http://<span style="color: #800000;">[hostname]</span>/gitbucket/</code></td></tr><tr><td>ソースコード管理 -<br>Git - Repository URL</td><td><code>http://<span style="color: #800000;">[hostname]</span>/gitbucket/git/username/project01.git</code></td></tr><tr><td>リポジトリ・ブラウザ</td><td>GitBucket</td></tr><tr><td>リポジトリ・ブラウザ - URL</td><td><code>http://<span style="color: #800000;">[hostname]</span>/gitbucket/username/project01/</code></td></tr><tr><td>ビルド・トリガ</td><td>■ Build when a change is pushed to GitBucket</td></tr></tbody></table></figure>



<p>最後に「ビルド手順の追加」から「シェルの実行」を選択し、下記シェルスクリプトを記入します。割と<strong>ここが目玉</strong>です。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>sudo -u apache rsync -vr --delete --exclude &quot;.git/&quot; /usr/share/tomcat/.jenkins/jobs/project01/workspace/ /var/www/html/project01/</code></pre></div>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0828111045403072"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-0828111045403072"
     data-ad-slot="7288081085"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">動作確認</h2>



<p>gitコマンド、またはお使いのGitクライアントから、ファイルに適当な修正を加えてコミット → プッシュしてみてください。</p>



<p>※尋ねられるアカウントは、<strong>GitBucketの</strong>ユーザーアカウントです。</p>



<p>GitBucketでは、GitHub同様にコミット履歴が加わっていれば成功です。こちらはまず大丈夫でしょう。</p>



<p>Jenkinsでは、リポジトリに対応するジョブが実行されて、<code>/var/www/html</code>以下に自動デプロイが行われたことを確認できればOKです。</p>



<h2 class="wp-block-heading">CentOS 6で構築する場合</h2>



<p>CentOS 6でも同様に、まずyumのリポジトリとしてEPELとremiをインストールします。</p>



<p>Tomcat 7もインストールできるため、一部CentOS 7独特の部分 (systemctlやファイアウォール等) 以外はそのまま進められます。</p>



<p>しかしJenkinsのGit Pluginが<strong>エラーを吐きます</strong>。</p>


<div class="swell-block-balloon"><div class="c-balloon -bln-left" data-col="gray"><div class="c-balloon__icon -circle"><img decoding="async" loading="lazy" src="https://blacknd.com/wp-content/uploads/2019/12/ryu-icon.png" alt="" class="c-balloon__iconImg" width="80px" height="80px"><span class="c-balloon__iconName">りゅう</span></div><div class="c-balloon__body -speaking -border-none"><div class="c-balloon__text">
<p>これはCentOS 6にyumでインストールしたGitのバージョンが、1.7.1等の古いバージョンだからです。</p>
<span class="c-balloon__shapes"><span class="c-balloon__before"></span><span class="c-balloon__after"></span></span></div></div></div></div>


<p>解決するためには、最新のソースからGitをインストールすることです。</p>



<p><strong>古いGitを削除</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>yum remove -y git</code></pre></div>



<p><strong>必要になるパッケージをあらかじめインストール</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel</code></pre></div>



<p><strong>新しいGitのソースファイルをダウンロード</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>wget https://git-core.googlecode.com/files/git-1.9.0.tar.gz</code></pre></div>



<p><strong>解凍してインストール</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>tar zxf git-1.9.0.tar.gz
cd git-1.9.0
./configure --prefix=/usr/local/
make
make install</code></pre></div>



<p>もし<code>/usr/local/bin</code>にPATHが通っていなければ、下記のように<code>.bash_profile</code>に追加しておいてください。</p>



<p><strong>.bash_profile</strong></p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>PATH=$PATH:/usr/local/bin

export PATH</code></pre></div>



<p>そして上記変更を適用します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>source ~/.bash_profile</code></pre></div>



<p>一応Gitのバージョンを確認しておきましょう。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>git --version</code></pre></div>



<p>これでJenkinsもエラーを吐くこと無く動作するはずです。</p>



<p>CentOS 7で採用されたApache 2.4の設定は従来とかなり変わっており、そのせいで戸惑うこともあるかと思いますので、馴染めない方は、少々面倒ですが上記の方法でCentOS 6上で構築してみるのも良いかと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blacknd.com/develop-wordpress/centos7-gitbucket-jenkins-auto-deploy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
