- Linuxパッケージのインストールを考える
- インストールするバージョンを選択してください。
- ソフトウェアの要件
- GitLabディレクトリ構造
- 概要
- 1.パッケージと依存関係
- 2. Ruby
- 3.RubyGems
- 4.移動
- 5.ノード
- 6.システムユーザー
- 7.データベース
- 8. Redis
- 9. GitLab
- 10. NGINX
- インストール後
- 高度なセットアップのヒント
- トラブルシューティング
セルフコンパイルインストール
これは、ソースファイルを使って本番 GitLab サーバーをセットアップするための公式インストールガイドです。Debian/Ubuntuオペレーションシステム用に作成され、テストされています。ハードウェアとオペレーティングシステムの要件についてはrequirements.mdをお読みください。RHEL/CentOSにインストールしたい場合は、Linuxパッケージを使うべきです。他の多くのインストールオプションについては、メインインストールページを参照してください。
このガイドが長いのは、多くのケースをカバーし、必要なコマンドをすべて含んでいるからです。以下の手順で動作することが確認されています。このガイドから外れる場合は注意してください。GitLabの環境に関する仮定に違反しないようにしてください。例えば、ディレクトリの場所を変更したり、間違ったユーザーとしてサービスを実行したりしたために、多くの人が権限の問題に遭遇します。
このガイドにバグやエラーを見つけた場合は、貢献するガイドに従って マージリクエストを提出してください。
Linuxパッケージのインストールを考える
セルフコンパイルによるインストールは手間がかかり、エラーも発生しやすいため、高速で信頼性の高いLinuxパッケージインストール(deb/rpm)を強くお勧めします。
Linuxパッケージがより信頼できる理由の一つは、GitLabプロセスがクラッシュした場合に再起動するためのrunitの使用です。使用頻度の高いGitLabインスタンスでは、Sidekiqバックグラウンドワーカーのメモリ使用量は時間とともに増大します。Linuxのパッケージは、Sidekiqがメモリを使い過ぎると優雅に終了させることでこれを解決しています。この終了の後、runitはSidekiqが実行されていないことを検知して起動します。自己コンパイルインストールでは、プロセス監視にrunitを使用しないため、Sidekiqは終了できず、そのメモリ使用量は時間とともに増加します。
インストールするバージョンを選択してください。
このインストールガイドは、インストールしたいGitLabのブランチ(バージョン)からご覧ください(例:16-0-stable
)。GitLabの左上(メニューバーの下)にあるバージョンのドロップダウンリストでブランチを選択できます。
一番番号の大きい安定ブランチが不明な場合は、GitLabブログでバージョン別のインストールガイドリンクを確認してください。
ソフトウェアの要件
ソフトウェア | 最小バージョン | 備考 |
---|---|---|
Ruby | 3.0.x | GitLab 15.10からはRuby 3.0が必要です。Rubyの標準的なMRI実装を使用する必要があります。私たちはJRubyと Rubiniusを愛用していますが、GitLabにはネイティブ拡張を持ついくつかのGemsが必要です。 |
RubyGems | 3.4.x | 特定のRubyGemsのバージョンは完全には必要ではありませんが、既知のパフォーマンス向上を享受できるようにアップデートすることをお勧めします。 |
Go | 1.19.x | GitLab 16.1からは、Go 1.19以降が必要です。 |
Git | 2.41.x | GitLab 16.2から、Git 2.41.x以降が必要です。Gitalyが提供するGitのバージョンを使用してください。 |
Node.js | 18.17.x | GitLab 16.3からはNode.js 18.17以降が必要です。 |
GitLabディレクトリ構造
このページの指示に従うと、このようなディレクトリ構造になります:
|-- home
| |-- git
| |-- .ssh
| |-- gitlab
| |-- gitlab-shell
| |-- repositories
-
/home/git/.ssh
- OpenSSHの設定が含まれています。具体的には、GitLab Shell が管理するauthorized_keys
ファイルです。 -
/home/git/gitlab
- GitLab コアソフトウェア。 -
/home/git/gitlab-shell
- GitLabのCoreアドオンコンポーネント。SSHクローンやその他の機能をメンテナー。 -
/home/git/repositories
- 名前空間ごとに整理された全プロジェクトのベアリポジトリ。プッシュ/プルされたGitリポジトリがすべてのプロジェクトで管理されています。プロジェクトにとって重要なデータが格納されています。バックアップを取っておきましょう。
リポジトリのデフォルトの場所はGitLabのconfig/gitlab.yml
、GitLab Shellのconfig.yml
で設定できます。
より詳細な概要については、GitLabアーキテクチャドキュメントを参照してください。
概要
GitLabのインストールは以下のコンポーネントのセットアップから構成されます:
1.パッケージと依存関係
sudo
sudo
は Debian にはデフォルトではインストールされていません。システムが最新であることを確認してインストールしてください。
# run as root!
apt-get update -y
apt-get upgrade -y
apt-get install sudo -y
ビルドの依存関係
必要なパッケージ(RubyのコンパイルやRuby gemsのネイティブ拡張に必要)をインストールします:
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 libkrb5-dev logrotate rsync python3-docutils pkg-config cmake \
runit-systemd
Git
GitLab 13.6からは、Gitalyが提供するGitバージョンの使用を推奨します:
- 常にGitLabが要求するバージョンです。
- 適切なオペレーションに必要なカスタムパッチを含むことがあります。
-
必要な依存関係をインストールしてください:
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev libpcre2-dev build-essential git-core
-
Gitalyリポジトリをクローンし、Gitをコンパイルします。
<X-Y-stable>
、インストールしたいGitLabのバージョンに合った安定ブランチに置き換えてください。例えば、GitLab 13.6をインストールしたい場合、ブランチ名13-6-stable
:git clone https://gitlab.com/gitlab-org/gitaly.git -b <X-Y-stable> /tmp/gitaly cd /tmp/gitaly sudo make git GIT_PREFIX=/usr/local
-
オプションで、システムGitとその依存関係を削除することができます:
sudo apt remove -y git-core sudo apt autoremove
config/gitlab.yml
の後でを編集する際には、Gitのパスを変更することを忘れないでください:
-
を変更することを忘れないでください:
git: bin_path: /usr/bin/git
-
To:
git: bin_path: /usr/local/bin/git
GraphicsMagick
カスタムファビコンを動作させるには、GraphicsMagickがインストールされている必要があります。
sudo apt-get install -y graphicsmagick
メールサーバー
メール通知を受け取るには、必ずメールサーバをインストールしてください。デフォルトでは、Debianにはexim4
が同梱されていますが、これには問題があり、Ubuntuには同梱されていません。推奨されるメールサーバはpostfix
で、これをインストールすることができます:
sudo apt-get install -y postfix
次に「Internet Site」を選択し、Enter を押してホスト名を確認します。
Exifツール
GitLab Workhorseはアップロードされた画像からEXIFデータを削除するためにexiftool
。
sudo apt-get install -y libimage-exiftool-perl
2. Ruby
GitLabの実行にはRubyインタプリタが必要です。Rubyの最小要件については要件セクションを参照ください。
RVM
,rbenv
,chruby
のようなRubyバージョンマネージャをGitLabと一緒に使用すると、診断が難しい問題が頻繁に発生します。バージョンマネージャはサポートされていませんので、システムRubyを使用する場合は以下の指示に従うことを強くお勧めします。
Linuxディストリビューションでは一般的に古いバージョンのRubyが利用可能なので、これらの手順は公式のソースコードからRubyをインストールするように設計されています。
Rubyをインストールします。
3.RubyGems
RubyにバンドルされているRubyGemsよりも新しいバージョンが必要になることがあります。
特定のバージョンにアップデートするには
gem update --system 3.4.12
または最新バージョン
gem update --system
4.移動
GitLabにはGoで書かれたデーモンがいくつかあります。GitLabをインストールするにはGoコンパイラが必要です。以下の説明は64ビットのLinuxを使うことを前提としています。他のプラットフォーム用のダウンロードはGoダウンロードページで見つけることができます。
# Remove former Go installation folder
sudo rm -rf /usr/local/go
curl --remote-name --location --progress-bar "https://go.dev/dl/go1.19.10.linux-amd64.tar.gz"
echo '8b045a483d3895c6edba2e90a9189262876190dbbd21756870cdd63821810677 go1.19.10.linux-amd64.tar.gz' | shasum -a256 -c - && \
sudo tar -C /usr/local -xzf go1.19.10.linux-amd64.tar.gz
sudo ln -sf /usr/local/go/bin/{go,gofmt} /usr/local/bin/
rm go1.19.10.linux-amd64.tar.gz
5.ノード
GitLabでは、JavaScriptアセットをコンパイルするためにNodeを、JavaScriptの依存関係を管理するためにYarnを使用する必要があります。これらの現在の最小要件は以下の通りです:
-
node
18.xリリース(v18.17.0以降)。Node.jsの他のLTSバージョンでもアセットをビルドできるかもしれませんが、Node.js 18.xのみ保証します。 -
yarn
= v1.22.x (Yarn 2はまだサポートされていません)
多くのディストリビューションでは、公式パッケージリポジトリが提供するバージョンは古いため、以下のコマンドでインストールする必要があります:
# install node v18.x
curl --location "https://deb.nodesource.com/setup_18.x" | sudo bash -
sudo apt-get install -y nodejs
npm install --global yarn
これらのステップで問題があれば、nodeと yarnの公式ウェブサイトを参照してください。
6.システムユーザー
GitLabのgit
ユーザーを作成します:
sudo adduser --disabled-login --gecos 'GitLab' git
7.データベース
-
データベースパッケージをインストールします。
Ubuntu 20.04以降の場合:
sudo apt install -y postgresql postgresql-client libpq-dev postgresql-contrib
Ubuntu 18.04以前の場合、利用可能なPostgreSQLが最小バージョンの要件を満たしていません。PostgreSQLのリポジトリを追加する必要があります:
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
-
お持ちの PostgreSQL のバージョンが、インストールする GitLab のバージョンでサポートされていることを確認してください:
psql --version
-
PostgreSQLサービスを起動し、サービスが稼働していることを確認します:
sudo service postgresql start sudo service postgresql status
-
GitLab用のデータベースユーザーを作成します:
sudo -u postgres psql -d template1 -c "CREATE USER git CREATEDB;"
-
pg_trgm
エクステンションを作成します:sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
-
btree_gist
エクステンションを作成します(GitLab 13.1+ で必要):sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS btree_gist;"
-
plpgsql
エクステンションを作成します:sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS plpgsql;"
-
GitLabプロダクションデータベースを作成し、データベース上のすべての権限を付与します:
sudo -u postgres psql -d template1 -c "CREATE DATABASE gitlabhq_production OWNER git;"
-
新しいユーザーで新しいデータベースに接続してみてください:
sudo -u git -H psql -d gitlabhq_production
-
pg_trgm
拡張機能が有効になっているか確認してください:SELECT true AS enabled FROM pg_available_extensions WHERE name = 'pg_trgm' AND installed_version IS NOT NULL;
拡張機能が有効な場合、次のような出力が得られます:
enabled --------- t (1 row)
-
btree_gist
拡張機能が有効になっているか確認してください:SELECT true AS enabled FROM pg_available_extensions WHERE name = 'btree_gist' AND installed_version IS NOT NULL;
拡張機能が有効な場合、次のような出力が得られます:
enabled --------- t (1 row)
-
plpgsql
拡張機能が有効になっているか確認してください:SELECT true AS enabled FROM pg_available_extensions WHERE name = 'plpgsql' AND installed_version IS NOT NULL;
拡張機能が有効な場合、次のような出力が得られます:
enabled --------- t (1 row)
-
データベース・セッションを終了します:
gitlabhq_production> \q
8. Redis
Redisの最小要件については、要件のページを参照してください。
Redisをインストールします:
sudo apt-get install redis-server
インストールが完了したら、Redisを設定します:
# Configure redis to use sockets
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.orig
# Disable Redis listening on TCP by setting 'port' to 0
sudo sed 's/^port .*/port 0/' /etc/redis/redis.conf.orig | sudo tee /etc/redis/redis.conf
# Enable Redis socket for default Debian / Ubuntu path
echo 'unixsocket /var/run/redis/redis.sock' | sudo tee -a /etc/redis/redis.conf
# Grant permission to the socket to all members of the redis group
echo 'unixsocketperm 770' | sudo tee -a /etc/redis/redis.conf
# Add git to the redis group
sudo usermod -aG redis git
systemdでRedisを監視します。
ディストリビューションがsystemd initを使用していて、次のコマンドの出力がnotify
の場合、何も変更してはいけません:
systemctl show --value --property=Type redis-server.service
出力がnotify
でない場合は、実行してください:
# Configure Redis to not daemonize, but be supervised by systemd instead and disable the pidfile
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
# Make the same changes to the systemd unit file
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
# Reload the redis service
sudo systemctl daemon-reload
# Activate the changes to redis.conf
sudo systemctl restart redis-server.service
Redisを教師なしにしておきます。
システムがSysV initを使用している場合は、以下のコマンドを実行してください:
# Create the directory which contains the socket
sudo mkdir -p /var/run/redis
sudo chown redis:redis /var/run/redis
sudo chmod 755 /var/run/redis
# Persist the directory which contains the socket, if applicable
if [ -d /etc/tmpfiles.d ]; then
echo 'd /var/run/redis 0755 redis redis 10d -' | sudo tee -a /etc/tmpfiles.d/redis.conf
fi
# Activate the changes to redis.conf
sudo service redis-server restart
9. GitLab
# We'll install GitLab into the home directory of the user "git"
cd /home/git
ソースのクローン
クローンコミュニティ版:
# Clone GitLab repository
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-foss.git -b <X-Y-stable> gitlab
クローンエンタープライズ版:
# Clone GitLab repository
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab.git -b <X-Y-stable-ee> gitlab
<X-Y-stable>
をインストールするバージョンに一致する安定版ブランチに置き換えてください。たとえば、11.8 をインストールする場合は、ブランチ名11-8-stable
を使用します。
master
ブリーディングエッジバージョンが必要 master
な場合は<X-Y-stable>
に変更することもmaster
できますが、 master
運用サーバーにはmaster
決してインストールしないで master
ください!設定
# Go to GitLab installation folder
cd /home/git/gitlab
# Copy the example GitLab config
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
# Update GitLab config file, follow the directions at top of the file
sudo -u git -H editor config/gitlab.yml
# Copy the example secrets file
sudo -u git -H cp config/secrets.yml.example config/secrets.yml
sudo -u git -H chmod 0600 config/secrets.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,go-w log/
sudo chmod -R u+rwX tmp/
# 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/
# Create the public/uploads/ directory
sudo -u git -H mkdir -p public/uploads/
# Make sure only the GitLab user has access to the public/uploads/ directory
# now that files in public/uploads are served by gitlab-workhorse
sudo chmod 0700 public/uploads
# Change the permissions of the directory where CI job logs are stored
sudo chmod -R u+rwX builds/
# Change the permissions of the directory where CI artifacts are stored
sudo chmod -R u+rwX shared/artifacts/
# Change the permissions of the directory where GitLab Pages are stored
sudo chmod -R ug+rwX shared/pages/
# Copy the example Puma config
sudo -u git -H cp config/puma.rb.example config/puma.rb
# Refer to https://github.com/puma/puma#configuration for more information.
# You should scale Puma workers and threads based on the number of CPU
# cores you have available. You can get that number via the `nproc` command.
sudo -u git -H editor config/puma.rb
# Configure Redis connection settings
sudo -u git -H cp config/resque.yml.example config/resque.yml
sudo -u git -H cp config/cable.yml.example config/cable.yml
# Change the Redis socket path if you are not using the default Debian / Ubuntu configuration
sudo -u git -H editor config/resque.yml config/cable.yml
gitlab.yml
とpuma.rb
の両方をあなたのセットアップに合わせて編集してください。
HTTPSを使用する場合は、HTTPSを使用するを参照してください。
GitLab DBの設定
database.yml
、section: のみの設定はmain:
非推奨 main:
です。main:
GitLab 17. main:
0以降では、database.yml
にmain:
2つの main:
セクションとci:
セクションがmain:
必要 main:
です。sudo -u git cp config/database.yml.postgresql config/database.yml
# Remove host, username, and password lines from config/database.yml.
# Once modified, the `production` settings will be as follows:
#
# production:
# main:
# adapter: postgresql
# encoding: unicode
# database: gitlabhq_production
# ci:
# adapter: postgresql
# encoding: unicode
# database: gitlabhq_production
# database_tasks: false
#
sudo -u git -H editor config/database.yml
# Remote PostgreSQL only:
# Update username/password in config/database.yml.
# You only need to adapt the production settings (first part).
# If you followed the database guide then please do as follows:
# Change 'secure password' with the value you have given to $password
# You can keep the double quotes around the password
sudo -u git -H editor config/database.yml
# Uncomment the `ci:` sections in config/database.yml.
# Ensure the `database` value in `ci:` matches the database value in `main:`.
# Make config/database.yml readable to git only
sudo -u git -H chmod o-rwx config/database.yml
database.yml
:main:
とci:
の2つのセクションが必要です。ci
: 接続先は同じデータベースでなければなりません。何らかの理由で単一のデータベース接続を維持したい場合は、config/database.yml
からci:
セクションを削除してください。
Gemsのインストール
bundle install -jN
(N
はプロセッサコアの数です)を呼び出して、並列gemsインストールを楽しむことができます。nproc
でコア数を確認してください。詳しくはこちらの投稿をご覧ください。bundle
があることを確認してください(bundle -v
を実行してください):
gemsをインストールします(ユーザー認証にKerberosを使用する場合は、以下の--without
オプションのkerberos
を省略します):
sudo -u git -H bundle config set --local deployment 'true'
sudo -u git -H bundle config set --local without 'development test mysql aws kerberos'
sudo -u git -H bundle config path /home/git/gitlab/vendor/bundle
sudo -u git -H bundle install
GitLab Shell をインストールします。
GitLab ShellはGitLabのために特別に開発されたSSHアクセスとリポジトリ管理ソフトウェアです。
# Run the installation task for gitlab-shell:
sudo -u git -H bundle exec rake gitlab:shell:install RAILS_ENV=production
# By default, the gitlab-shell config is generated from your main GitLab config.
# You can review (and modify) the gitlab-shell config as follows:
sudo -u git -H editor /home/git/gitlab-shell/config.yml
HTTPSを使用する場合は、HTTPSを使用するを参照してください。
適切なDNSレコードか、/etc/hosts
(”127.0.0.1 hostname”)の追加行によって、ホスト名がマシン上で解決できることを確認します。これは、リバースプロキシの後ろにGitLabをセットアップする場合などに必要です。ホスト名が解決できない場合、最終的なインストールチェックはCheck GitLab API access: FAILED. code: 401
で失敗し、コミットのプッシュは[remote rejected] master -> master (hook declined)
で拒否されます。
GitLab Workhorseのインストール
GitLab-WorkhorseはGNU Makeを使用しています。以下のコマンドラインはGitLab-Workhorseを/home/git/gitlab-workhorse
、推奨される場所にインストールします。
sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=production
追加パラメータとして指定することで、別の Git リポジトリを指定することができます:
sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse,https://example.com/gitlab-workhorse.git]" RAILS_ENV=production
GitLab-Elasticsearch-indexerをEnterprise Editionにインストールします。
GitLab-Elasticsearch-Indexer はGNU Make を使用しています。以下のコマンドラインはGitLab-Elasticsearch-Indexerを/home/git/gitlab-elasticsearch-indexer
、推奨の場所にインストールします。
sudo -u git -H bundle exec rake "gitlab:indexer:install[/home/git/gitlab-elasticsearch-indexer]" RAILS_ENV=production
追加パラメータとして指定することで、別の Git リポジトリを指定することができます:
sudo -u git -H bundle exec rake "gitlab:indexer:install[/home/git/gitlab-elasticsearch-indexer,https://example.com/gitlab-elasticsearch-indexer.git]" RAILS_ENV=production
ソースコードは、まず最初のパラメータで指定したパスに取り込まれます。次に、bin
ディレクトリの下にバイナリがビルドされます。その後、バイナリを指すようにgitlab.yml
のproduction -> elasticsearch -> indexer_path
設定を更新する必要があります。
GitLab Pages のインストール
GitLab PagesはGNU Makeを使います。このステップはオプションで、GitLab内から静的サイトをホストしたい場合にのみ必要です。以下のコマンドは、GitLab Pages を/home/git/gitlab-pages
にインストールします。GitLab Pagesデーモンはいくつかの異なる方法で実行することができるので、追加のセットアップ手順については、GitLabのバージョンの管理ガイドを参照してください。
cd /home/git
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-pages.git
cd gitlab-pages
sudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION)
sudo -u git -H make
Gitalyのインストール
# Fetch Gitaly source with Git and compile with Go
cd /home/git/gitlab
sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,/home/git/repositories]" RAILS_ENV=production
追加パラメータとして指定することで、別の Git リポジトリを指定することができます:
sudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,/home/git/repositories,https://example.com/gitaly.git]" RAILS_ENV=production
次に、Gitalyが設定されていることを確認します:
# Restrict Gitaly socket access
sudo chmod 0700 /home/git/gitlab/tmp/sockets/private
sudo chown git /home/git/gitlab/tmp/sockets/private
# If you are using non-default settings, you need to update config.toml
cd /home/git/gitaly
sudo -u git -H editor config.toml
Gitalyの設定については、Gitalyのドキュメントをご覧ください。
サービスのインストール
GitLabは常にSysV initスクリプトをサポートしてきました。SysVは広くサポートされており、ポータブルですが、今ではsystemdがサービス監視の標準となっており、すべての主要なLinuxディストリビューションで使われています。自動再起動、より良いサンドボックス、リソース制御の恩恵を受けるために、可能であればネイティブのsystemdサービスを使うべきです。
systemd ユニットのインストール
initとしてsystemdを使用する場合は、この手順を使用してください。そうでない場合は、SysV init スクリプトの手順に従ってください。
サービスをコピーしてsystemctl daemon-reload
を実行し、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
GitLabが提供するユニットは、RedisとPostgreSQLをどこで動かしているのかほとんど想定していません。
GitLabを別のディレクトリにインストールした場合やデフォルト以外のユーザーでインストールした場合は、これらの値もユニットで変更する必要があります。
例えば、RedisとPostgreSQLをGitLabと同じマシンで動かしている場合、次のようにします:
-
Pumaサービスを編集します:
sudo systemctl edit gitlab-puma.service
開いたエディターで以下を追加し、ファイルを保存します:
[Unit] Wants=redis-server.service postgresql.service After=redis-server.service postgresql.service
-
Sidekiqサービスを編集します:
sudo systemctl edit gitlab-sidekiq.service
以下を追加し、ファイルを保存します:
[Unit] Wants=redis-server.service postgresql.service After=redis-server.service postgresql.service
systemctl edit
ドロップイン設定ファイルを/etc/systemd/system/<name of the unit>.d/override.conf
にインストールするので、後でユニットファイルを更新するときに、内部の設定が上書きされることはありません。ドロップイン設定ファイルを分割するには、上記のスニペットを/etc/systemd/system/<name of the unit>.d/
以下の.conf
ファイルに追加します。
手動でユニット・ファイルに変更を加えたり、(systemctl edit
を使用せずに)ドロップイン設定ファイルを追加した場合は、以下のコマンドを実行すると、変更が反映されます:
sudo systemctl daemon-reload
GitLabを起動時に開始するようにします:
sudo systemctl enable gitlab.target
SysV initスクリプトのインストール
SysV initスクリプトを使用する場合は、以下の手順に従ってください。systemd を使用する場合は、systemd unitの手順に従ってください。
init スクリプトをダウンロードします (/etc/init.d/gitlab
):
cd /home/git/gitlab
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
デフォルト以外のフォルダやユーザーでインストールする場合は、defaultsファイルをコピーして編集してください:
sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
GitLabを別のディレクトリやデフォルト以外のユーザーでインストールした場合は、これらの設定を/etc/default/gitlab
で変更してください。/etc/init.d/gitlab
はアップグレード時に変更されるので、編集しないでください。
GitLabを起動時に開始するようにします:
sudo update-rc.d gitlab defaults 21
# or if running this on a machine running systemd
sudo systemctl daemon-reload
sudo systemctl enable gitlab.service
Logrotate の設定
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
Gitalyの開始
次のセクションでは、Gitalyを起動しておく必要があります。
-
systemdを使ってGitalyを起動するには:
sudo systemctl start gitlab-gitaly.service
-
手動でGitaly for SysVを起動するには:
gitlab_path=/home/git/gitlab gitaly_path=/home/git/gitaly sudo -u git -H sh -c "$gitlab_path/bin/daemon_with_pidfile $gitlab_path/tmp/pids/gitaly.pid \ $gitaly_path/_build/bin/gitaly $gitaly_path/config.toml >> $gitlab_path/log/gitaly.log 2>&1 &"
データベースの初期化と高度な機能の有効化
cd /home/git/gitlab
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
# Type 'yes' to create the database tables.
# or you can skip the question by adding force=yes
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production force=yes
# When done, you see 'Administrator account created:'
管理者/ルートのパスワードと電子メールは、以下のように環境変数GITLAB_ROOT_PASSWORD
とGITLAB_ROOT_EMAIL
で設定します。パスワードを設定しない(デフォルトのパスワードが設定されている)場合は、インストールが終わってサーバーに初回ログインするまで、GitLabを公開するのを待ちましょう。初回ログイン時に、デフォルトのパスワードを変更するよう強制されます。Enterprise版のサブスクリプションは、GITLAB_ACTIVATION_CODE
環境変数にアクティベーションコードを入力することで、この時点でアクティベートすることもできます。
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=yourpassword GITLAB_ROOT_EMAIL=youremail GITLAB_ACTIVATION_CODE=yourcode
セキュリティsecrets.yml
secrets.yml
ファイルはセッションとセキュア変数の暗号化キーを保存します。secrets.yml
を安全な場所にバックアップしますが、データベースのバックアップと同じ場所には保存しないでください。そうしないと、バックアップの1つが漏洩した場合、シークレットが漏洩してしまいます。
アプリケーションステータスの確認
GitLabとその環境が正しく設定されているかを確認します:
sudo -u git -H bundle exec rake gitlab:env:info 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
rake
がJavaScript heap out of memory
エラーで失敗する場合は、次のようにNODE_OPTIONS
を設定して実行してみてください。
sudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production NODE_ENV=production NODE_OPTIONS="--max_old_space_size=4096"
GitLab インスタンスの起動
# For systems running systemd
sudo systemctl start gitlab.target
# For systems running SysV init
sudo service gitlab start
10. NGINX
NGINXはGitLabで公式にサポートされているウェブサーバーです。NGINXをウェブサーバーとして使えない、あるいは使いたくない場合は、GitLabのレシピをご覧ください。
インストール
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
あなたの設定に合わせて設定ファイルを編集してください。また、特にgit
以外のユーザーでインストールする場合は、GitLab へのパスを合わせてください:
# Change YOUR_SERVER_FQDN to the fully-qualified
# domain name of your host serving GitLab.
#
# Remember to match your paths to GitLab, especially
# if installing for a user other than 'git'.
#
# If using Ubuntu default nginx install:
# either remove the default_server from the listen line
# or else sudo rm -f /etc/nginx/sites-enabled/default
sudo editor /etc/nginx/sites-available/gitlab
GitLab Pagesを有効にする場合は、別途NGINXの設定が必要です。必要な設定についてはGitLab Pages 管理ガイド をご覧ください。
HTTPS を使用したい場合は、gitlab
NGINX 設定をgitlab-ssl
に置き換えてください。HTTPS 設定の詳細については、Using HTTPSを参照してください。
NGINXがGitLab-Workhorseソケットを読めるようにするには、www-data
、GitLabユーザーが所有するソケットを読めるようにする必要があります。これは、例えばパーミッションが0755
であるなど、デフォルトでワールドリーダブルである場合に達成されます。www-data
はまた、親ディレクトリをリストできる必要があります。
テスト設定
次のコマンドを使用して、gitlab
またはgitlab-ssl
NGINX 設定ファイルを検証します:
sudo nginx -t
syntax is okay
およびtest is successful
メッセージが表示されるはずです。エラー メッセージが表示された場合は、gitlab
またはgitlab-ssl
NGINX 設定ファイルにタイプミスがないか、エラー メッセージに記載されている内容を確認してください。
インストールされているバージョンが1.12.1以上であることを確認します:
nginx -v
それ以下の場合、以下のエラーが表示される可能性があります:
nginx: [emerg] unknown "start$temp=[filtered]$rest" variable
nginx: configuration file /etc/nginx/nginx.conf test failed
再起動
# For systems running systemd
sudo systemctl restart nginx.service
# For systems running SysV init
sudo service nginx restart
インストール後
アプリケーションステータスのダブルチェック
見落としがないか、さらに詳しくチェックしましょう:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
すべての項目が緑なら、GitLab のインストール成功です!
SANITIZE=true
をgitlab:check
に指定すると、check コマンドの出力からプロジェクト名を省くことができます。初期ログイン
GitLabに初回ログインするために、ウェブブラウザでYOUR_SERVERにアクセスします。
セットアップ時に root パスワードを入力しなかった場合は、パスワード再設定画面にリダイレクトされるので、最初の管理者アカウントのパスワードを入力します。希望のパスワードを入力すると、ログイン画面にリダイレクトされます。
初期アカウントのユーザー名はroot です。先ほど作成したパスワードを入力してログインします。ログイン後、必要に応じてユーザー名を変更することができます。
お楽しみください!
GitLabを起動・停止するには:
- systemd units:
sudo systemctl start gitlab.target
またはsudo systemctl stop gitlab.target
を使ってください。 - SysV init スクリプト:
sudo service gitlab start
またはsudo service gitlab stop
を使ってください。
推奨される次のステップ
インストールが完了したら、認証オプションやサインアップの制限など、推奨される次のステップに進むことを検討してください。
高度なセットアップのヒント
相対 URL サポート
相対URLでGitLabを設定する方法については、相対URLのドキュメントをご覧ください。
HTTPS を使う
GitLabをHTTPSで使うには:
-
gitlab.yml
:- セクション 1 の
port
オプションを443
に設定します。 - セクション 1 の
https
オプションをtrue
に設定します。
- セクション 1 の
- GitLab Shellの
config.yml
:-
gitlab_url
オプションをGitLabのHTTPSエンドポイントに設定します(例えば、https://git.example.com
)。 -
ca_file
またはca_path
オプションを使用して証明書を設定します。
-
-
gitlab
設定の代わりに、gitlab-ssl
NGINX サンプル設定を使用します。-
YOUR_SERVER_FQDN
を更新します。 -
ssl_certificate
およびssl_certificate_key
を更新。 - 設定ファイルをレビューし、その他のセキュリティやパフォーマンス向上機能の適用を検討してください。
-
自己署名証明書の使用は推奨されません。どうしても使用したい場合は、標準の指示に従って自己署名SSL証明書を生成してください:
mkdir -p /etc/nginx/ssl/
cd /etc/nginx/ssl/
sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3560 -out gitlab.crt -keyout gitlab.key
sudo chmod o-r gitlab.key
電子メールによる返信を有効にします。
この設定方法の詳細については、「メールによる返信」のドキュメントを参照してください。
LDAP認証
config/gitlab.yml
でLDAP認証を設定できます。このファイルを編集したら、GitLabを再起動してください。
カスタム OmniAuth プロバイダを使う
OmniAuth インテグレーションのドキュメントを参照してください。
プロジェクトのビルド
GitLabはプロジェクトをビルドすることができます。その機能を有効にするには、それを行うRunnerが必要です。GitLab Runnerセクションを参照してインストールしてください。
信頼できるプロキシの追加
別のマシンでリバースプロキシを使っている場合は、そのプロキシを信頼済みプロキシのリストに追加してください。そうしないと、ユーザーはプロキシのIPアドレスからサインインしているように見えます。
セクション 1 のtrusted_proxies
オプションをカスタマイズすることで、config/gitlab.yml
に信頼されたプロキシを追加することができます。ファイルを保存し、GitLabを再設定して変更を有効にします。
カスタムRedis接続
標準以外のポートや別のホストで Redis サーバーに接続したい場合は、config/resque.yml
ファイルで接続文字列を設定できます。
# example
production:
url: redis://redis.example.tld:6379
ソケット経由でRedisサーバーに接続したい場合は、unix:
URLスキームと、config/resque.yml
ファイルにあるRedisソケットファイルへのパスを使用します。
# example
production:
url: unix:/path/to/redis/socket
また、config/resque.yml
ファイルで環境変数を使用することもできます:
# example
production:
url: <%= ENV.fetch('GITLAB_REDIS_URL') %>
カスタムSSH接続
標準以外のポートでSSHを実行している場合は、GitLabユーザーのSSH設定を変更する必要があります。
# Add to /home/git/.ssh/config
host localhost # Give your setup a name (here: override localhost)
user git # Your remote git user
port 2222 # Your port number
hostname 127.0.0.1; # Your server name or IP
また、config/gitlab.yml
ファイルの対応するオプション(例えば、ssh_user
,ssh_host
,admin_uri
)も変更する必要があります。
追加のマークアップ・スタイル
常にサポートされているMarkdownスタイルとは別に、GitLabが表示できるリッチテキストファイルがあります。しかし、そのためには依存関係をインストールする必要があるかもしれません。詳しくはgithub-markup
gem README をご覧ください。
Prometheusサーバーのセットアップ
Prometheus サーバーの設定はconfig/gitlab.yml
で行います:
# example
prometheus:
enabled: true
server_address: '10.1.2.3:9090'
トラブルシューティング
“空のリポジトリをクローンしたようです。”
GitLab がホストしているリポジトリをクローンしようとしたときにこのメッセージが表示された場合は、NGINX や Apache の設定が古いか、GitLab Workhorse のインスタンスがないか間違って設定されている可能性があります。Goのインストール、GitLab Workhorseのインストール、NGINXの設定が正しく行われていることを再確認してください。
google-protobuf
“LoadError:/lib/x86_64-linux-gnu/libc.so.6: バージョン ‘GLIBC_2.14’ が見つかりません。”
このエラーは、google-protobuf
gemのバージョンによっては、いくつかのプラットフォームで発生する可能性があります。回避策は、このgemのソースのみのバージョンをインストールすることです。
まず、あなたのGitLabインストールが必要とするgoogle-protobuf
の正確なバージョンを見つける必要があります:
cd /home/git/gitlab
# Only one of the following two commands will print something. It
# will look like: * google-protobuf (3.2.0)
bundle list | grep google-protobuf
bundle check | grep google-protobuf
以下では、例として3.2.0
。これを上記で見つけたバージョン番号に置き換えてください:
cd /home/git/gitlab
sudo -u git -H gem install google-protobuf --version 3.2.0 --platform ruby
最後に、google-protobuf
が正しく読み込まれるかテストしてください。以下は’OK’と表示されるはずです。
sudo -u git -H bundle exec ruby -rgoogle/protobuf -e 'puts :OK'
gem install
コマンドが失敗した場合は、OS の開発者ツールをインストールする必要があるかもしれません。
Debian/Ubuntuの場合:
sudo apt-get install build-essential libgmp-dev
RedHat/CentOSの場合:
sudo yum groupinstall 'Development Tools'
GitLab アセットのコンパイルエラー
アセットのコンパイル中に、以下のエラーメッセージが表示されることがあります:
Killed
error Command failed with exit code 137.
これは、メモリ不足になったコンテナをYarnが強制終了した場合に発生する可能性があります。これを解決するには
-
システムのメモリを少なくとも8GBに増やしてください。
-
このコマンドを実行してアセットをクリーンアップします:
sudo -u git -H bundle exec rake gitlab:assets:clean RAILS_ENV=production NODE_ENV=production
-
yarn
コマンドを再度実行して、競合を解決します: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