- 概要
- 環境
- 依存パッケージのインストール
- git の最新版をインストール
- GraphicsMagick のインストール
- Postfix のインストール
- Exiftool のインストール
- Ruby のインストール
- Go のインストール
- Nodejs と yarn のインストール
- git ユーザの作成
- Postgres のインストールと設定
- Redis のインストール
- Gitlab インストールと設定
- DB の設定
- Gem のインストール
- Gitlab Shell のインストール
- GitLab Workhorse のインストール
- GitLab Elasticsearch indexer のインストール
- Gitlab Pages のインストール
- Gitaly のインストールと起動
- systemd への登録
- ログローテションの設定
- gitaly 起動
- データベースのマイグレート
- これまでのアプリの状態を確認する
- GetText PO files の作成
- アセットファイルの作成
- Gitlab の起動
- Nginx のインストールと設定、起動
- 動作確認
- 最後に
- 参考サイト
概要
過去に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 -v
と yarn -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 件のコメント:
コメントを投稿