バージョン管理のサーバにGitBucketを導入してみる

バージョン管理システム、いろいろありますね。

フリーソフトウェアオープンソース[編集]

バージョン管理システム - Wikipedia

 

OSSのGitサーバ4種類を主観的に比較する | 純規の暇人趣味ブログ

⇧  上記サイト様によると、Gitを使う場合でオープンソースで良さげなものは

  1. GitLab
  2. GitBucket
  3. Gitblit
  4. Gogs

ということになるみたいです。

GitBucketの作者の方は日本の方のようです。

作者takezoe氏の言葉によると、GitBucketは「Github Enterpriseは高いしOSSではない、GitLabはインストールやバージョンアップがめんどくさい、という隙間を狙ったプロダクト」と位置づけられています。社内や個人用途で気軽に使うことができるGitHubクローンとしてなかなか有望そうですね。

超簡単インストールが可能なGitHubクローン「GitBucket」が凄い

ということで、GitBucketを導入していきたいと思います。

GitBucketの導入

CentOS7にGitBucketを構築 - Qiita

 ⇧  上記サイト様を参考に構築していきます。

Redmineをインストールした仮想マシンを利用していくので、

はインストール済みという前提でいきたいと思います。

 

ts0818.hatenablog.com

 

 

Scalaで開発されており、Javaの実行環境であるJVMで動作。

インストールが超簡単で、warをダウンロードしてきて実行するだけで動作します。(warなのでTomcatに入れてもOK、いわゆるExecutable war)

また、JGitという100%Javaで実装されたGitライブラリを使用しているので、サーバ側にGitをインストールする必要がありません。

GitBucket単体という最小構成から、GitBucket+Tomcat+DB+Webサーバという良くある構成まで柔軟に調整出来ます。

OSSのGitサーバ4種類を主観的に比較する | 純規の暇人趣味ブログ

ということで、GitBucketを利用するには、Javaが必須のようです。 

Javaのインストール 

[CentOS7]Oracle Java8をインストール | Zero Configuration

 ⇧  上記サイト様によると、

JDKJava SE)には2種類あるみたいですが、 

Java - openJDKとOracle JDKの違い(84019)|teratail

⇧  によりますと、ほとんど大差はないようです。

 

[Java] OracleJDKの取得方法が大きく変わりました | Developers.IO

⇧  上記サイト様によると、Oracle JDKの過去のものの利用に関しては制限があるみたいですね。 

 

CentOS 7/Oracle JDKをインストールする - MonoBook

 ⇧  上記サイト様によると、Oracle JDKを利用する場合はopenJDKも入れておいたほうが良いようです。

openJDKのインストール

yum search jdk
sudo yum install java-1.8.0-openjdk-devel

f:id:ts0818:20171007131917j:plain

 

Oracle JDKのダウンロード

Java SE - Downloads | Oracle Technology Network | Oracle にアクセスしたら下のほうにスクロールし、「Java SE 8u×××」の「JDK」の「DOWNLOAD」をクリック。(Java SE 9が登場してましたね)

f:id:ts0818:20171007132736j:plain

「Accept License Agreement」にチェックを入れ、

f:id:ts0818:20171007133706j:plain

Linux x64』の「.rpm拡張子」のDownloadリンクの上で右クリックし、「リンクのアドレスをコピー」。

f:id:ts0818:20171007133814j:plain

コピーしたアドレスを基に、仮想マシン内にOracle JDKダウンロード

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.rpm

f:id:ts0818:20171007134241j:plain

Oracle JDKのインストール 

ダウンロードしたOracle JDKyumでインストールします。

sudo yum localinstall jdk-8u144-linux-x64.rpm

f:id:ts0818:20171007134700j:plain

f:id:ts0818:20171007134710j:plain

Oracle JDKを登録する

CentOS7にJDKが複数あることを登録する必要がある。 rpmを入れただけで自動登録されたりはしない。 この説明を飛ばしているサイトばかりで凄い悩んだ。 優先度(末尾の17000)はなんでもいい。

CentOS 7/Oracle JDKをインストールする - MonoBook

ということで、

sudo alternatives --install /usr/bin/java java /usr/java/default/bin/java 17000

f:id:ts0818:20171007135259j:plain

Oracle JDKを使う設定にする

alternativesコマンドによってJavaVMの切り替えができるようです。

alternativesコマンドでjavaVMを、OracleJava8に変更します 

[CentOS7]Oracle Java8をインストール | Zero Configuration

sudo alternatives --config java

f:id:ts0818:20171007135803j:plain

Javaのバージョン確認

f:id:ts0818:20171007135823j:plain

 

Apache Tomcat をインストール

CentOS7にTomcat8を構築する方法 - Qiita

⇧  上記サイト様を参考

 

tomcatユーザーの作成

useradd -s /sbin/nologin tomcat

tomcatダウンロード

sudo mkdir -p /usr/local/src/tomcat
sudo cd /usr/local/src/tomcat
sudo curl -OL http://www-us.apache.org/dist/tomcat/tomcat-9/v9.0.1/bin/apache-tomcat-9.0.1.tar.gz

f:id:ts0818:20171007142850j:plain

tar.gz展開&配置

sudo su    
tar zxvf apache-tomcat-9.0.1.tar.gz
mv apache-tomcat-9.0.1 /opt/
chown -R tomcat. /opt/apache-tomcat-9.0.1

f:id:ts0818:20171007143524j:plain

今後発生するVersion upによるパス差分をシンボリックリンクで吸収

ln -s /opt/apache-tomcat-9.0.1 /opt/tomcat

Windowsの方が得意な人は、ショートカットみたいなものだと思ってください。このショートカット(と似たような役目のファイル)のUNIXOSLinuxとかMacとか)における呼び名が「シンボリックリンク」です。 

シンボリックリンク (symbolic link)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

 

パスを通す

echo 'export CATALINA_HOME=/opt/tomcat'  >  /etc/profile.d/tomcat.sh
source /etc/profile.d/tomcat.sh

f:id:ts0818:20171007143838j:plain

初期設定

サービス定義ファイルを作成

vim /etc/systemd/system/tomcat.service

/etc/systemd/system/tomcat.service

[Unit]
Description=Apache Tomcat 8
After=syslog.target network.target

[Service]
User=tomcat
Group=tomcat
Type=oneshot
PIDFile=/opt/tomcat/tomcat.pid
RemainAfterExit=yes

ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
ExecReStart=/opt/tomcat/bin/shutdown.sh;/opt/tomcat/bin/startup.sh

[Install]
WantedBy=multi-user.target

f:id:ts0818:20171007144152j:plain

権限付与

chmod 755 /etc/systemd/system/tomcat.service

 

GitBucketダウンロード

GitHub - gitbucket/gitbucket: A Git platform powered by Scala with easy installation, high extensibility & GitHub API compatibility にアクセス。「the release page」のリンクをクリック。

f:id:ts0818:20171007155229j:plain

「gitbucket.war」の上で右クリックし、「リンクのアドレスをコピー(E)」。

f:id:ts0818:20171007155533j:plain

GitBucketをTomcatのデフォルトアプリケーション配置フォルダへ、ダウンロードします。gitbacket.warとして配置されたので、Tomcatが起動すればWarファイルが展開されます。

cd /opt/apache-tomcat-9.0.1/webapps
wget https://github.com/gitbucket/gitbucket/releases/download/4.17.0/gitbucket.war -O gitbucket.war

f:id:ts0818:20171007160013j:plain

 

Apache HttpdApache Tomcatの連携

Apache httpd と Tomcat を連携させる方法 | WEB ARCH LABO

Apache2.4.6とTomcat8.0.32の連携設定 - bnote

Apache 2.4 で リバースプロキシの設定 - Qiita

Nginxのときは、リバースプロキシでTomcatと連携してたんですが、Apached Httpdの場合、「mod_proxy_ajp.so」を使ってる人がいたり「mod_proxy_http.so」を使ってる人がいたりでどうすれば?

 ・mod_proxy_httpとmod_proxy_ajpとmod_jk — ありえるえりあ

⇧  上記サイト様によると、 どっちもそんなに変わらないとのこと。

⇩  Tomcat 9 から HTTP2.0 対応できるみたいですね

で、 HTTP2.0 対応って何をすればいいの? - dskst's diary

Tomcat 9 を HTTP/2 サーバーにする – 1Q77

 

Apache httpd の設定

AJP (Apache JServ Protocol) というプロトコルで連携していきたいと思います。

起動してるApache Httpdの確認

ps ax | grep httpd

f:id:ts0818:20171007162447j:plain

設定ファイルを編集します。

vim /usr/local/apache2/conf/httpd.conf

f:id:ts0818:20171007163354j:plain

「LoadModule proxy_module modules/mod_proxy.so 」

「LoadModule proxy_ajp_module modules/mod_proxy_ajp.so」

コメントアウトを外し有効化。

f:id:ts0818:20171007163406j:plain

「/usr/local/apache2/conf.d/tomcat.conf 」を作成し、プロキシーパスを設定。

vim /usr/local/apache2/conf.d/tomcat.conf

下記記述。

<Location /gitbucket>
  ProxyPass ajp://localhost:8009/gitbucket
</Location>

f:id:ts0818:20171007164135j:plain

Apache HttpdApache Tomcatを再起動します。 

systemctl restart httpd
systemctl restart tomcat    

f:id:ts0818:20171007165112j:plain

ブラウザで『http://仮想マシンIPアドレス/gitbucket/』にアクセス。

f:id:ts0818:20171007165154j:plain

GitBucketが表示されました。 「Sign in」でログインします。「初期アカウント」は「Username」=「root」、「Password」=「root」でログインできます。

f:id:ts0818:20171007165831j:plain

ログインしたら、右上の「Accout settings」で「root」ユーザーのパスワードとか変更できます。

f:id:ts0818:20171007170347j:plain

「Password(input to change password):」に新しいパスワードを入力し、「Save」。

f:id:ts0818:20171007170330j:plain

更新されました。

f:id:ts0818:20171007170529j:plain

 

『http://仮想マシンIPアドレス/redmine/』にアクセスすると、

f:id:ts0818:20171007165431j:plain

Redmineが表示されました。

次回は、 RedmineとBitBucketの連携に取り組んでいきたいと思います。

今回はこのへんで。

 

http://www.publickey1.jp/blog/18/kubernetesdockerdocker_for_mac_with_kubernetes.html