LoginSignup
2
3

More than 5 years have passed since last update.

GitLab CEをWindows Subsystem for Linuxで開発したかった

Last updated at Posted at 2018-02-18

Ruby on Railsの開発をする上でGitLabの中身がどうなっているのか色々気になったので、開発環境を構築してみることにしました。

環境

  • Windows 10 Pro Insider Preview 10.0.17074

GitLab Development Kit構築

予めGitLab.comでGitLab Community Editionをforkしておきます。
GitLab Development Kitを使って、このforkしたリポジトリを動かします。

公式ドキュメントのprepare.mdset-up-gdk.mdを読めばだいたい分かりますが、細かい所を今回の環境にあわせて変えていきます。

Rubyのインストール

ドキュメントではRVM: Ruby Version Managerを使っていますが、ここではrbenvを使って環境構築をします。
またapt-getで降ってくるrbenv/ruby-buildは古いので、git cloneして使うことでRuby 2.3.6が使えるようになります。

$ sudo apt-get update
$ sudo apt-get install rbenv
$ mkdir -p "$(rbenv root)"/plugins
$ git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
$ rbenv install 2.3.6
$ rbenv local 2.3.6

Node.jsのインストール

tj/n: Node version managementを使って最新版をインストールします。

$ sudo apt-get install nodejs
$ npm install -g n
$ n latest

Go言語のインストール

こちらもapt-getで降ってくるバージョンは古いので、最新のバージョンを入れます

$ sudo add-apt-repository ppa:gophers/archive
$ sudo apt-get install golang-1.9-go
$ echo 'export PATH=$PATH:/usr/lib/go-1.9/bin' >> ~/.bash_profile
$ source ~/.bash_profile

他のパッケージ

Yarnをインストールします。

$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get update && sudo apt-get install yarn

あとはExperimental Windows 10 using the WSL (Windows Subsystem for Linux)にあるパッケージをapt-getで引っ張ってきます。

$ sudo apt-get install ruby-dev
$ sudo apt-get install git postgresql postgresql-contrib libpq-dev redis-server libicu-dev cmake g++ libkrb5-dev libre2-dev ed pkg-config

PostgreSQLの起動

postgresユーザを作成して、接続できるようにします。

$ sudo service postgresql start
$ sudo passwd postgres
$ su - postgres
$ psql
postgres=# alter role postgres with password 'superstrongpassword';

接続できるか確認します。

$ psql -h localhost -U postgres

接続できたら、database.ymlも設定変更します。

gitlab/config/database.yml
development:
  adapter: postgresql
  encoding: unicode
  database: gitlabhq_development
  host: localhost
  username: postgres
  password: superstrongpassword
  port: 5432
  pool: 6

redisの起動

Unixドメインソケット経由で接続できるよう設定する必要があります。
が、Windows側とWSL側をまたぐせいなのかうまく行かず、下記の変更をする必要がありました。

/etc/redis/redis.confに以下の設定を記述します。

/etc/redis/redis.conf
unixsocket /var/run/redis/redis.sock
unixsocketperm 777

redisを再起動します。

$ sudo service redis-server restart

このsocketファイルを読み込むために、とりあえずlib/gdk.rbを下記のように変更します。

lib/gdk.rb
diff --git a/lib/gdk.rb b/lib/gdk.rb
index 9e67d19..d9c159b 100644
--- a/lib/gdk.rb
+++ b/lib/gdk.rb
@@ -69,7 +69,7 @@ module GDK
     when 'psql'
       exec('psql', '-h', File.join($gdk_root, 'postgresql'), '-p', pg_port.to_s, *ARGV, chdir: $gdk_root)
     when 'redis-cli'
-      exec('redis-cli', '-s', File.join($gdk_root, 'redis/redis.socket'), *ARGV, chdir: $gdk_root)
+      exec('redis-cli', '-s', '/var/run/redis/redis.sock', *ARGV, chdir: $gdk_root)
     when 'help'
       puts File.read(File.join($gdk_root, 'HELP'))
       true

また、後のコマンドで生成されるredis.conf, resque.ymlも、こちらのパスに書き換える必要があります。

gitlab/config/resque.yml
development: unix:/var/run/redis/redis.sock
test: unix:/var/run/redis/redis.sock
redis/redis.conf
port 0
unixsocket /var/run/redis/redis.sock
gitlab-workhorse/config.toml
[redis]
URL = "unix:///var/run/redis/redis.sock"

設定がうまく行っているかどうかは$ gdk redis-cliで接続検証ができます。

$ gdk redis-cli
> ping
PONG

GitLab CE 構築

$ gem install gitlab-development-kit
$ gdk init
$ cd gitlab-development-kit
$ gdk install gitlab_repo={{forkしたリポジトリのURL}

$ gdk install にて、おなじみgit cloneyarn installbundle installなどが走ります。
これがとても長く、たまに途中で失敗します。エラーに再現性は無く、めげずに何回かやると成功しました。

なお本当はbundlerを使って以下のように構築したかったのですが、gdk installがうまく行きませんでした。gdk内でもbundlerを使っているためpathの解決とかそのあたりが難しいんだと思いますが、詳しくは調べていません。

$ bundle init
$ echo 'gem "gitlab-development-kit"' >> Gemfile
$ bundle install --path vendor/bundle
$ bundle exec gdk init
$ cd gitlab-development-kit
$ bundle exec gdk install gitlab_repo={{forkしたリポジトリのURL}

設定ファイル変更

gitlab.socketファイルをWSL側に作成するようにします。redisの時と同様です。

$ sudo mkdir /var/run/gitlab/
$ sudo chmod 777 /var/run/gitlab/
gitlab/lib/support/init.d/gitlab
rails_socket="/var/run/gitlab/gitlab.socket"
gitlab/config/unicorn.rb
listen '/var/run/gitlab/gitlab.socket'

起動

これでインストールは完了しました。

$ gdk run

上記コマンドでforemanによるサーバは起動はするのですが、まだ http://localhost:3000 にアクセスしても画面は映りませんでした...

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3