Spica*

プログラミングの話。

GitbucketをUbuntuに入れる

自分用リポジトリが欲しかったので。

環境

  • Ubuntu 16.04.3 LTS (Xenial Xerus) on AWS
  • nginx version: nginx/1.10.3 (Ubuntu)
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
(省略)

手順

## javaインストール
$ sudo apt install openjdk-8-jre-headless
$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

## 普通に手順進めていく
$ sudo groupadd -g 555 gitbucket
$ sudo useradd \
  -g gitbucket --no-user-group \
  --home-dir /opt/gitbucket --no-create-home \
  --shell /usr/sbin/nologin \
  --system --uid 555 gitbucket

## 勝手にディレクトリできないので作って、ファイルのダウンロードもしておく
$ sudo mkdir -p /opt/gitbucket
$ sudo curl -o /opt/gitbucket/gitbucket.war -L https://github.com/gitbucket/gitbucket/releases/download/4.19.2/gitbucket.war
$ sudo chown -R gitbucket:gitbucket /opt/gitbucket

## ファイルを作る。内容は後述
$ sudo vim /etc/systemd/system/gitbucket.service

## 起動
$ sudo chown root:root /etc/systemd/system/gitbucket.service
$ sudo chmod 644 /etc/systemd/system/gitbucket.service
$ sudo systemctl daemon-reload
$ sudo systemctl start gitbucket.service
$ sudo systemctl enable gitbucket.service

## 起動確認
$ curl localhost:8100

gitbucket.serviceこれを少し編集して使った。公式repoの中はちゃんと探してない。そこにもあるんだろうか

[Unit]
Description=Git hosting service

[Service]
User=gitbucket
ExecStart=/usr/bin/java -jar /opt/gitbucket/gitbucket.war --port=8100 --host=127.0.0.1 --gitbucket.home=/opt/gitbucket

[Install]
WantedBy=multi-user.target

起動確認までできたら、次は外から見えるようにReverse Proxyの設定をする

Reverse Proxy

$ sudo vim /etc/nginx/sites-available/gitbucket
$ sudo ln -s /etc/nginx/sites-available/gitbucket /etc/nginx/sites-enabled/
$ sudo systemctl restart nginx

Reverse Proxyの設定、僕はほとんど同じにしました。 server_nameproxy_pass のポートを変えただけ。

ついでにDBをMySQL使うように設定しておく

$ mysql -uroot -p
> create database gitbucket;
> grant all privileges on `gitbucket`.* to gitbucket@localhost identified by 'testPassword';
> flush privileges; 
> quit

$ sudo vim /opt/gitbucket/database.conf
db {
  url = "jdbc:mysql://localhost/gitbucket?useUnicode=true&characterEncoding=utf8"
  user = "gitbucket"
  password = "testPassword"
}

$ sudo systemctl restart gitbucket.service

余談

ちなみに僕の環境はt2.nanoなので、よくメモリ足りなくなるため、スワップファイルも作ってます。途中でメモリ足りない系エラーでるならこれやると吉かもしれない

AWS Amazon Linux スワップファイル作成によりSwap領域のサイズを増やす - Qiita