LoginSignup
65
67

More than 5 years have passed since last update.

CentOSにGitBucketを構築してみた。

Last updated at Posted at 2014-12-07

CentOSにGitBucketを構築してみた。

リポジトリ管理は、GitHubやBitbucketなどがあるが、自分のサーバでも管理できるGitbucketなるものがあるとのことで導入してみた。

構築時に参考にさせて頂いたページ

Javaをインストールする。

# yum install jdk-1.8.0 jdk-1.8.0-devel

Tomcatをインストールする。

tomcat.apache.orgからダウンロードして、/usr/localに展開する。
Tomcatのディレクトリ名はtomcatへ変更した。

# cd /usr/local/src
# wget http://ftp.kddilabs.jp/infosystems/apache/tomcat/tomcat-8/v8.0.15/bin/apache-tomcat-8.0.15.tar.gz
# tar zxvf apache-tomcat-8.0.15
# mv apache-tomcat-8.0.15 /usr/local/tomcat

Tomcatの実行ユーザを作成する。

実行ユーザがrootであることがセキュリティ上問題があるため、Tomcat実行用のユーザを作成する。

# useradd -s /sbin/nolog tomcat
# chown -R tomcat:tomcat /usr/local/tomcat

GitBucketのダウンロード

Tomcatのデフォルトアプリケーション配置フォルダへ、ダウンロードする。

# cd /usr/local/tomcat/webapps
# wget https://github.com/takezoe/gitbucket/releases/download/2.3/gitbucket.war -O gitbucket.war

tomcatの起動

Apacheと連携させるため、httpのコネクタポートは無効にし、ajpで連携する。

/usr/local/tomcat/conf/server.xml
<!--
  <connector port="8080" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443">
-->

<connector port="8009" protocol="AJP/1.3" redirectPort="8443">

Tomcatのサービス開始には下記のシェルスクリプトを実行すればいい。
起動スクリプトは別途掲載予定。

# /usr/local/tomcat/bin/startup.sh

デフォルトであれば、Tomcatの起動に合わせてwarファイルが展開され、下記ディレクトリが作成される。作成されたgitbucketディレクトリの所有者もtomcatに変更しておくように。

# chown -R tomcat:tomcat /usr/local/tomcat/webapps/gitbucket

展開されない場合は、/usr/local/tomcat/conf/server.xmlにあるHOSTタグのunpackWARs要素を確認。

Apacheとtomcatを連携し、静的ファイルの処理Apacheを任せる。

今回は、yum installされたApache上にVirtualHostを用意し、ReverseProxyでTomcatと連携する。
その際に/usr/local/tomcat/webapps/gitbucket/assetsは、ProxyせずにApacheに処理してもらう。

/etc/httpd/conf/httpd.conf
<VirtualHost *:80>
  DocumentRoot /usr/local/tomcat/webapps/gitbucket
  ServerName gitbucket.test.com
  ErrorLog logs/gitbucket-error_log
  CustomLog logs/gitbucket-access_log common

    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>

  ProxyPass /assets !

  ProxyPass /gitbucket ajp://localhost:8009/gitbucket
  ProxyPassReverse /gitbucket ajp://localhost:8009/gitbucket
  ProxyPreserveHost on

</VirtualHost>

Apacheを再起動する。

# service httpd restart

Gitbucketの起動確認

ブラウザから下記にアクセス!

http://gitbucket.test.com/gitbucket

初回ログインは、下記でOK。

  • Username:root
  • Password:root

注意点

Gitbucketの静的ファイルのpathは、gitbucket/assetsであるのでProxyPassは/gitbucketでアクセスするようにしなければ、pathの誤りとして判断され、404を返す。
Apacheにファイルを処理される場合は、Apacheからどのように見えるかを考えてProxyPassを設定しなければいけない。

CentOS6系でのGitを使用した際の注意点

git push/cloneするときに「 return code 22 」のエラーでpushやcloneができない事態があった。原因は、CentOS6系のgitの挙動のようで、Basic認証をユーザに問わないでGitBucketへリクエストを投げてしまうことが原因だった。

** 解決方法 **
.git/configのurlにユーザ名を追加する。

.git/config
[remote "origin"]
   url = http://yn0314@hogehoge.com/gitbucket/git/yn0314/fuga.git

これでようやくCentOSからgit pushできる(ノД`)
しかし、ほかにいい方法はないのだろうか・・・

65
67
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
65
67