Last-modified: 2014-09-02 (火) 09:38:58
GitLab/Debianへのインストール

概要

Debianのリポジトリにはないので、GitLabをソースから導入します。
GitLab公式サイトの手順に従います。
https、サブディレクトリ、MariaDB、basic認証環境を構築します。
ここでは、以下のサンプルURLを使用します。
https://hoge.paburica.com/gitlab
先にこちらを見たほうが、全体像が掴めるかもしれません。
Nginx/Gitlab,Redmine,Jenkinsサブディレクトリ構成の設定
※ちなみに、試してはいませんがGitLab | Package downloads for GitLab CEにある通り、debパッケージがあるようです。

手順

  1. 前準備
    Everything is expanded.Everything is shortened.
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
     70
     71
     72
     73
     74
     75
     76
     77
     78
     79
     80
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91
     92
     93
     94
     95
     96
     97
     98
     99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    
    -
    !
     
     
     
    -
    |
    |
    !
     
    -
    !
     
    -
    !
    -
    !
     
    -
    !
    -
    !
     
    -
    !
     
    -
    !
     
    -
    |
    !
     
     
     
     
     
     
    -
    !
     
     
     
    -
    !
     
     
     
     
     
     
     
    -
    !
    -
    !
     
     
     
     
     
     
     
     
     
    -
    !
     
     
     
     
    -
    !
     
     
    -
    !
     
     
     
    -
    !
     
     
     
     
     
     
     
     
    -
    !
    -
    |
    !
     
    -
    !
     
    -
    !
     
     
     
     
     
     
    -
    !
    -
    |
    !
     
    -
    !
    -
    |
    -
    -
    |
    !
    !
    -
    !
     
     
    -
    !
     
    -
    |
    !
     
    -
    !
     
    -
    !
    
    # 最新の状態にする
    apt-get update -y
    apt-get upgrade -y
    apt-get install sudo -y
     
    # MariaDB公式リポジトリとDotdebリポジトリが入っていると
    # apt-get install mariadbclient-devが失敗した
    # 今回の環境ではDotdebリポジトリを使っていない&使う予定もないので外して作業した
    sudo apt-get install mariadbclient-dev -y
     
    # 必須パッケージのインストール
    sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils
     
    # Gitのインストール
    sudo apt-get install -y git-core
    # 1.7.10.0以上なので続行
    git --version
     
    # SMTPサーバーはexim4が構築済みなのでスキップ
     
    # Ruby1.8は入っていなかったので削除スキップ
    dpkg -l | grep ruby
     
    # bundlerインストール
    sudo gem install bundler --no-ri --no-rdoc
     
    # システムユーザー(git)作成
    sudo adduser --disabled-login --gecos 'GitLab' git
     
    # DBはMariaDBが入っているのでインストールスキップ
    # DBセットアップ
    mysql -u root -p
    CREATE USER 'git'@'localhost' IDENTIFIED BY '<パスワード>';
    SET storage_engine=INNODB;
    CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
    GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'git'@'localhost';
    \q
     
    # gitlab取得
    cd /home/git
    sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-1-stable gitlab
    cd /home/git/gitlab
     
    # gitlab.yml編集
    sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
    vi config/gitlab.yml
    host: hoge.paburica.com
    port: 443
    https: true
    relative_url_root: /gitlab
    email_from: [email protected]
    ssh_port: <SSHポート番号(デフォルト以外であれば)>
    # ここまで(gitlab.yml)
     
    # ディレクトリ調整
    sudo chown -R git log/
    sudo chown -R git tmp/
    sudo chmod -R u+rwX log/
    sudo chmod -R u+rwX tmp/
    sudo -u git -H mkdir /home/git/gitlab-satellites
    sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites
    sudo chmod -R u+rwX tmp/pids/
    sudo chmod -R u+rwX tmp/sockets/
    sudo chmod -R u+rwX  public/uploads
     
    # unicorn.rb編集
    sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
    vi config/unicorn.rb
    ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab"
    worker_processes 1  # 環境に合わせる
    listen "127.0.0.1:8083", :tcp_nopush => true  # 他と被らないポート番号にする
    # ここまで(unicorn.rb)
     
    sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
     
    # git global settings
    sudo -u git -H git config --global user.name "GitLab"
    sudo -u git -H git config --global user.email "gitlab.paburica.com"
    sudo -u git -H git config --global core.autocrlf input
     
    # database.yml編集
    sudo -u git cp config/database.yml.mysql config/database.yml
    production:
      adapter: mysql2
      encoding: utf8
      reconnect: false
      database: gitlabhq_production
      pool: 10
      username: git
      password: "<MariaDBのgitユーザーパスワード>"
    # ここまで(database.yml)
     
    # gemインストール
    # -j<CPUコア数>で並列実行するので早く終わる
    sudo -u git -H bundle install -j3 --deployment --without development test postgres aws
     
    # git shellインストール
    sudo -u git -H bundle exec rake gitlab:shell:install[v1.9.6] REDIS_URL=redis://localhost:6379 RAILS_ENV=production
     
    # config.yml編集
    vi /home/git/gitlab-shell/config.yml
    gitlab_url: https://hoge.paburica.com/gitlab
    http_settings:
      self_signed_cert: false
      ca_file: <SSLサーバー証明書の公開鍵パス>
      user: <basic認証ユーザー名>
      password: <basic認証パスワード>
    # ここまで(config.yml)
     
    # DB初期化
    # yesと入力する
    sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
     
    # initスクリプト作成
    sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
    # gitlab編集
    # Switch to the app_user if it is not he/she who is running the script.
    if [ "$USER" != "$app_user" ]; then
      #起動しないので修正
      #eval su - "$app_user" -c $(echo \")$0 "[email protected]"$(echo \"); exit;
      sudo -u "$app_user" -H -i $0 "[email protected]"; exit;
    fi
    # ここまで(gitlab)
    sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
    sudo update-rc.d gitlab defaults 21
     
    # ログローテート設定作成
    sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
     
    # チェック
    # 異常箇所の指摘がinitスクリプトの編集のみになることを確認
    sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
     
    # assetsコンパイル
    sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
     
    # 起動
    service gitlab restart
  2. Nginxのサイト設定を行います。
    Nginx/Gitlab,Redmine,Jenkinsサブディレクトリ構成の設定

補足1

/home/git/gitlab-shell/config.ymlにはbasic認証のパスワードが入っているため、chmod 600でアクセス権を締めないといけません。

補足2

dotdebを外す前にインストール済みのdotdebパッケージを確認したところ、厳密にゼロではなく、今回の作業中にredis-serverがdotdebから入っていました。
dotdeb版を削除しdebian公式のredis-serverを入れなおしたところ、rdbバージョンが合わず、結局永続化ファイル(rdb)を削除して続行しました。
最終的な動作確認をしようとデフォルトのユーザー、パスワードでログインしようとしましたが失敗。
以下のコマンドを実行すると、rdb内にデータを再生成するらしくログインできました。

Everything is expanded.Everything is shortened.
  1
  2
 
 
cd /home/git/gitlab
sudo -u git bundle exec rake db:seed_fu RAILS_ENV=production

補足3

SSLサーバー証明書は、StartCOMのclass1を使ったのですが、pushやcloneに失敗しました。
ちなみに/home/git/gitlab-shell/config.ymlのself_signed_cert(自己証明書オプション)をtrueにすると成功しました。
StartSSL™ Certificates & Public Key Infrastructure -にも書いてありますが、この証明書はチェインして使うのが正しい方法でした。
WindowsやMacはStartComが信頼された証明機関に含まれているのでチェインしなくとも正常に処理されますが
Debianではチェインしないと失敗するようです。
チェインした証明書を指定すると、self_signed_certをfalseに戻しても正常にpushやcloneが行えました。

検証時の環境