2012年 6月 27(水曜日)
NetBSD 6.0BETA2でgitlabを動かしてみた(前編)
必要なものが多くて難航しましたがようやくNetBSD 6.0 BETA2上でgitlabが動くようになりました。
環境
今回はNetBSDのpkgはpkginでインストールすることにします。
まずはpkginの導入です。bootstrapコマンドで導入できます。
必要なパッケージ類をインストールします。
redisも必要ですがNetBSDのpkgが存在しないので別途インストールします。NetBSDでredisを動かした参照。
libexecinfoが必要なためインストールします。
gitlab用にgitoliteの設定ファイル/usr/pkg/share/gitolite/conf/example.gitolite.rcを編集します。
git, gitlabアカウントを作成してgitoliteのセットアップをします。
gitlabのソースコードを取得します。
設定ファイルを作成します。データベースはsqliteにします。
次にbundle installを行います。本来はgitlabユーザのままbundle installを行い、必要なgemはvendor/bundle以下にインストールされます。
NetBSDではeventmachine等のインストールが失敗するためシステム(gem)の正規の場所にインストールすることにします。そのためrootユーザで作業を続けます。
またgemパッケージの中にはNetBSDのmakeではうまくいかないものがあるので、一時的にgmakeをmakeとします。
therubyracerのインストール時に以下のメッセージを出して失敗してしまいます。
libv8が正しくインストールされていないためなのでlibv8に直接変更を加えます。
差分はlibv8-netbsd.patch
sconsでエラーがでなければok。
再びbundle installを実行します。
ちなみに、通常のgemは/usr/pkg/lib/ruby/gems/1.9.3/gemsにインストールされますが、grit等Gemfileでgit指定されているものは/usr/pkg/lib/ruby/gems/1.9.3/bundler/gemsにインストールされるようです。そのためgem listコマンドでは表示されません。
ここまでで必要なruby gemパッケージのインストールは完了です。
rootユーザで.bundleディレクトリが生成されてしまうのでユーザを変更します。
次にgit関連で少々準備してrake gitlab:app:setupを実行します。setup実行時にlogin IDとパスワードが表示されるのでメモします。
railsを起動します。
起動したら、ブラウザで3000番ポートにアクセスします。http://SERVERNAME:3000/
メモしたID/passwordでloginします。
Usersで新規ユーザを作成しAdministrator権限を与えます。
logoutして、生成したユーザでloginしなおした後、元のAdministratorユーザは削除しておきます。
次回はnginx+unicornを使って動作させるところまでの設定を書く予定です。
- Hardware: amazon ec2 (t1.micro)
- Memory: 613MB
- DomU: NetBSD 6.0 BETA2
- ruby: 1.9.3
今回はNetBSDのpkgはpkginでインストールすることにします。
まずはpkginの導入です。bootstrapコマンドで導入できます。
# /usr/bootstrap.sh binpkg
必要なパッケージ類をインストールします。
# pkgin install ruby193-posix-spawn ruby193-eventmachine ruby193-nokogiri ruby193-bundler
# pkgin install py27-pygments
# pkgin install gmake icu wget scons gitolite mysql-client-5.5.24 mysql-server-5.5.24
# pkgin install pkg_alternatives
# pkgin install mozilla-rootcerts
# cd /etc/openssl/certs
# mozilla-rootcerts extract
# mozilla-rootcerts rehash
redisも必要ですがNetBSDのpkgが存在しないので別途インストールします。NetBSDでredisを動かした参照。
libexecinfoが必要なためインストールします。
$ wget http://www.netbsd.org/~christos/libexecinfo.tar.gz
$ tar zxvf libexecinfo.tar.gz
$ cd libexecinfo
$ make
$ su
# make install
# cp -p execinfo.h /usr/include/
gitlab用にgitoliteの設定ファイル/usr/pkg/share/gitolite/conf/example.gitolite.rcを編集します。
git, gitlabアカウントを作成してgitoliteのセットアップをします。
# groupadd git
# useradd -d /store/home/git -m -g git git
# useradd -d /store/home/gitlab -m -g git gitlab
# su - gitlab
gitlab$ ssh-keygen -q -N '' -t rsa -f ~/.ssh/id_rsa
gitlab$ exit
# cp /store/home/gitlab/.ssh/id_rsa.pub /store/home/git/gitlab_rsa.pub
# chown git /store/home/git/gitlab_rsa.pub
# su - git
git$ gl-setup gitlab_rsa.pub
gitlabのソースコードを取得します。
# su - gitlab
gitlab$ git clone -b stable https://github.com/gitlabhq/gitlabhq.git gitlab
gitlab$ exit
設定ファイルを作成します。データベースはsqliteにします。
gitlab$ cd ~/gitlab
gitlab$ cp config/database.yml.sqlite config/database.yml
gitlab$ cp config/gitlab.yml.example config/gitlab.yml
gitlab$ vi config/gitlab.yml
次にbundle installを行います。本来はgitlabユーザのままbundle installを行い、必要なgemはvendor/bundle以下にインストールされます。
NetBSDではeventmachine等のインストールが失敗するためシステム(gem)の正規の場所にインストールすることにします。そのためrootユーザで作業を続けます。
またgemパッケージの中にはNetBSDのmakeではうまくいかないものがあるので、一時的にgmakeをmakeとします。
# mkdir /tmp/bin
# ln -s /usr/pkg/bin/gmake /tmp/bin/make
# PATH=/tmp/bin:$PATH
# cd ~gitlab/gitlab
# bundle install --without development test
therubyracerのインストール時に以下のメッセージを出して失敗してしまいます。
.
.
linking shared-object v8.so
c++: /usr/pkg/lib/ruby/gems/1.9.3/gems/libv8-3.3.10.4/lib/libv8/build/v8/libv8.a: No such file or directory
make: *** [v8.so] Error 1
Gem files will remain installed in /usr/pkg/lib/ruby/gems/1.9.3/gems/therubyracer-0.10.1 for inspection.
Results logged to /usr/pkg/lib/ruby/gems/1.9.3/gems/therubyracer-0.10.1/ext/v8/gem_make.out
An error occured while installing therubyracer (0.10.1), and Bundler cannot continue.
Make sure that `gem install therubyracer -v '0.10.1'` succeeds before bundling.
libv8が正しくインストールされていないためなのでlibv8に直接変更を加えます。
差分はlibv8-netbsd.patch
# cd /usr/pkg/lib/ruby/gems/1.9.3/gems/libv8-3.3.10.4/lib/libv8/build/v8
# patch -s -p1 < /tmp/libv8-netbsd.patch
# scons arch=x64
sconsでエラーがでなければok。
再びbundle installを実行します。
# cd ~gitlab/gitlab
# bundle install --without development test
.
.
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
ちなみに、通常のgemは/usr/pkg/lib/ruby/gems/1.9.3/gemsにインストールされますが、grit等Gemfileでgit指定されているものは/usr/pkg/lib/ruby/gems/1.9.3/bundler/gemsにインストールされるようです。そのためgem listコマンドでは表示されません。
ここまでで必要なruby gemパッケージのインストールは完了です。
rootユーザで.bundleディレクトリが生成されてしまうのでユーザを変更します。
# chown -R gitlab:git .bundle
次にgit関連で少々準備してrake gitlab:app:setupを実行します。setup実行時にlogin IDとパスワードが表示されるのでメモします。
gitlab$ cd ~/gitlab
gitlab$ mkdir tmp
gitlab$ git config --global user.email gitlab@example.com
gitlab$ git config --global user.name gitlab
gitlab$ bundle exec rake gitlab:app:setup RAILS_ENV=production
(中略)
Administrator account created:
login.........xxxx@xxxxx.xxxx
password......xxxxxxxx
remote: Counting objects: 22, done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 22 (delta 3), reused 0 (delta 0)
Receiving objects: 100% (22/22), done.
Resolving deltas: 100% (3/3), done.
Everything up-to-date
Done!
gitlab$ bundle exec rake gitlab:app:status RAILS_ENV=production
Starting diagnostic
config/database.yml............exists
config/gitlab.yml............exists
/home/git/repositories/............exists
/home/git/repositories/ is writable?............YES
remote: Counting objects: 22, done.
remote: Compressing objects: 100% (16/16), done.
Receiving objects: 100% (22/22), 2.29 KiB, done.
Resolving deltas: 100% (3/3), done.
remote: Total 22 (delta 3), reused 0 (delta 0)
Can clone gitolite-admin?............YES
UMASK for .gitolite.rc is 0007? ............YES
Finished
railsを起動します。
gitlab$ bundle exec rails s -e production
起動したら、ブラウザで3000番ポートにアクセスします。http://SERVERNAME:3000/
メモしたID/passwordでloginします。
Usersで新規ユーザを作成しAdministrator権限を与えます。
logoutして、生成したユーザでloginしなおした後、元のAdministratorユーザは削除しておきます。
次回はnginx+unicornを使って動作させるところまでの設定を書く予定です。
投稿者 Hideki ONO
at
16:57
トラックバック
このエントリーのトラックバック URI を指定する