2013年5月12日日曜日

Ubuntuで、GitLabをインストールしてみたよ!


GitLabインストールしたよ!って記事です。

もくじ


きっかけ


社内で、「git使って、Pull Request文化取り入れようぜ!」

という機運が上がってきたので、入れる担当になったのですが・・・(´・ω・`)

これが、思わぬ所でハマったので簡単に手順メモです。

GitLabとは


そもそも、「GitLab」とは?

一言で言うと

githubのオープンソースクーロンです。

簡単に自分が調べた限りの特徴を

  • 社内などプライベートなサーバーに構築
  • github に似たUIを持っている
    • issue, wiki, Merge Requests(pull request)
  • Ruby on Rails で作られている
  • ソースが公開されていて自由にインストールできる

要は、github使いたいけど、ソースが「公開」になるのはまずいよな~ と、いうのに答えるプロダクトです。

前提条件


  • Ubuntu 12.04 LTS
  • Ruby はdeb
  • DBはMySQL
  • とりあえず、Productionのみ
  • バージョン 5.1 ← ここ大事w


流れ


すくなくとも公式では、パッケージが提供されていないので、「公式」の手順(5.1)通り進めていきます。

  • ビルド?に必要なパッケージのインストール
  • git ユーザーの追加
  • 「GitLab shell」のインストール
  • MySQL で、Productionのユーザー、DB作成
  • 「GitLab」のインストール
  • nginx のインストール
  • gitlab の自動起動設定

インストール手順


主に本家の通りですが、Rubyのインストールだけaptでdebパッケージから入れています。
- https://github.com/gitlabhq/gitlabhq/blob/5-1-stable/doc/install/installation.md

必要なパッケージのインストール



    sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl git-core openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev
    sudo apt-get install postfix 
    sudo apt-get install mysql-server libmysqlclient-dev
 


  • Rubyのインストール

    sudo apt-get install rubygems1.9.1 ruby1.9.1-dev
    
  • Bundler(Ruby)のインストール

    sudo gem install bundler
    

分けて「インストール」しているのは、特に理由はありませんので、一緒にしたい方は一緒にインストールしちゃってください!

git ユーザーの追加



    sudo adduser --disabled-login --gecos 'GitLab' git
 


「GitLab shell」のインストール


  • 公式手順のほぼ、まんまコピペです。(^^;)

    # Login as git
    sudo su git

    # Go to home directory
    cd /home/git

    # Clone gitlab shell
    git clone https://github.com/gitlabhq/gitlab-shell.git

    cd gitlab-shell

    # switch to right version
    git checkout v1.2.0

    cp -v config.yml.example config.yml

    # Edit config and replace gitlab_url
    # gitlab_url: "http://localhost/" ⇒ "[利用FQDN]"
    # vim config.yml
    # OR
    # sed -i 's/localhost/[利用FQDN]/' config.yml
    sed -i "s/localhost/`hostname -f`/" config.yml

    # Do setup
    ./bin/install

MySQL で、Productionのユーザー、DB作成



    # MySQL の最低限の調整
    sudo mysql_secure_installation

    # MySQLにログイン
    $ mysql -u root -p

    # gitlabユーザーを作成($passwordにパスワード)
    mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY '$password';

    # プロダクション用のデータベースを作成
    mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production`  DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;

    # gitlabユーザーに権限を付与
    mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX,   ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';

    mysql> flush privileges;
    mysql> quit

「GitLab」のインストール


  • いよいよ本体のインストールです!

    cd /home/git

    # Clone GitLab repository
    sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git   gitlab

    # Go to gitlab dir
    cd /home/git/gitlab

    # Checkout to stable release
    sudo -u git -H git checkout 5-1-stable

    cd /home/git/gitlab

    # Copy the example GitLab config
    sudo -u git -H cp -v config/gitlab.yml.example config/gitlab.yml

    # "localhost" を "利用のFQDN" に
    # ちなみにここで設定する "ホスト名" が画面で出てくる、「gitのURL」になります。
    # sudo -u git -H vim config/gitlab.yml
    # OR
    # sudo -u git -H sed -i 's/localhost/[利用FQDN]/' config/gitlab.yml
    sudo -u git -H sed -i "s/localhost/`hostname -f`/" config/gitlab.yml

    # Make sure GitLab can write to the log/ and tmp/ directories
    sudo chown -R git log/
    sudo chown -R git tmp/
    sudo chmod -R u+rwX  log/
    sudo chmod -R u+rwX  tmp/

    # Create directory for satellites
    sudo -u git -H mkdir /home/git/gitlab-satellites

    # Create directories for sockets/pids and make sure GitLab can  write to them
    sudo -u git -H mkdir tmp/pids/
    sudo -u git -H mkdir tmp/sockets/
    sudo chmod -R u+rwX  tmp/pids/
    sudo chmod -R u+rwX  tmp/sockets/

    # Copy the example of Puma config
    sudo -u git -H cp -v config/puma.rb.example config/puma.rb

  • DBの設定(MySQL)

    sudo -u git cp -v config/database.yml.mysql config/database.yml

    # DB 情報設定
    sudo -u git vim config/database.yml

  • インストール

    cd /home/git/gitlab

    sudo gem install charlock_holmes --version '0.6.9'

    # gitlab のインストール
    sudo -u git -H bundle install --deployment --without development test postgres

  • DB にデータ入力

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

  • gitlab の起動

    # gitlab の起動
    sudo /etc/init.d/gitlab restart

nginx のインストール


GitLabはpumaのsocketで立ち上がるので、 フロントでサーバーが必要となるので、推奨の「nginx」を導入します。

    sudo apt-get install nginx

  • nginx の設定

    # サイトの設定ファイル設置
    sudo curl --output /etc/nginx/sites-available/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/5-1-stable/nginx/gitlab
    sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

    # 設定ファイルの編集
    # Change **YOUR_SERVER_IP** and **YOUR_SERVER_FQDN**
    # sudo vim /etc/nginx/sites-available/gitlab
    # OR
    sudo sed -i 's/YOUR_SERVER_IP://' /etc/nginx/sites-available/gitlab
    # sudo sed -i 's/YOUR_SERVER_FQDN/[利用FQDN]/' /etc/nginx/sites-available/gitlab
    sudo sed -i "s/YOUR_SERVER_FQDN/`hostname -f`/" /etc/nginx/sites-available/gitlab

gitlab の自動起動設定


    # スクリプトの設置
    sudo curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlab-recipes/5-1-stable/init.d/gitlab
    sudo chmod +x /etc/init.d/gitlab

    # 自動起動設定
    sudo update-rc.d gitlab defaults 21

    # gitlab の起動
    sudo /etc/init.d/gitlab restart

  • 出来上がり!(/・ω・)/

まとめ


  • 4.x系と、5.0、5.1 と3種類くらいインストール方法があって、違うので注意!

    Webに転がっている、記事見ると後で苦労するので、

    面倒でも、本家の英語手順 を使うべき!
  • クラウドだとAMIや、VM Depot あるよ!(それでいいのか!?w)
  • やっぱり、github使った方がいいんじゃね??(/・ω・)/

Zenback