2022年3月29日火曜日

Gitlab 14.9 をソースコードからインストールしてみた

Gitlab 14.9 をソースコードからインストールしてみた

概要

過去に11.8をソースコードからインストールしました
今回は最新版のGitlab14.9をソースコードからインストールしてみました

以下は主に root ユーザで作業を進めます

環境

  • Ubuntu 18.04
  • Gitlab 14-9-ee branch
  • Ruby 2.7.4
  • Go 1.16.10
  • Nodejs 12.22.11
    • yarn 1.22.18
  • Postgres 10.19
  • Redis 4.0.9
  • git 2.33.1.gl3

依存パッケージのインストール

  • apt -y update
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libre2-dev \
  libreadline-dev libncurses5-dev libffi-dev curl openssh-server libxml2-dev libxslt-dev \
  libcurl4-openssl-dev libicu-dev logrotate rsync python-docutils pkg-config cmake runit-systemd

git の最新版をインストール

  • sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev libpcre2-dev build-essential git-core
  • git clone https://gitlab.com/gitlab-org/gitaly.git -b 14-9-stable /tmp/gitaly
  • cd /tmp/gitaly
  • sudo make git GIT_PREFIX=/usr/local
  • sudo apt remove -y git-core
  • sudo apt autoremove

一度ログアウトして git --version でバージョンが表示されれば OK です

GraphicsMagick のインストール

  • sudo apt-get install -y graphicsmagick

Postfix のインストール

  • sudo apt-get install -y postfix

host 名は DNS に設定する A レコードの値を入力します

Exiftool のインストール

  • sudo apt-get install -y libimage-exiftool-perl

Ruby のインストール

  • mkdir /tmp/ruby && cd /tmp/ruby
  • curl --remote-name --location --progress-bar "https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.tar.gz"
  • echo '3043099089608859fc8cce7f9fdccaa1f53a462457e3838ec3b25a7d609fbc5b ruby-2.7.4.tar.gz' | sha256sum -c - && tar xzf ruby-2.7.4.tar.gz
  • cd ruby-2.7.4
  • ./configure --disable-install-rdoc --enable-shared
  • make
  • sudo make install

一度ログアウトして ruby -v でバージョンが表示されれば OK です

Go のインストール

  • sudo rm -rf /usr/local/go
  • curl --remote-name --location --progress-bar "https://go.dev/dl/go1.16.10.linux-amd64.tar.gz"
  • echo '414cd18ce1d193769b9e97d2401ad718755ab47816e13b2a1cde203d263b55cf go1.16.10.linux-amd64.tar.gz' | shasum -a256 -c - && \ sudo tar -C /usr/local -xzf go1.16.10.linux-amd64.tar.gz
  • sudo ln -sf /usr/local/go/bin/{go,gofmt} /usr/local/bin/
  • rm go1.16.10.linux-amd64.tar.gz

一度ログアウトして go version でバージョンが表示されれば OK です

Nodejs と yarn のインストール

  • curl --location "https://deb.nodesource.com/setup_14.x" | sudo bash -
  • sudo apt-get install -y nodejs
  • npm install --global yarn

node -vyarn -v でバージョンが表示されれば OK です

git ユーザの作成

  • sudo adduser --disabled-login --gecos 'GitLab' git
  • usermod -aG sudo git
  • passwd git

Postgres のインストールと設定

  • wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  • sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
  • sudo apt update
  • sudo apt -y install postgresql-12 postgresql-client-12 libpq-dev
  • sudo -u postgres psql -d template1 -c "CREATE USER git CREATEDB;"
  • sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
  • sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS btree_gist;"
  • sudo -u postgres psql -d template1 -c "CREATE DATABASE gitlabhq_production OWNER git;"
  • sudo -u git -H psql -d gitlabhq_production

SQL プロンプトになったら pg_trgm エクステンションが有効になっているか確認します

  • SELECT true AS enabled FROM pg_available_extensions WHERE name = 'pg_trgm' AND installed_version IS NOT NULL;
  • SELECT true AS enabled FROM pg_available_extensions WHERE name = 'btree_gist' AND installed_version IS NOT NULL;

Redis のインストール

  • sudo apt-get install redis-server
  • sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.orig
  • sudo sed 's/^port .*/port 0/' /etc/redis/redis.conf.orig | sudo tee /etc/redis/redis.conf
  • echo 'unixsocket /var/run/redis/redis.sock' | sudo tee -a /etc/redis/redis.conf
  • echo 'unixsocketperm 770' | sudo tee -a /etc/redis/redis.conf
  • sudo usermod -aG redis git
  • sudo sed -i -e 's/^daemonize yes$/daemonize no/' -e 's/^supervised no$/supervised systemd/' -e 's/^pidfile/# pidfile/' /etc/redis/redis.conf
  • sudo chown redis:redis /etc/redis/redis.conf
  • sudo mkdir -p /etc/systemd/system/redis-server.service.d
sudo tee /etc/systemd/system/redis-server.service.d/10fix_type.conf <<EOF
[Service]
Type=notify
PIDFile=
EOF
  • sudo systemctl daemon-reload
  • sudo systemctl restart redis-server.service

Gitlab インストールと設定

  • cd /home/git
  • sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab.git -b 14-9-stable-ee gitlab
  • cd /home/git/gitlab
  • sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
  • sudo -u git -H editor config/gitlab.yml
production: &base
  git:
    bin_path: /usr/local/bin/git
  • sudo -u git -H cp config/secrets.yml.example config/secrets.yml
  • sudo -u git -H chmod 0600 config/secrets.yml
  • sudo chown -R git log/
  • sudo chown -R git tmp/
  • sudo chmod -R u+rwX,go-w log/
  • sudo chmod -R u+rwX tmp/
  • sudo chmod -R u+rwX tmp/pids/
  • sudo chmod -R u+rwX tmp/sockets/
  • sudo -u git -H mkdir -p public/uploads/
  • sudo chmod 0700 public/uploads
  • sudo chmod -R u+rwX builds/
  • sudo chmod -R u+rwX shared/artifacts/
  • sudo chmod -R ug+rwX shared/pages/
  • sudo -u git -H cp config/puma.rb.example config/puma.rb
  • sudo -u git -H git config --global gc.auto 0
  • sudo -u git -H git config --global repack.writeBitmaps true
  • sudo -u git -H git config --global receive.advertisePushOptions true
  • sudo -u git -H git config --global core.fsyncObjectFiles true
  • sudo -u git -H cp config/resque.yml.example config/resque.yml
  • sudo -u git -H cp config/cable.yml.example config/cable.yml

DB の設定

  • sudo -u git cp config/database.yml.postgresql config/database.yml
  • sudo -u git -H chmod o-rwx config/database.yml
  • sudo -u git -H editor config/database.yml
production:
  main:
    adapter: postgresql
    encoding: unicode
    database: gitlabhq_production
    # username: git
    # password: "secure password"
    # host: localhost

Gem のインストール

  • sudo -u git -H bundle config set --local deployment 'true'
  • sudo -u git -H bundle config set --local without 'test mysql aws kerberos'
  • sudo -u git -H bundle install

rake -T でタスクの一覧を表示したり他のタスクを実行したりするので development はインストールするようにしています

Gitlab Shell のインストール

  • sudo -u git -H bundle exec rake gitlab:shell:install RAILS_ENV=production

GitLab Workhorse のインストール

  • sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=production

GitLab Elasticsearch indexer のインストール

  • sudo -u git -H bundle exec rake "gitlab:indexer:install[/home/git/gitlab-elasticsearch-indexer]" RAILS_ENV=production

Gitlab Pages のインストール

今回は必須ではないため省略します

Gitaly のインストールと起動

  • cd /home/git/gitlab
  • sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,/home/git/repositories]" RAILS_ENV=production
  • sudo chmod 0700 /home/git/gitlab/tmp/sockets/private
  • sudo chown git /home/git/gitlab/tmp/sockets/private

systemd への登録

  • cd /home/git/gitlab
  • sudo mkdir -p /usr/local/lib/systemd/system
  • sudo cp lib/support/systemd/* /usr/local/lib/systemd/system/
  • sudo systemctl daemon-reload

ログローテションの設定

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

gitaly 起動

  • sudo systemctl start gitlab-gitaly.service

データベースのマイグレート

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

これまでのアプリの状態を確認する

  • sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production

GetText PO files の作成

  • sudo -u git -H bundle exec rake gettext:compile RAILS_ENV=production

アセットファイルの作成

  • sudo -u git -H yarn install --production --pure-lockfile
  • sudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production NODE_ENV=production

Gitlab の起動

  • sudo systemctl start gitlab.target

ログは /home/git/gitlab/log/application.log にあります

Nginx のインストールと設定、起動

  • sudo apt-get install -y 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
  • sudo rm -f /etc/nginx/sites-enabled/default
  • sudo nginx -t
  • sudo systemctl restart nginx.service

動作確認

  • sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
http://192.168.100.1
にアクセスして root のパスワードを設定してログインできることを書くにしましょう

最後に

基本は公式の手順通りに実行すれば OK です
少し違っていたのは以下の通りです

  • git ユーザの sudo 化
  • redis のバージョンが4系になっていた

ドメインでのアクセスやSSLの設定は飛ばしています

参考サイト

0 件のコメント:

コメントを投稿