シェアする

Git管理システム【GitLab】をRasbian + nginxなサーバに導入おまけに日本語化

シェアする

自分でGitを管理するとどうしてもGITHUBの様な管理画面が欲しい所です
そこでお勧めするのがGitLab
自分しか利用しないなら充分に利用出来る
一応公式では1coreで100user程の利用も耐えれるそうです

オープンソースで開発が行われており、Rasbianにも導入出来る
ここではRasbianで動作しているnginx上でGitLabを利用する方法を記載する
UbuntuCentosでは公式でパッケージが用意されているのでそちらを利用した方が早い1分とかからず導入出来るハズだ
今回はRaspberryPiのARMCPU向けにコンパイルしなければならないのでその手順を記載する

※Pi2には専用のインストールパッケージが公式で配布されているのでそちらをオススメ

※追記:日本語化の出来る 7-1にしているが英語でも構わない場合は7-6にすれば最新に出来る

※色々コンパイルするのでかなり時間がかかる OCしたラズパイで所要時間6~8時間位
半日かける覚悟でやって欲しい、コンパイル中等は他の作業(ラズパイは弄らない)をするとよいかも

⒈本体をDLし解凍する

#管理者になっておく
su
#いつもの
apt-get update -y
apt-get upgrade -y

#必要なパッケージを一括インストール
sudo apt-get install -y 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 python-docutils

#gitをインストールする、がこれでは最新版が入らない可能性があるので出来れば最新版を落として自前ビルドする 今回は省略
sudo apt-get install -y git-core

#git version確認 1.7.10.4以上入っているならとりあえずOK
git --version

#Postfixを入れねばならないそうなのでインストール
sudo apt-get install -y postfix

一段落 次にRubyをコンパイルしてインストールする

mkdir /tmp/ruby && cd /tmp/ruby
curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.1/ruby-2.1.2.tar.gz | tar xz
cd ruby-2.1.2
./configure --disable-install-rdoc
make
sudo make install
sudo gem install bundler --no-ri --no-rdoc

#versionチェック
ruby --version
#gitユーザ作成
sudo adduser --disabled-login --gecos 'GitLab' git
#PostgreSQLのセットアップ

# Install the database packages
sudo apt-get install -y postgresql-9.1 postgresql-client libpq-dev

# Login to PostgreSQL
sudo -u postgres psql -d template1

# Create a user for GitLab.
template1=# CREATE USER git CREATEDB;

# Create the GitLab production database & grant all privileges on database
template1=# CREATE DATABASE gitlabhq_production OWNER git;

# Quit the database session
template1=# q

# Try connecting to the new database with the new user
sudo -u git -H psql -d gitlabhq_production
#Gitlab 導入
#本家の支持通り行う

# We'll install GitLab into home directory of the user "git"
cd /home/git

# Clone GitLab repository
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-1-stable gitlab

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

sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml

# Make sure to change "localhost" to the fully-qualified domain name of your
# host serving GitLab where necessary
#
# If you want to use https make sure that you set `https` to `true`. See #using-https for all necessary details.
#
# If you installed Git from source, change the git bin_path to /usr/local/bin/git
sudo -u git -H editor 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
sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites

# Make sure GitLab can write to the tmp/pids/ and tmp/sockets/ directories
sudo chmod -R u+rwX tmp/pids/
sudo chmod -R u+rwX tmp/sockets/

# Make sure GitLab can write to the public/uploads/ directory
sudo chmod -R u+rwX  public/uploads

# Copy the example Unicorn config
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb

# Enable cluster mode if you expect to have a high load instance
# Ex. change amount of workers to 3 for 2GB RAM server

#ここで設定する訳だがラズパイで動作させるので以下の様にする
#worker_processes 1 # シングルコアなので 2 から 1 に変更
#timeout 120 # 30 から 120 に変更。30 では レスポンス 502 になることがある。
sudo -u git -H editor config/unicorn.rb

# Copy the example Rack attack config
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

#アバターを表示できるようにしておく
sudo vi config/environments/production.rb
config.serve_static_assets = true

# Configure Git global settings for git user, useful when editing via web
# Edit user.email according to what is set in gitlab.yml
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "example@example.com"
sudo -u git -H git config --global core.autocrlf input

続いてGitLabのDBを設定する

# PostgreSQL only:
sudo -u git cp config/database.yml.postgresql config/database.yml

# PostgreSQL and MySQL:
# Make config/database.yml readable to git only
sudo -u git -H chmod o-rwx config/database.yml

libv8を自前ビルドしてインストールする(ここでもかなり時間かかる)
一つ簡単なプロジェクトを作成する位の時間はある
尚【sudo gem install pkg/libv8-3.16.14.7-armv6l-linux.gem】のファイル名はその時によって異なる場合があるので実際のファイル名を確認する

sudo apt-get install -y subversion git-svn
[ -d ~/tmp ] || mkdir ~/tmp
cd ~/tmp
git clone https://github.com/cowboyd/libv8
cd libv8
bundle install
# be patient, the following command takes a while
#ここで大分時間がかかる 終了したら以下の様な出力が最後に出るので出来上がったファイル名を確認する
# File: libv8-3.16.14.7-armv6l-linux.gem
bundle exec rake clean build binary

#出来上がったファイル名に合わせ実行してインストールする
sudo gem install pkg/libv8-3.16.14.7-armv6l-linux.gem

次にgemfileから不要な行の削除を行う

cd /home/git/gitlab
sudo -u git -H editor Gemfile   # and remove the line: gem "therubyracer"

#gem "ttherubyracer"#この行を削除
sudo -u git -H editor Gemfile.lock  # and removed the following lines
    libv8 (3.16.14.3)
    therubyracer (0.12.0) #この行を削除
      libv8 (~> 3.16.14.0)
      ref

次にnode.jsをコンパイルする これも時間がかかる

# tested up to v0.10.24 
sudo curl -L https://raw.github.com/midnightcodr/rpi_node_install/master/setup.sh | sudo bash -s 0.10.24

そしてGemsのインストールを行う これもまた時間がかかる

cd /home/git/gitlab

# For PostgreSQL (note, the option says "without ... mysql")
sudo -u git -H bundle install --deployment --without development test mysql aws

GitLabShellのインストール

# Go to the GitLab installation folder:
cd /home/git/gitlab

# Run the installation task for gitlab-shell (replace `REDIS_URL` if needed):
sudo -u git -H bundle exec rake gitlab:shell:install[v1.9.6] REDIS_URL=redis://localhost:6379 RAILS_ENV=production

DBの初期化

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

# Type 'yes' to create the database tables.

# When done you see 'Administrator account created:'

ここで管理者アカウントが作成されたのを確認します
以下の様なメッセージが現れない場合何か間違えています。

Administrator account created:

login.........root
password......hogehogege

起動スクリプトの配置

sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab

起動時に自動起動するように設定

sudo update-rc.d gitlab defaults 21

ログローテーションを設定

sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

動作チェックを行う

sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
System information
System:         Debian 7.6
Current User:   git
Using RVM:      no
Ruby Version:   2.1.2p95
Gem Version:    2.2.2
Bundler Version:1.6.5
Rake Version:   10.3.2
Sidekiq Version:2.17.0

GitLab information
Version:        7.1.1
Revision:       facfec4
Directory:      /home/git/gitlab
DB Adapter:     postgresql
URL:            http://***.***.***
HTTP Clone URL: http://***.***.***/some-project.git
SSH Clone URL:  git@***.***.***:some-project.git
Using LDAP:     no
Using Omniauth: no

GitLab Shell
Version:        1.9.6
Repositories:   /home/git/repositories/
Hooks:          /home/git/gitlab-shell/hooks/
Git:            /usr/bin/git

プリコンパイルする

sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

Gitサービス起動 3分から5分程かかる

sudo service gitlab start
# or
sudo /etc/init.d/gitlab restart
#以下の内容が表示されればOK
GitLab and all its components are up and running.

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
#ドメイン名の変更等をする
#同じドメイン名で親ディレクトリにWordpress /gitにgitlabの様な設定は非推奨です
#ローカルのみで利用する場合はlisten 80; ドメイン名をラズパイのIPにすることで
#既存のWEBを壊さず配置出来ます
#公開する場合は別のドメイン名を利用して下さい。
# Change YOUR_SERVER_FQDN to the fully-qualified
# domain name of your host serving GitLab.
sudo vim /etc/nginx/sites-available/gitlab

出来たら再起動

sudo service nginx restart

診断テストが備わっているので行います

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
Checking Environment ...

Git configured for git user? ... yes

Checking Environment ... Finished

Checking GitLab Shell ...

GitLab Shell version >= 1.9.6 ? ... OK (1.9.6)
Repo base directory exists? ... yes
Repo base directory is a symlink? ... no
Repo base owned by git:git? ... yes
Repo base access is drwxrws---? ... yes
Satellites access is drwxr-x---? ... yes
update hook up-to-date? ... yes
update hooks in repos are links: ... can't check, you have no projects
Running /home/git/gitlab-shell/bin/check
Check GitLab API access: OK
Check directories and files:
        /home/git/repositories/: OK
        /home/git/.ssh/authorized_keys: OK
Test redis-cli executable: redis-cli 2.4.14
Send ping to redis server: PONG
gitlab-shell self-check successful

Checking GitLab Shell ... Finished

Checking Sidekiq ...

Running? ... yes
Number of Sidekiq processes ... 1

Checking Sidekiq ... Finished

Checking LDAP ...

LDAP is disabled in config/gitlab.yml

Checking LDAP ... Finished

Checking GitLab ...

Database config exists? ... yes
Database is SQLite ... no
All migrations up? ... yes
Database contains orphaned UsersGroups? ... no
GitLab config exists? ... yes
GitLab config outdated? ... no
Log directory writable? ... yes
Tmp directory writable? ... yes
Init script exists? ... yes
Init script up-to-date? ... yes
projects have namespace: ... can't check, you have no projects
Projects have satellites? ... can't check, you have no projects
Redis version >= 2.0.0? ... yes
Your git bin path is "/usr/bin/git"
Git version >= 1.7.10 ? ... yes (1.7.10)

Checking GitLab ... Finished

おめでとう!上記の様になればOK実際にブラウザでアクセスしてパスワードの変更等を行いましょう

#初期ユーザ
root
5iveL!fe

もしログインできない場合はDBの初期化が出来ていなかったりする、エラーを確認して対処しよう

おまけ:日本語化

sudo service gitlab stop
cd ~/
wget https://raw.githubusercontent.com/ksoichiro/gitlab-i18n-patch/master/patches/v7.1.0/app_ja.patch

cd /home/git/gitlab
rm -rf public/assets
patch -p1 < ~/app_ja.patch
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

sudo service gitlab start

キャプチャ

以上でラズパイ+nginx+Gitlab おまけで日本語化終了ですお疲れ様でした
余談だがGitLabはiPhone用のAPPもリリースしており、iPhoneからの利用も出来る

GitLabControl

スポンサーリンク

シェアする

フォローする

スポンサーリンク