自習室

こもります

さくらのVPS (Ubuntu12.04) にGitLab(6.4.3)をインストールする

まえがき

動機

  1. 2014年1月1日、おもむろに一年の抱負などを考える
  2. 抱負の中で考えたことをブレイクダウンしていったら、Redmineを使いたくなった (このあたりは別途ブログに書く)
  3. さくらVPSを契約し、サーバを弄り始めて、メールサーバに続く肩慣らしとして、ソースコードバージョン管理システム "Git" のリポジトリを自前で管理出来る "GitLab" をセットアップしてみようと思い立つ。

GitLab: Self Hosted Git Management Application

注意書き

  • 普段はOpenFrameworksとかUnityとかAndroidとかでヒューマンインタフェース書いたりUX考えてる人です。サーバいじりは趣味レベル
  • 間違いがあるかもしれませんご注意下さい

やりたいこと

  • さくらVPS上でGitLabを運用する
  • お名前.com で取得したドメインを適用する
  • コマンドラインおよびSourceTree等GUIツールで、CloneやPushの動作を確認する

サーバ環境

  • さくらのVPS 1G
  • OS: Ubuntu 12.04 LTS (x86_64) カスタムインストール済

手順

参考にしたサイト

  • 公式インストールガイド

gitlabhq/doc/install/installation.md at master · gitlabhq/gitlabhq · GitHub

こちらには gitlab.com ドメインで同様の内容が上がっていますね。そろそろ、GitHubから離れて独立してやっていくのでしょうか。 (にしてはgithubクローン過ぎて立ち振る舞い方微妙そうですが…)

ここに従えば基本的には完了です。以下、変更した箇所などをメモっていきます

バージョンなど

  • GitLab : 6.4.3
  • GitLab Shell : 1.8.0
  • Ruby : 2.00p353
  • Rails : 4.0.2
  • git : 1.8.5.2
  • MySQL : 5.5.34

Ruby と gitは Ubuntu12.04 の標準リポジトリだと少し古い物が入ってしまうので、上記インストールガイドに従って新しい物を取得し入れ直します。

データベースはMySQLを選択しました。MySQLは、apt-get で得られた物をそのまま使っています。

設定ファイルで編集したところ

変更箇所だけ記載しています

4.GitLab shell にて
## /home/git/gitlab-shell/config.yml
# Url to gitlab instance. Used for api calls. Should end with a slash.
gitlab_url: "http://gitlab.example.jp/" #事前にお名前.comでAレコードを指定済

また、ここで、Redisがサーバ内でport 6379 を使って通信してることが記載されているので、メモっておきます。

6. GitLab : Configure it にて
## /home/git/gitlab/config/gitlab.yml
## 前略
  ## GitLab settings
  gitlab:
    ## Web server settings
    host: gitlab.example.jp #登録したホストネーム
    port: 80

    ## Email settings
    # Email address used in the "From" field in mails sent by GitLab
    email_from: gitlab@example.jp

    # Email address of your support contact (default: same as email_from)
    support_email: support@example.jp

    ## User settings
    default_projects_limit: 100
    ## 私個人でしか使わないので増やしておきます。管理画面から増やすことも出来ます

## 後略

/home/git/gitlab/config/unicorn.rb はいじっていません

Configure GitLab DB Settings にて
## /home/git/gitlab/config/database.yaml
production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: gitlabhq_production
  pool: 10
  username: git
  password: "pswd" #ダブルクオーテーションは残したまま、MySQLのセッティングの際にgit ユーザに登録したパスワードを記入します。
  # host: localhost
  # socket: /tmp/mysql.sock
7.Nginx : Site Configuration にて
## /etc/nginx/sites-available/gitlab
server {
  listen *:80;         # e.g., listen 192.168.1.1:80; In most cases *:80 is a good idea
  #listen gitlab.example.jp:80;
  server_name gitlab.example.jp;     # e.g., server_name source.example.com;

引っかかったところ

  • gitlab-shelからRedis へのアクセスが出来ていなかった

INPUT port 6379 を ACCEPT に変更。

  • すべての作業後、admin@local.host でログインが出来なかった

そもそもgitlab上に、上記adminユーザが不在な感じだったので、6.GitLab : Initialize Database and Activate Advanced Features にて、production データベースの作成し直しを行った。

sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

push時のSSHの設定

このサーバではSSHを受けるポートを標準の22とは異なる別のポートに変更していたので、gitlabにsshの公開鍵を登録した後、ローカルのコンピュータに .ssh/configure を作って、sshアクセスの設定を行います。

Host gitlab.example.jp #登録名。何でも良い
  HostName gitlab.example.jp #アクセスするホストネーム。gitlabが実在する場所
  User UserName #gitlabのユーザネーム
  IdentityFile ~/.ssh/ida_rsa #対応する秘密鍵
  Port 99999 #自分のサーバのsshポート

参考にしたサイト → gitにsshで接続(ポートと秘密鍵を指定) - まじめにゆいがどくそん