Ubuntu 14.04 beta1 に gitlab をインストールする
環境
Ubuntu 14.04 beta1 で gitlab をインストールしたときのメモ。
Ruby は rbenv でインストールしたもので、バージョンは
ruby 2.0.0p175 (2013-04-27 revision 40490) [x86_64-linux]
Ubuntu 12.04 用の deb パッケージもあるが、14.04 なので https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md (設定の値は本家の英語の説明を見る)にあるようにインストールする。
メールの機能はとくに設定していないので、確認していないがおそらくは動かないので注意。
gitlab は rails アプリケーションなので unicorn と nginx で動かす。 データベースは PostgreSQL を使う。
必要なパッケージ
apt-get install 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
でインストールする。
git ユーザ
システム (Ubuntu) のユーザ git のホームディレクトリ (/home/git) にいろいろファイルを置いていく。 操作は root で sudo -u git を使ってユーザ git の権限で行うことが多い。 まず、git という名前のユーザをシステムに追加する。
adduser --disabled-login --gecos 'GitLab' git
gitlab-shell
gitlab-shell をダウンロードする。
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0
cd gitlab-shell
sudo -u git -H cp config.yml.example config.yml
config.yml の設定を環境に合わせて編集する。
sudo -u git -H editor config.yml
そして
sudo -u git -H ./bin/install
とする。
PostgreSQL のデータベースを作成
MySQL の方が慣れているのだが PostgreSQL が推奨されている。
apt-get install postgresql postgresql-client libpq-dev
でインストールする。
sudo -u postgres psql -d template1
として PostgreSQL の端末を起動する。
CREATE USER git;
CREATE DATABASE gitlabhq_production OWNER git;
\q
で PostgreSQL のユーザとデータベースを作成する。
sudo -u git -H psql -d gitlabhq_production
でデータベースに接続できるかどうかを確認する。うまくいけば
\q
として終了する。
gitlab のダウンロードと設定
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-6-stable gitlab
cd gitlab
で gitlab をダウンロードして、そのディレクトリに移動する。
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
で設定ファイルをコピーして
sudo -u git -H editor config/gitlab.yml
で編集する。 gitlab の host のところで localhost となっているが、 ここはサーバの FQDN に変更する。
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 -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/
sudo -u git -H mkdir public/uploads
sudo chmod -R u+rwX public/uploads
Unicorn の設定
Unicorn の設定ファイルをコピーして編集する。
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H editor config/unicorn.rb
Rack attack の設定をコピーする。
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
git ユーザの Git のグローバルな設定もしておく。
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
sudo -u git -H git config --global core.autocrlf input
データベースの設定をコピーして編集する。 ここでは PostgreSQL を使う。設定ファイルを見たが、私の場合は特に変える必要はなかった。
sudo -u git cp config/database.yml.postgresql config/database.yml
sudo -u git -H editor config/database.yml
今回はシステムにインストールされている ruby を使う。
gem のインストールとセットアップ
bundler を apt でインストールする。
apt-get install bundler
次のコマンドで gem をインストールする。 PostgreSQL を使うので mysql の gem はインストールする必要はない。
sudo -u git -H bundle install --deployment --without development test mysql aws
データベースの初期化を実行する。
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
を実行すると
Administrator account created:
と出て、メールアドレスとパスワードが表示されるのでとりあえずメモしておく。
Init Script のインストール
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
標準と異なるディレクトリに gitlab インストールした場合は これらのファイルの設定を変更しておく。
sudo update-rc.d gitlab defaults 21
logrotate の設定
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
これも標準と異なるディレクトリを使用している場合は設定を書きかえる。
gitlab instance の実行
sudo service gitlab start
assets のコンパイル
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
nginx の設定
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
/etc/nginx/sites-available/gitlab で環境に合わせて設定する。
git push できないトラブル
gitlab-shell の config.yml で
# Url to gitlab instance. Used for api calls. Should end with a slash.
gitlab_url: "http://localhost/"
の部分の URL をサーバの URL に書き換えたために git push などができなくなってはまった。 ここの部分は localhost のままにしておく。