<?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%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA/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>AWS EC2で脆弱性診断A+のサーバを構築【Qiita】</title>
		<link>https://blacknd.com/server-management/aws-ec2-server-qiita/</link>
					<comments>https://blacknd.com/server-management/aws-ec2-server-qiita/#respond</comments>
		
		<dc:creator><![CDATA[りゅう]]></dc:creator>
		<pubDate>Mon, 22 Jun 2020 05:56:16 +0000</pubDate>
				<category><![CDATA[サーバ構築・管理]]></category>
		<category><![CDATA[TLS]]></category>
		<category><![CDATA[チューニング]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[PHP-FPM]]></category>
		<category><![CDATA[リポジトリ]]></category>
		<category><![CDATA[インストール]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[firewalld]]></category>
		<category><![CDATA[サーバ構築]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[セキュリティグループ]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[脆弱性診断]]></category>
		<category><![CDATA[公開鍵認証]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Dovecot]]></category>
		<category><![CDATA[SPAM対策]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Fail2ban]]></category>
		<category><![CDATA[対策]]></category>
		<category><![CDATA[Qiita]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Logwatch]]></category>
		<category><![CDATA[Postfix]]></category>
		<category><![CDATA[不正アクセス]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[yum]]></category>
		<category><![CDATA[セキュリティ]]></category>
		<category><![CDATA[Let's Ecnrypt]]></category>
		<category><![CDATA[バーチャルホスト]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[SSL]]></category>
		<category><![CDATA[自動更新]]></category>
		<category><![CDATA[vim]]></category>
		<guid isPermaLink="false">https://blacknd.com/?p=3008</guid>

					<description><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2020/06/aws-ec2-server-qiita-1024x576.png" class="webfeedsFeaturedVisual" /></p>AWSのEC2にAmazon Linux 2のインスタンスを作成し、スタンダードかつセキュリティに配慮したインターネットサーバを構築する手順をまとめました。記事はQiitaに投稿しました。 概要 EC2でAmazon L [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2020/06/aws-ec2-server-qiita-1024x576.png" class="webfeedsFeaturedVisual" /></p>
<p>AWSのEC2にAmazon Linux 2のインスタンスを作成し、スタンダードかつセキュリティに配慮したインターネットサーバを構築する手順をまとめました。記事はQiitaに投稿しました。</p>



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



<p>EC2でAmazon Linux 2のインスタンスを作成し、以下のようなサーバを構築する手順をまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>種別</th><th>アプリケーション</th></tr></thead><tbody><tr><td>ウェブサーバ</td><td>Apache 2.4 または Nginx 1.16</td></tr><tr><td>PHP</td><td>PHP 7.3</td></tr><tr><td>データベースサーバ</td><td>MySQL 5.7</td></tr><tr><td>データベースクライアント</td><td>phpMyAdmin 5.0</td></tr><tr><td>SMTPサーバ</td><td>Postfix</td></tr><tr><td>IMAP/POP3サーバ</td><td>Dovecot</td></tr><tr><td>セキュリティ</td><td>Fail2ban / Logwatch</td></tr><tr><td>その他</td><td>Node.js / Docker</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">記事一覧</h2>



<p>各記事はQiitaに投稿しました。</p>







<p>https://qiita.com/ryu-blacknd/items/23b86d9ad768d58ff161</p>



<p>https://qiita.com/ryu-blacknd/items/36ccfcf96da7b0c981cf</p>



<p>https://qiita.com/ryu-blacknd/items/77eebe43a18a69e7c1e5</p>



<p>https://qiita.com/ryu-blacknd/items/4049f04e445eb1d60e4d</p>



<p>https://qiita.com/ryu-blacknd/items/03030d11eeef65e3cf67</p>



<p>https://qiita.com/ryu-blacknd/items/8e0c28065af3f9b8a06d</p>



<p>https://qiita.com/ryu-blacknd/items/20e5540195501e16e90e</p>



<h2 class="wp-block-heading">ポイント</h2>



<p>ただ単にインストールして初期設定を行うだけでなく、チューにニグやセキュリティ対策にも注力しました。</p>



<h3 class="wp-block-heading">脆弱性診断「A+」</h3>



<p>2020年前半、SSL/TSL絡みで大きな動きがありました。<br>ChromeやFirefox等、主要ブラウザがSSL 1～3、TLSv1.0～1.1を無効化したのです。<br>このためサーバ側で設定を変更しTLSv1.2を有効にする必要がありますが、同時にセキュリティリスクのある上記対象バージョンを無効にするという作業も行わないと、脆弱性診断で危険と診断されるようになりました。</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>今回の記事ではこの問題にも対処し、かつせっかくなら脆弱性診断で最高の「A+」を取得することを目標に掲げました。</p>



<p>この記事を書きながら構築したサーバは、<a href="https://www.ssllabs.com/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">SSL Labs</a>の診断で「A+」と診断されました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="568" src="https://blacknd.com/wp-content/uploads/2020/06/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_6359_c62ae9f8-5c70-c8d0-3e07-0b3ea686c949-1024x568.png" alt="" class="wp-image-3010" srcset="https://blacknd.com/wp-content/uploads/2020/06/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_6359_c62ae9f8-5c70-c8d0-3e07-0b3ea686c949-1024x568.png 1024w, https://blacknd.com/wp-content/uploads/2020/06/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_6359_c62ae9f8-5c70-c8d0-3e07-0b3ea686c949-300x167.png 300w, https://blacknd.com/wp-content/uploads/2020/06/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_6359_c62ae9f8-5c70-c8d0-3e07-0b3ea686c949-768x426.png 768w, https://blacknd.com/wp-content/uploads/2020/06/https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_6359_c62ae9f8-5c70-c8d0-3e07-0b3ea686c949.png 1045w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">常時SSL化対応</h3>



<p>無料のSSL証明書を取得できるLet's Encryptを利用し、ApacheやNginxの設定で常時SSL化を行います。<br>Let's Encryptの証明書は更新期限が3ヶ月と短いため、期限切れになる前に自動で更新するようにも設定します。</p>



<h3 class="wp-block-heading">ApacheのEvent MPM</h3>



<p>MPMとはマルチプロセッシングモジュールの略です。<br>Apacheは、デォルトではシングルスレッドプロセスであるPrefork MPMで動作します。<br>記事ではイベント駆動であるEvent MPMを採用します。これにはPHPも関係します。<br>また環境に合わせてチューニングも行います。</p>



<h3 class="wp-block-heading">PHP-FPMの採用</h3>



<p>Apacheのデフォルトでは、モジュール版のPHPを使用するようになっています。<br>記事ではEvent MPMとFast CGI方式のPHP-FPMと組み合わせて高速化を図っています。<br>こちらもチューニングを行います。</p>



<h3 class="wp-block-heading">MySQLの採用</h3>



<p>現在、多くのディストリビューションで標準のデータベースサーバはmariaDBとなっています。<br>MySQLと互換性があり、PHP等からはMySQLとして操作することができます。<br>しかし記事では本来のMySQLを使用するようにしています。</p>



<h3 class="wp-block-heading">通信路の暗号化とパスワード認証の排除</h3>



<p>ウェブサーバだけでなく、メールサーバもSSL/TLS経由でアクセスするようにしています。<br>SSH接続はパスワード認証を使わず、公開鍵認証のみとしています。</p>



<p>なお記事ではFTPサーバを導入していません。これはCircleCIのようなCI/CDツールからSSHとGitを用いてデプロイすることを前提としているためで、この場合FTPサーバは不要です。<br>平文テキストでパスワードをやり取りするFTPサーバは、起動しているだけでセキュリティリスクにもなります。どうしてもFTPクライアントで操作したい場合はSFTP（SSHを用いたFTP）を採用することをお勧めします。</p>



<h3 class="wp-block-heading">セキュリティと不正アクセス対策</h3>



<p>EC2のセキュリティグループとfirewalldにより、不要なポートを外部に公開しないよう設定します。<br>例えばimaps/pop3sは公開しても、imap/pop3は公開しないようにしています。</p>



<p>他に、Fail2banによる不正アクセス対策（自動Ban / Unban）や、Logwatchの不具合修正も行います。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>本記事の目玉はSSL/TLS周りです。脆弱性診断で「A+」、少なくとも「A」を狙えるようにしています。<br>今はTLSv1.1までが無効になっていますが、いずれはTLSv1.2も無効になることが考えられます。<br>その際に同じようにレンタルサーバで対応に苦慮するようであれば、今のうちにクラウドへの移行を進めておいたほうが良いと思います。<br>AWSはIaaSとしては圧倒的シェアを誇るサービスで情報も豊富なため、幅広い層にお勧めできます。<br>担当者がわけわからんという場合はもちろん保守を含め委託が良いでしょうが、ある程度VPS等でサーバ構築に触れたことのある方であれば、この記事を参考にして構築してみていただければと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blacknd.com/server-management/aws-ec2-server-qiita/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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>
