[[どぶお/開発しよう!]]
#floatcontents
* GitLab 5.1.0をRVM環境でインストールする -- Vine 6.1 [#nc402373]
* GitLab 5.1.0をRVM環境で構築する -- Vine 6.1 [#nc402373]
#anno1(2013-05-14 : 作成)
** 概要 [#ad82a96c]
~以前からGitLab 2.1.0を使っていましたが、久しぶりに最新版にしようとしたらいつの間にか5.1.0まで進んでいました。HTTP(S)によるアクセスにも標準で対応しているので、これだけでSSHおよびHTTP(S)が使えるようになっているみたいです。
~公式サイトのインストールドキュメントによると、過去とは手順も全く違うようだったので、まっさらな状態からインストールしてみたので記録しておきます。2.1.0と比べるとgitoliteのインストールが不要になったり、Apacheと使う場合にpassengerを使わずにリバースプロキシを使うようになったなどの変更が見受けられました。手順はだいぶスッキリしましたが、相変わらず敷居は高いと思います。Linuxによるサーバ管理の基礎知識ぐらいは必要かもしれません。
~大まかな流れは以下のようになります。
+ 前提条件の準備
++ aptによる必要なプログラムのインストール
++ Vine 6で不足しているredisパッケージのインストール(作成)
++ Gitのバージョンアップ(1.7.12.4)
+ GitLabと依存プログラムのインストール
++ GitLab実行ユーザー(git)の作成
++ RVM環境の構築(Ruby 1.9.3のインストール)
++ GitLab Shellのインストール
++ データベースの作成(PostgreSQL)
++ GitLabのインストールとセットアップ
++ 初期化スクリプトの設定
~なお、使用環境はVine Linux 6.1で、RVM(Ruby Version Manager)環境を用いて構築します。設定が少し増えますがVirtualHostを使うことでGitLab 2.1との共存も可能です。
** 前提条件の準備 [#je6a1e1c]
ビルドに必要なライブラリなどをインストールします。ほとんどはaptでインストール可能ですが、redis-serverおよびgitは別途インストールが必要です。
*** aptによる必要なプログラムのインストール [#j515131b]
自動解決されるためインストールする順番は特にありませんが、これらをすべてインストールします。
# apt-get install build-essential zlib-devel libyaml-devel openssl-devel gdbm-devel \
readline-devel ncurses-devel libffi-devel sqlite3-devel libxml2-devel libxslt-devel
# apt-get install libicu-devel
# apt-get install postgresql-server postgresql-devel
libicu-develはRubyモジュールのcharlock_holmesのインストールに必要です。
*** RedisおよびGitのインストール [#l6896e6e]
~セッション管理などに使用されるRedisサーバはVineの標準リポジトリに収録されていないので手動でインストールします。また、Vine6のGitは1.7.4ですが、GitLabに使うには古いので最新版である1.8.2.3にアップグレードします(1.7系の最新版である1.7.12.4でも動作しましたが、日常的なコマンドとして使用する際にgit clone https://〜で通信できなかったので、1.8のほうが良さそうです)。
~以下のページからダウンロードしてインストールします。
- [[Vine6 RPMパッケージ/git 1.7.12.4-1vl6]] -- 1.8.2.3は近々アップ予定
- [[Vine6 RPMパッケージ/redis 2.4.6-1vl6]]
# apt-get install perl-Git-1.7.12.4-1vl6.x86_64.rpm git-1.7.12.4-1vl6.x86_64.rpm
# apt-get install redis-2.4.6-1vl6.x86_64.rpm
*** Pythonの別名シンボリックリンクをはる [#ka999d17]
/usr/bin/pythonに対してpython2という名前のシンボリックリンクを作成します。これはファイル内容を表示する際に使用されるため、リンクしないとInternal server errorが出ます。
# cd /usr/bin
# ln -s python python2
** GitLabのインストール [#t7e42619]
*** 実行ユーザーの作成 [#l727dac7]
GitLabを実行するユーザーgitを作成します。ホームディレクトリは/home/gitにします。公式ドキュメントではnologin設定で作るように書いてありますが、初期設定を行いやすくするためログイン可能とします。
# groupadd -g 600 git <-- GID:600で作成
# useradd -m -g 600 -u 600 git <-- UID:600で作成
# passwd git <-- シェルで作業するのでパスワードを設定しておく
# su - git <-- ユーザー'''git'''で作業
% git config --global user.name "GitLab"
% git config --global user.email "git@localhost"
user.nameとuser.emailを設定しておかないとGitLabでの動作の時にエラーが発生します。~
以降、インストールはユーザー'''git'''で行います。
*** RVM環境の構築 [#m74fdfbd]
~GitLabはRuby 1.9.2以降が必要なので、異なるバージョンのRubyを使用するためのRVM環境を構築します。この環境で使用することでRubyのモジュール等をシステムにインストールすることなく、ホームディレクトリだけで完結させることができます。この作業はユーザー'''git'''で行います。
~cURLでファイルを取得する際に証明書のエラーが出るので、insecureを.curlrcに書き込んでから作業を行います。作業が終わったらinsecureを解除してください。なお、Ruby 1.9のインストールはビルドが行われるため10分ほど時間がかかります。
$ cd /home/git
$ echo insecure >> ~/.curlrc
$ \curl -L https://get.rvm.io | bash -s stable
$ rvm install 1.9 <-- 1.9系の最新が入る(2013年5月14日の時点では1.9.3p392)
$ rvm use 1.9 <-- インストールした1.9系を選択
$ gem install bundler
$ gem install charlock_holmes --version '0.6.9.4'
*** GitLab Shellのインストール [#m0713068]
~GitLab ShellはGitLab用のSSHアクセスおよびリポジトリ管理用プログラムだそうです。
$ cd /home/git
$ git clone https://github.com/gitlabhq/gitlab-shell.git
$ cd gitlab-shell
$ git checkout v1.3.0
$ cp config.yml.example config.yml
設定ファイルconfig.ymlをエディタで開いてgitlab_urlの値を修正します。
# Url to gitlab instance. Used for api calls. Should be ends with slash.
&color(red){''gitlab_url: "http://gitlab.example.co.jp/" <-- 適切なURLにします''};
修正後インストールします。
$ ./bin/install
この時、リポジトリ用の/home/git/repositoriesディレクトリが作成されます。
*** データベースの作成 [#e023ce23]
GitLabで使用するデータベースを作成します。ここではPostgreSQLを使いましたが、MySQLも使えます(公式ドキュメント参照)。
# service postgresql start
$ psql -U postgres
psql> CREATE USER git WITH PASSWORD '$password';
psql> CREATE DATABASE gitlabhq_production OWNER git;
psql> \q
ここの''$password''は使用するパスワードを指定してください。GitLab設定の際に必要になるので忘れないようにしてください。以下のコマンドで開けるかどうかを確認してください。抜けるときは''\q''です。
$ psql -d gitlabhq_production
*** GitLabのインストール [#c380f373]
GitLabを取得し、必要な手順を行います。これもすべてユーザー'''git'''で行います。
$ cd /home/git
$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab
$ cd gitlab
$ git checkout 5-1-stable <-- 5.1.0をチェックアウトします
$ cp config/gitlab.yml.example config/gitlab.yml
config/gitlab.ymlの編集
$ mkdir /home/git/gitlab-satellites
$ mkdir tmp/pids
$ mkdir tmp/sockets
$ mkdir public/uploads
$ cp config/puma.rb.example config/puma.rb
$ cp config/database.yml.postgresql config/database.yml
$ bundle install --deployment --without development test mysql
:config/puma.rbの修正|
Apacheで使うために、pumaのバインド先をlocalhostのTCPポートにします。
61: bind 'tcp://127.0.0.1:9292' <-- localのみ
62: #bind "unix://#{application_path}/tmp/sockets/gitlab.socket" <-- コメントアウト
:config/database.ymlの修正|
ユーザー名とパスワードを適切に指定します。
*** GitLabのセットアップと初期化スクリプト [#h0147924]
:GitLabのデータベースの初期化|
この段階でRedisを起動します。
# service redis start
$ cd /home/git/gitlab
$ bundle exec rake gitlab:setup RAILS_ENV=production
:ユーザー'''git'''の設定|
初期化スクリプトでのsudoおよびSSHでのpushに対応するために.bashrcにRVMの設定を書き込みます。インストール時に自動でPATHの設定は追加されますがsource設定が書き込まれないので末尾に追加します。
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting <-- 自動で追加されている
&color(red){[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"}; <-- 追加
:初期化スクリプトの設定|
初期化スクリプトをインストールします。この作業はrootで行います。
# curl --output /etc/init.d/gitlab https://raw.github.com/gitlabhq/gitlabhq/master/lib/support/init.d/gitlab
# chmod +x /etc/init.d/gitlab
chkconfigで登録できるように/etc/init.d/gitlabの内容を修正します。
3: # GITLAB
4: # Maintainer: @randx
5: # App Version: 5.1
6: &color(red){# chkconfig: 2345 21 80}; <-- 追加
7: &color(red){# description: GitLab git repository management}; <-- 追加
chkconfigに登録します。
# chkconfig --add gitlab
*** Apacheの設定 [#a7f001f4]
Apacheの詳細な設定については述べません。最低限の設定は以下になります。
:/etc/apache2/conf.d/gitlab.conf|
ProxyPass / http://127.0.0.1:9292/
ProxyPassReverse / http://127.0.0.1:9292/
ProxyPreserveHost On
このように設定すればhttp://gitlab.example.co.jp/という感じでGitLabにアクセスできるはずです。~
なお、HTTPSを使う場合は、VirtualHostの中に以下の行を追加します。
RequestHeader set X-Forwarded-Proto "https"
このパラメータがないとページ遷移の際にHTTPに飛ばされてしまうことがあります。
*** chkconfigの設定 [#tefe607a]
必要に応じて設定します。
# chkconfig postgresql on
# chkconfig redis on
# chkconfig gitlab on
# chkconfig apache2 on
お疲れ様でした。これで(たぶん)使えるはずです!~
問題はRVM周りで起こりやすいので、エラーが発生した場合はRVMの内容を調べてみてください。
* トラブルシューティング [#p19f53a8]
とりあえず気づいたことをメモしておきます。
** SSHでpushできない [#m4fddc2b]
:問題|
SSH経由でpushするときに以下のエラーが出ました。
[dobuo@localhost exam]$ git push git@192.168.0.201:dobuo/exam.git
Enter passphrase for key '/home/dobuo/.ssh/id_rsa':
&color(red){/home/git/gitlab-shell/bin/gitlab-shell:8: undefined method `require_relative' for main:Object (NoMethodError)};
&color(red){fatal: Could not read from remote repository.};
Please make sure you have the correct access rights
and the repository exists.
:原因|
これはRubyのバージョンが1.9.2以上になっていないことが原因で、RVMを使って構築した時に起こるようです。私の環境では標準のRuby(aptでインストールされるRuby)は1.8のためエラーが出るようです。なお、標準のRubyをインストールしていない場合はうまくいくため、パスの順序を変えれば解決できるようです。
:解法|
[[ユーザー'''git'''の設定>#h0147924]]のように修正します。別の方法としてPATHの設定を以下のようにしても解決しました。
PATH=$HOME/.rvm/bin:$PATH <-- 標準パスよりも$HOME/.rvm/binを先にする
状況に合わせて対応してください。
** ファイル内容が表示されない [#z4579e40]
:問題|
ファイル内容を表示させた時何も表示されない。production.logを見ると以下のメッセージが出力されている。
Started GET "/dobuo/chocolat-wiki/blob/master/code/myrpc.js?_=1368612329078" for 192.168.155.109 at 2013-05-15 19:05:32 +0900
&color(red){''Processing by BlobController#show as JS <-- この行がポイント''};
Parameters: {"_"=>"1368612329078", "project_id"=>"dobuo/myrpc", "id"=>"master/code/myrpc.js"}
Rendered blob/_actions.html.haml (36.1ms)
Rendered blob/_text.html.haml (292.4ms)
Rendered blob/_blob.html.haml (339.9ms)
Rendered blob/show.js.haml (343.3ms)
Completed 500 Internal Server Error in 488ms
ActionView::Template::Error (EPIPE):
9: .file_content.code
10: - unless blob.empty?
11: %div{class: user_color_scheme_class}
12: = raw blob.colorize(formatter: :gitlab)
13: - else
14: %p.nothing_here_message Empty file
app/views/blob/_text.html.haml:12:in `_app_views_blob__text_html_haml___691087839_78158170'
app/views/blob/_blob.html.haml:23:in `_app_views_blob__blob_html_haml___344748651_79771910'
app/views/blob/show.js.haml:3:in `_app_views_blob_show_js_haml__1016274567_81034620'
:原因|
コードのシンタックスハイライトをPythonで処理しているようで、そのため/usr/bin/python2が存在しないとレンダリングされないようです。赤字の部分のように''#show as '''書式'''''が判断のポイントかも。そのため''show as HTML''などの場合もあるようです。
:解法|
/usr/bin/pythonに/usr/bin/python2という名前でリンクを張ります。[[上記>#ka999d17]]参照。
----
コメントなどありましたらどうぞ。
#comment