<?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>github - BLACKND</title>
	<atom:link href="https://blacknd.com/tag/github/feed/" rel="self" type="application/rss+xml" />
	<link>https://blacknd.com</link>
	<description>エンジニアがオススメするPCライフハック術</description>
	<lastBuildDate>Wed, 18 May 2022 07:46:52 +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>github - 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[GitBucket]]></category>
		<category><![CDATA[Jenkins]]></category>
		<category><![CDATA[Linux]]></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>
		<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>
		<item>
		<title>CentOS 6にLAMP, Git, Redmine, phpMyAdminな開発サーバを一発構築するスクリプト</title>
		<link>https://blacknd.com/develop-wordpress/centos-development-server-bootstrap-script/</link>
					<comments>https://blacknd.com/develop-wordpress/centos-development-server-bootstrap-script/#respond</comments>
		
		<dc:creator><![CDATA[りゅう]]></dc:creator>
		<pubDate>Mon, 14 Oct 2013 22:14:42 +0000</pubDate>
				<category><![CDATA[開発・WordPress]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[公開鍵]]></category>
		<category><![CDATA[bundle]]></category>
		<category><![CDATA[秘密鍵]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[bundlerr]]></category>
		<category><![CDATA[鍵認証]]></category>
		<category><![CDATA[開発サーバ]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[vim]]></category>
		<category><![CDATA[シェルスクリプト]]></category>
		<category><![CDATA[dotfiles]]></category>
		<category><![CDATA[自動化]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[LAMP]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<category><![CDATA[phpMyAdmin]]></category>
		<category><![CDATA[仮想マシン]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[SSH]]></category>
		<guid isPermaLink="false">https://blacknd.com/?p=206</guid>

					<description><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2013/10/centos-development-server-bootstrap-script-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>CentOS 6の開発環境を一発で構築するスクリプトを公開しました。NetBeansやRedmineも紹介します。 GitHubのリポジトリ https://github.com/ryu-blacknd/bootstra [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://blacknd.com/wp-content/uploads/2013/10/centos-development-server-bootstrap-script-1024x576.jpg" class="webfeedsFeaturedVisual" /></p>
<p>CentOS 6の開発環境を一発で構築するスクリプトを公開しました。NetBeansやRedmineも紹介します。</p>



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



<p>https://github.com/ryu-blacknd/bootstrap</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>


<h2 class="wp-block-heading">想定している開発フロー</h2>



<ol class="wp-block-list"><li>Redmineでプロジェクト管理</li><li>NetBeansで開発</li><li>ローカルのGitリポジトリでコミット</li><li>リモートのベアリポジトリへプッシュ(Redmineが参照するのはココ)</li><li>本番環境リポジトリ(<code>/var/www/html</code>以下)で自動プル</li></ol>



<h2 class="wp-block-heading">スクリプトの概要</h2>



<ul class="wp-block-list"><li>セキュリティ関係の設定(ローカル開発環境なので甘々に設定)</li><li>yumのリポジトリを追加(epel, remi)</li><li>yum updateと、必要なパッケージのインストール</li><li>不要なサービスの停止</li><li>LAMP環境のインストールと最低限の設定</li><li>RubyとPassenger周りのインストール</li><li>Gitユーザーの作成と関連する設定</li><li>phpMyAdminのインストール</li><li>Redmine本体、テーマ、プラグインをインストール</li><li>おまけ：ベアリポジトリ用フックスクリプトの雛形</li></ul>



<p>詳細は、シェルスクリプトを読んでみてください。たいしてトリッキーなことはしていません。</p>



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



<ul class="wp-block-list"><li>LAN内のサーバPC、またはVirtualBox等の仮想マシン(Vagrant可)</li><li>CentOS6 x86/64 minimal isoイメージでのインストール直後であること</li></ul>



<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>rootでログインし、gitをインストール後、取得したbootstrap.shを実行するだけです。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>yum -y install git
cd
git clone https://github.com/ryu-blacknd/bootstrap.git
chmod +x bootstrap/bootstrap.sh
bootstrap/bootstrap.sh</code></pre></div>



<p>ほぼノンストップで進みますが、Passengerのインストール時のみ画面に表示される通りEnterを押して進んでください。</p>



<p><strong>※2013.10.16 追記：Passengerインストール時にEnterを自動入力することで、ノンストップになりました。</strong></p>



<p>インストール後はシステムを再起動します。</p>



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



<h2 class="wp-block-heading">開発に関する情報</h2>



<figure class="wp-block-table"><table><thead><tr><th>種別</th><th>値</th></tr></thead><tbody><tr><td>Gitユーザー</td><td><code>gituser:gituser</code></td></tr><tr><td>Gitベアリポジトリ *<strong>1</strong></td><td><code>/var/repos/[プロジェクト名]</code></td></tr><tr><td>Git公開鍵を追記するファイル *<strong>2</strong></td><td><code>/home/gituser/.ssh/authorized_keys</code></td></tr><tr><td>RedmineのURL</td><td><code>http://[ホスト名]/redmine/</code></td></tr><tr><td>Redmineユーザー</td><td><code>admin:admin</code></td></tr><tr><td>phpMyAdminのURL</td><td><code>http://[ホスト名]/phpmyadmin/</code></td></tr><tr><td>各プロジェクトのURL</td><td><code>http://[ホスト名]/[プロジェクト名]/</code></td></tr></tbody></table></figure>



<p>*<strong>1</strong> NetBeansでのプッシュ先リポジトリ&nbsp;=&nbsp;Redmineでの参照リポジトリ</p>



<p>*<strong>2</strong> 開発ユーザー毎にSSH公開鍵を作成し、このファイルに追記していく(後述)</p>



<h2 class="wp-block-heading">初回の開発フロー</h2>



<p>初回のみGit絡みで面倒ですが、以下のフローが済めば、以降は自動化され楽になります。</p>



<ol class="wp-block-list"><li>[サーバ] ユーザー<code>gituser</code>でSSHログイン</li><li>[サーバ] <code>/var/repos/[プロジェクト名]</code>を作成し、ディレクトリ内で<code>git init --bare</code></li><li>[ローカル] NetBeansでローカルのリポジトリにファーストコミット</li><li>[ローカル] NetBeansから先ほど作成したベアリポジトリにプッシュ</li><li>[ローカル] Redmineで新規プロジェクトを作成、リポジトリを設定、ユーザー割り当て</li><li>[サーバ] <code>cd /var/www/html</code>して<code>git clone /var/repos/[プロジェクト名]</code></li><li>[サーバ] <code>/var/repos/[プロジェクト名]/.git/hooks/</code>に<code>post-update</code>をコピーして編集</li></ol>



<p><code>post-update</code>ファイルはユーザー<code>root</code>のホームディレクトリにあるため、<code>gituser</code>はアクセスできません。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>chown gituser. post-update</code></pre></div>



<p>としておき、<code>gituser</code>のホームディレクトリにでもコピーしておくとよいでしょう。</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">post-updateのコピーと編集</h2>



<p>フックスクリプト<code>post-update</code>は、プロジェクトを作成する毎に手動でコピー、<code>****</code>の部分を編集します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>#!/bin/sh
/usr/bin/wget -q -O /dev/null http://localhost/redmine/sys/fetch_changesets?key=****
(cd /var/www/html/**** &amp;&amp; git --git-dir=.git pull)</code></pre></div>



<p>2行目は、Redmineの 管理 → 設定 → リポジトリ で生成したAPIキーを記述します。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="902" height="486" src="https://blacknd.com/wp-content/uploads/2013/10/2013-10-16_004148.png" alt="" class="wp-image-277" srcset="https://blacknd.com/wp-content/uploads/2013/10/2013-10-16_004148.png 902w, https://blacknd.com/wp-content/uploads/2013/10/2013-10-16_004148-300x162.png 300w, https://blacknd.com/wp-content/uploads/2013/10/2013-10-16_004148-768x414.png 768w" sizes="auto, (max-width: 902px) 100vw, 902px" /></figure>



<p>3行目は、上記手順のプロジェクト名(=リポジトリのディレクトリ名)を記述します。</p>



<p>これで冒頭に書いたようなフローの準備が整いました。</p>



<p>以後はNetBeansで、ローカルコミットとベアリポジトリへのプッシュを繰り返して開発を進めます。</p>



<h2 class="wp-block-heading">コミット・メッセージでチケットの状態を更新する</h2>



<p>NetBeansからのコミット時は、コミット・メッセージの文末に<code>refs #1 @1.5h</code>等を付与すると、Redmineのチケットと連携することができます。</p>



<p>このとき、作成者とコミッタをRedmineのユーザー名に合わせるようにしてください。</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="791" height="565" src="https://blacknd.com/wp-content/uploads/2013/10/2013-10-16_202424.png" alt="コミット・メッセージ" class="wp-image-382" srcset="https://blacknd.com/wp-content/uploads/2013/10/2013-10-16_202424.png 791w, https://blacknd.com/wp-content/uploads/2013/10/2013-10-16_202424-300x214.png 300w, https://blacknd.com/wp-content/uploads/2013/10/2013-10-16_202424-768x549.png 768w" sizes="auto, (max-width: 791px) 100vw, 791px" /></figure>



<p>上記ユーザー名がRedmine側と一致しない場合は、チケット連携が正常に行われません。その場合はプロジェクト毎の 設定 → リポジトリ から、ユーザーの関連付けを行ってください。</p>



<p>※詳しくはこちらを参照してください。</p>



<p>http://blog.redmine.jp/articles/new-feature-1_1/automatic-spent-time-logging/</p>



<h2 class="wp-block-heading">リポジトリへのアクセスにSSH鍵認証を利用する</h2>



<p>ユーザー毎のSSH公開鍵をユーザー<code>gituser</code>の<code>authorized_keys</code>に追記していきます。</p>



<p>以下の手順でSSH公開鍵と秘密鍵のペアを生成します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>ssh-keygen -C user@example.com</code></pre></div>



<p>なお、この鍵ペアを外部サーバへの接続用途に使わないのであれば、パスフレーズは無視して構いません。</p>



<p>これでユーザーのホームディレクトリに2つの鍵ファイルが作成されます。</p>



<figure class="wp-block-table"><table><thead><tr><th>役割</th><th>ファイル名</th></tr></thead><tbody><tr><td>SSH秘密鍵</td><td><code>~/.ssh/id_rsa</code></td></tr><tr><td>SSH公開鍵</td><td><code>~/.ssh/id_rsa.pub</code></td></tr></tbody></table></figure>



<p>この公開鍵をサーバ管理者に渡し、管理者は<code>gituser</code>ユーザーで<code>~/.ssh/authorized_keys</code>に追記します。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-plain"><code>cd ~/.ssh
cat id_rsa.pub &gt;&gt; authorized_keys</code></pre></div>



<p>次にNetBeans側で、「秘密鍵ファイル」に上記の秘密鍵ファイルを指定すれば、リポジトリにアクセスすることができるようになります。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blacknd.com/develop-wordpress/centos-development-server-bootstrap-script/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
