14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GitBucketをインストールする(Apache+GitBucket内蔵HTTPサーバ)

Last updated at Posted at 2015-11-23

概要

前提

  • 小規模環境での利用しかしていないので、複数のWEBサービスを一つのサーバ上で動かすことを想定しています。
  • 一つのサービスを一つのアカウントで実行し、サービスデータのバックアップは実行アカウントのホームディレクトリのバックアップだけで済むようにします。

構成

ユーザ環境

/var/lib/git/
├─etc/
│  ├─httpd.conf          => apache設定ファイル
│  ├─logrotate.conf      => ログローテート設定ファイル
│  ├─init.conf           => upstart起動設定ファイル
│  └─service.conf        => systemd起動設定ファイル
└─gitbucket/
    ├─gitbucket-3.X.war   => gitbucketプログラム
    ├─gitbucket.war       => ~git/gitbucket/gitbucket-3.X.war のシンボリックリンク
    └─startup.sh          => gitbucket起動スクリプト

システム環境

/etc/
├─apache2/sites-available/
│  └─gitbucket.conf      => ~git/etc/httpd.conf のシンボリックリンク
├─httpd/conf.d/
│  └─gitbucket.conf      => ~git/etc/httpd.conf のシンボリックリンク
├─logrotate.d/
│  └─gitbucket           => ~git/etc/logrotate.conf のシンボリックリンク
├─init/
│  └─gitbucket.conf      => ~git/etc/init.conf のシンボリックリンク
└─systemd/system/
    └─gitbucket.service   => ~git/etc/service.conf のシンボリックリンク

/var/log/git/
    └─gitbucket.log       => ログファイル

/var/run/git/
    └─gitbucket.pid       => PIDファイル

準備

システム環境(CentoOS 7)

  • パッケージ追加
$ sudo yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
  • ユーザ追加
$ sudo useradd --system -g apache -c "Git repository" -m -d /var/lib/git -s /bin/bash git

システム環境(Ubuntu 14.04)

  • パッケージ追加
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
$ sudo apt-get install oracle-java8-set-default
  • ユーザ追加
$ sudo mkdir -p /var/lib
$ sudo useradd --system -g www-data -c "Git repository" -m -d /var/lib/git -s /bin/bash git

インストール

ユーザ環境

gitbucketインストール

  • ディレクトリ作成
$ sudo su - git
$ mkdir ~/{etc,gitbucket}
  • リリース版のファイル取得
$ wget -O ~/gitbucket/gitbucket-3.11.war https://github.com/takezoe/gitbucket/releases/download/3.11/gitbucket.war
$ ln -sf ~/gitbucket/gitbucket-3.11.war ~/gitbucket/gitbucket.war

gitbucket起動ファイル作成

$ cat <<'EOS' | tee ~/gitbucket/startup.sh
#!/bin/bash

PORT=9080
APPHOME=/var/lib/git/gitbucket
APPFILE=$APPHOME/gitbucket.war
LOGFILE=/var/log/git/gitbucket.log

cd $APPHOME
java -jar $APPFILE --port=$PORT --prefix=/gitbucket --gitbucket.home=$APPHOME >> $LOGFILE 2>&1
EOS
$ chmod a+x ~/gitbucket/startup.sh

apache設定ファイル作成

$ cat <<EOS | tee ~/etc/httpd.conf
<Location /gitbucket>
    Options -MultiViews
    BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On

    ProxyPass        http://127.0.0.1:9080/gitbucket
    ProxyPassReverse http://127.0.0.1:9080/gitbucket

    Require all granted
</Location>
EOS

ログローテート設定ファイル作成

$ cat <<EOS | tee ~/etc/logrotate.conf
/var/log/git/gitbucket.log {
	weekly
	coppytruncate
	rotate 52
	ocmpress
	delaycompress
	notifempty
}
EOS

システム環境(CentOS 7)

  • ディレクトリ作成
$ sudo mkdir /var/{log,run}/git
$ sudo chown git:apache /var/{log,run}/git
  • systemd起動設定ファイル作成
$ cat <<EOS | sudo tee /etc/service.conf
[Unit]
Description=GitBucket service
After=syslog.target
After=network.target

[Service]
Type=simple
PIDFile=/var/run/git/gitbucket.pid
User=git
Group=apache
WorkingDirectory=$HOME/gitbucket
ExecStart=$HOME/gitbucket/startup.sh

[Install]
WantedBy=multi-user.target
EOS
  • systemd起動設定
$ sudo systemctl enable gitbucket.service

# 確認
$ sudo journalctl -xn
$ systemctl list-unit-files | grep gitbucket
  • gitbucket起動
$ sudo systemctl start gitbucket.service

# 確認
$ systemctl status -l gitbucket.service
  • apache連携設定
$ sudo ln -sf ~git/etc/httpd.conf /etc/httpd/conf.d/gitbucket.conf
$ sudo systemctl reload httpd.service

# 確認
$ systemctl status httpd.service
$ sudo journalctl -xn

システム環境(Ubuntu 14.04)

  • ディレクトリ作成
$ sudo mkdir /var/{log,run}/git
$ sudo chown git:www-data /var/{log,run}/git
  • upsatart起動設定ファイル作成
$ cat <<EOS | sudo tee /etc/init.conf
description "GitBucket service"

start on runlevel [2345]
stop on runlevel [!2345]
respawn
respawn limit 10 5

setuid git
setgid www-data

exec $HOME/gitbucket/startup.sh
EOS
  • upstart起動設定
$ sudo initctl reload-configuration

# 確認
$ initctl list | grep gitbucket
  • gitbucket起動
$ sudo start gitbucket

# 確認
$ service gitbucket status
  • apache連携設定
$ sudo ln -sf ~git/etc/httpd.conf /etc/apache2/sites-available/gitbucket.conf
$ sudo a2ensite gitbucket
$ sudo a2enmod proxy_http
$ sudo service apache2 reload

システム環境(共通)

  • ログローテート設定
$ sudo ln -sf ~git/etc/logrotate.conf /etc/logrotate.d/gitbucket

# 確認
$ sudo cat /etc/logrotate.d/gitbucket

セットアップ

デフォルトアカウント無効化

  • http://サーバ/gitbucket にアクセスし、デフォルト認証(root/root)でログインする。
  • rootのパスワードを変更する。
    • 右上のアイコンをクリックし、メニューから「Account Settings」を選択する。
  • 新規アカウントを作成する。
    • 右上のアイコンをクリックし、メニューから「System administration」を選択する。
    • User Management」で「New User」ボタンをクリックする。
    • 「User Type」を「Administrator」にして、自分のアカウントを作成する。
  • 新しいアカウントでログインし直してrootユーザをdisableにする。

SSHアクセス

  • gitリポジトリへのSSHアクセスを有効化する。
    • 右上のアイコンをクリックし、メニューから「System Settings」を選択する。
    • 「Base URL」にサイトURLを設定する。
    • 「Enable SSH access to git repository」にチェックを付ける。
14
15
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
14
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?