GitLab8.10をパッケージを使わないでセットアップする方法


[男にはGitLabインストールを苦行して入れなくてはならない時がある](http://qiita.com/suesan/items/1cbff075b77628ba61ed)を書いてから1年以上経って、
インストールするモジュールとかちょっと変わったので、現時点の最新版の苦行セットアップの方法を書こうと思う。
ちょうどconohaのubuntu16.04も出たことだし、それで！

# 続・GitLabの苦行セットアップの方法
## 準備
### ユーザの作成とsudo権限の付与
```
# gitユーザの作成
sudo adduser git
# sudo権限の付与
sudo gpasswd -a git sudo
```

### ユーザの切り替え
```
sudo su - git
```

### 必要なパッケージのインストール
```
sudo apt-get install build-essential
sudo apt-get install cmake
sudo apt-get install libssl-dev
sudo apt-get install libicu-dev
sudo apt-get install pkg-config
sudo apt-get install libkrb5-dev
sudo apt-get install libreadline-dev
sudo apt-get install libmysqlclient-dev
sudo apt-get install logrotate postfix
# シンボリックリンクを貼る
sudo ln -s /usr/bin/make /usr/bin/gmake
```

## gitのインストール
gitは2.7.4が入っていたけど、最新使いたいよって人だけ、以下を実施する。

```
sudo apt-get install -y python-software-properties
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git
git --version
```

## redisのインストール
```
# リポジトリの追加と更新
sudo add-apt-repository ppa:chris-lea/redis-server
# インストール可能バージョンの確認
sudo apt-get update
# バージョンを指定してインストール
sudo apt-cache showpkg redis-server
sudo apt-get install redis-server=3:3.0.7-1chl1~xenial1
# バージョンの確認
redis-server -v
```

## Rubyのインストール
### rbenvをインストール

```
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL -l
```

### ruby-buildをインストール

```
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
```

### Rubyをインストール

```
rbenv install -v 2.3.1
rbenv global 2.3.1
```

## bundlerのインストール

```
# bundlerのインストール
gem install bundler
```

## MariaDBのインストール
### DBのインストール

```
sudo apt-get install mariadb-server
```

### DBのセットアップ

```
mysql -u root -p
CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'パスワード';
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
\q
# 接続確認
mysql -u gitlab -p -D gitlabhq_production
```

## gitlab-workhorseのインストール

### Golangのインストール

```
sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable
sudo apt-get update
sudo apt-get install golang
```

### gitlab-workhorseのインストール

使用するバージョンは[GITLAB_WORKHORSE_VERSION](https://github.com/gitlabhq/gitlabhq/blob/8-10-stable/GITLAB_WORKHORSE_VERSION)を確認する。

```
cd ~/
git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git
cd gitlab-workhorse/
git checkout -b v0.7.8
make
```

## gitlab-shellのインストール

使用するバージョンは[GITLAB_SHELL_VERSION](https://github.com/gitlabhq/gitlabhq/blob/8-10-stable/GITLAB_SHELL_VERSION)を確認する。

```
cd ~/
git clone https://gitlab.com/gitlab-org/gitlab-shell.git
cd gitlab-shell
git checkout v3.2.1
cp config.yml.example config.yml
# config.ymlを自身の設定に合わせて変更する
```

## GitLab本体のインストール

### リポジトリディレクトリの作成
```
cd ~/
mkdir repositories
```

### 本体のclone

```
cd ~/
git clone https://gitlab.com/gitlab-org/gitlab-ce.git gitlab
cd gitlab
8-10-stable
```

### 設定
```
cd config
cp database.yml.mysql database.yml
# 自身のDB設定に合わせて変更する
vim database.yml

cp gitlab.yml.example gitlab.yml
# 自身の環境に合わせて本体の設定をする
vim gitlab.yml

cp resque.yml.example resque.yml
# 自身のredisの設定に合わせて変更する
vim resque.yml

cp secrets.yml.example secrets.yml

cp unicorn.rb.example unicorn.rb
# 必要に合わせて変更する
vim unicorn.rb

cp sidekiq.yml.example sidekiq.yml
# sidekiqのワーカー数をサーバに合わせて変更する
# ゆとりインストール版だと25に設定されている
vim sidekiq.yml
```

### gemのインストール
#### Gemfileに以下を追加する
```
gem 'therubyracer'
bundle install --no-deployment
```

#### gemのインストール
```
bundle install --deployment --without development test postgres
```

### 初期設定
```
bundle exec rake gitlab:setup RAILS_ENV=production
```

### Assetsのビルド
```
bundle exec rake assets:precompile RAILS_ENV=production
```

### 起動コマンド
```
sudo cp ./lib/support/init.d/gitlab /etc/init.d/gitlab
```

## Nginx

```
sudo su -
curl http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
sudo sh -c "echo 'deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx' >> /etc/apt/sources.list"
sudo sh -c "echo 'deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx' >> /etc/apt/sources.list"
apt-get update
apt-get install nginx
cp /home/git/gitlab/lib/support/nginx/gitlab /etc/nginx/conf.d/gitlab.conf
service nginx restart
```

## ブラウザからアクセス
http://your_host/

### 初期アカウント
ID：root
password：5iveL!fe

## 既知の問題
- 新規リポジトリを作成した際し、コマンドからpushすると、タブメニュのRepositoryが表示されない。
- pipelineを利用すると、500エラー。CI入れてないから。。。そのうち治す。