概要
前提
- 小規模環境での利用しかしていないので、複数の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」にチェックを付ける。