ソースからのインストール

これは、ソースファイルを使って本番 GitLab サーバーをセットアップするための公式のインストールガイドです。開発用のインストールをセットアップしたり、その他多くのインストールオプションについては、メインのインストールページをご覧ください。Debian/Ubuntuオペレーティングシステム用に作成され、テストされています。 ハードウェアとオペレーティングシステムの要件についてはrequirements.mdをお読みください。 RHEL/CentOS にインストールする場合は、Omnibus パッケージを使うことをお勧めします。

このガイドが長いのは、多くのケースをカバーし、必要なコマンドをすべて含んでいるためです。 以下の手順は、実際に動作することが知られています。 このガイドから外れる場合は注意してください。 GitLabが環境について仮定していることに違反しないようにしてください。 たとえば、ディレクトリの場所を変更したり、間違ったユーザーとしてサービスを実行したりしたために、多くの人が権限の問題に遭遇します。

このガイドにバグやエラーを見つけた場合は、貢献するガイドに従ってマージリクエストを提出してください。

Omnibusパッケージのインストールを考える

ソースからのインストールは手間がかかり、エラーも発生しやすいので、高速で信頼性の高い Omnibusパッケージのインストール(deb/rpm) を強くお勧めします。

Omnibusパッケージがより信頼できる理由の一つは、GitLabプロセスがクラッシュした場合にrunitを使って再起動させることです。 使用頻度の高いGitLabインスタンスでは、Sidekiqバックグラウンドワーカーのメモリ使用量は時間とともに増えていきます。

Omnibusパッケージは、Sidekiqのメモリ使用量が多すぎる場合、Sidekiqを優雅に終了させることでこれを解決します。 この終了後、runitはSidekiqが実行されていないことを検出し、Sidekiqを起動します。 ソースからのインストールでは、プロセスの監視にrunitが使用されないため、Sidekiqは終了できず、メモリ使用量は時間とともに増加します。

インストールするバージョンの選択

必ずインストールしたいGitLabのブランチ(バージョン)からこのインストールガイドをご覧ください(例:11-7-stable)。GitLabの左上(メニューバーの下)にあるバージョンのドロップダウンでブランチを選択できます。

最高番号の安定ブランチが不明な場合は、GitLab ブログでバージョンごとのインストールガイドリンクを確認してください。

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のコアアドオンコンポーネント。 SSHクローンなどの機能をメンテナー。
  • /home/git/repositories - 名前空間ごとに整理された、すべてのプロジェクトのベアリポジトリ。 ここでは、プッシュ/プルされるすべてのプロジェクトのGitリポジトリがメンテナーされます。この領域には、プロジェクトの重要なデータが含まれます。バックアップをとっておきましょう。
注:リポジトリのデフォルトロケーションはGitLabのconfig/gitlab.yml、GitLab Shellのconfig.yml

より詳細な概要については、GitLabアーキテクチャドキュメントをご覧ください。

概要

GitLabのインストールは、以下のコンポーネントのセットアップから構成されます:

  1. パッケージと依存関係
  2. Ruby.
  3. 行ってください。
  4. ノード
  5. システムユーザー
  6. データベース
  7. Redis.
  8. GitLab.
  9. Nginx

1. パッケージと依存関係

sudo システムが最新であることを確認してインストールしてください。

# run as root!
apt-get update -y
apt-get upgrade -y
apt-get install sudo -y
注意:このインストール中、いくつかのファイルを手動で編集する必要があります。 vim に慣れている場合は、以下のコマンドで vim をデフォルトのエディタに設定してください。 vim に慣れていない場合は、この作業はスキップしてデフォルトのエディタを使い続けてください。
# Install vim and set as default editor
sudo apt-get install -y vim
sudo update-alternatives --set editor /usr/bin/vim.basic

必要なパッケージ(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 checkinstall libxml2-dev \
  libxslt-dev libcurl4-openssl-dev libicu-dev logrotate rsync python-docutils pkg-config cmake \
  runit

Ubuntu 14.04 (Trusty Tahr)にはlibre2-dev パッケージがありませんが、re2を手動でインストールすることができます。

ユーザー認証にKerberosを使いたい場合は、libkrb5-devをインストールしてください:

sudo apt-get install libkrb5-dev
注:Kerberosが何であるか知らない場合は、必要ないと思ってください。

正しいバージョンの git がインストールされていることを確認してください:

# Install Git
sudo apt-get install -y git-core

# Make sure Git is version 2.27.0 or higher (minimal supported version is 2.25.0)
git --version

GitLab 12.0から、Gitはlibpcre2でコンパイルする必要があります:

ldd $(command -v git) | grep pcre2

出力にはlibpcre2-8.so.0が含まれるはずです。

システムパッケージのGitが古すぎるか、pcre2でコンパイルされていませんか? 削除してください:

sudo apt-get remove git-core

Ubuntuでは、公式PPAからgitをインストールします:

# run as root!
add-apt-repository ppa:git-core/ppa
apt update
apt install git
# repeat libpcre2 check as above

Debian では、以下のコンパイル手順を使用してください:

# Install dependencies
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential

# Download and compile pcre2 from source
curl --silent --show-error --location https://ftp.pcre.org/pub/pcre/pcre2-10.33.tar.gz --output pcre2.tar.gz
tar -xzf pcre2.tar.gz
cd pcre2-10.33
chmod +x configure
./configure --prefix=/usr --enable-jit
make
sudo make install

# Download and compile from source
cd /tmp
curl --remote-name --location --progress https://www.kernel.org/pub/software/scm/git/git-2.27.0.tar.gz
echo '77ded85cbe42b1ffdc2578b460a1ef5d23bcbc6683eabcafbb0d394dffe2e787  git-2.27.0.tar.gz' | shasum -a256 -c - && tar -xzf git-2.27.0.tar.gz
cd git-2.27.0/
./configure --with-libpcre
make prefix=/usr/local all

# Install into /usr/local/bin
sudo make prefix=/usr/local install

# When editing config/gitlab.yml later, change the git -> bin_path to /usr/local/bin/git

カスタムファビコンを動作させるには、GraphicsMagickをインストールする必要があります。

sudo apt-get install -y graphicsmagick

注意:メール通知を受け取るためには、必ずメールサーバをインストールしてください。 デフォルトでは、Debianにはexim4が同梱されていますが、これには問題があり、Ubuntuには同梱されていません。 推奨されるメールサーバはpostfixで、これを使ってインストールできます:

sudo apt-get install -y postfix

次に「Internet Site」を選択し、Enterキーを押してホスト名を確認します。

GitLabWorkhorseは、アップロードされた画像からEXIFデータを削除するためにexiftool

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

2. Ruby

GitLabを動かすにはRubyインタプリタが必要です。

注:現在サポートされているRuby(MRI) のバージョンは2.6.xです。GitLab 12.2ではRuby 2.5.xのサポートが終了しました。

RVMrbenvchrubyのようなRubyのバージョンマネージャをGitLabで使用すると、診断が難しい問題が頻繁に発生します。 バージョンマネージャはサポートされていませんので、以下の手順に従ってシステムRubyを使用することを強くお勧めします。

Linuxディストリビューションでは一般的に古いバージョンのRubyが利用可能なので、これらの手順は公式のソースコードからRubyをインストールするように設計されています。

古いRuby 1.8があれば削除してください:

sudo apt-get remove ruby1.8

Rubyをダウンロードしてコンパイルしてください:

mkdir /tmp/ruby && cd /tmp/ruby
curl --remote-name --progress https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.6.tar.gz
echo '2d78048e293817f38d4ede4ebc7873013e97bb0b  ruby-2.6.6.tar.gz' | shasum -c - && tar xzf ruby-2.6.6.tar.gz
cd ruby-2.6.6

./configure --disable-install-rdoc
make
sudo make install

次にBundler gem(2.x以下のバージョン)をインストールします:

sudo gem install bundler --no-document --version '< 2'

3. 行く

GitLab 8.0以降、GitLabにはGoで書かれたデーモンがいくつかあります。 GitLabをインストールするにはGoコンパイラが必要です。 以下の説明は64ビットのLinuxを使うことを想定しています。 他のプラットフォーム用のダウンロードはGoのダウンロードページで見つけることができます。

# Remove former Go installation folder
sudo rm -rf /usr/local/go

curl --remote-name --progress https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz
echo '512103d7ad296467814a6e3f635631bd35574cab3369a97a323c9a585ccaa569  go1.13.5.linux-amd64.tar.gz' | shasum -a256 -c - && \
  sudo tar -C /usr/local -xzf go1.13.5.linux-amd64.tar.gz
sudo ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/
rm go1.13.5.linux-amd64.tar.gz

4. ノード

GitLab 8.17以降、GitLabはJavaScriptアセットをコンパイルするためにNodeを、JavaScriptの依存関係を管理するためにYarnを使用する必要があります。 これらの現在の最小要件は以下の通りです:

  • node >= v10.13.0より高速な12.xを推奨します。
  • yarn >= v1.10.0.

多くのディストロでは、公式パッケージリポジトリが提供するバージョンは古いので、以下のコマンドを使ってインストールする必要があります:

# install node v12.x
curl --location https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt-get install -y nodejs

curl --silent --show-error 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

これらの手順で問題がある場合は、ノードと ヤーンの公式ウェブサイトをご覧ください。

5. システム利用者

GitLab のgit ユーザーを作成します:

sudo adduser --disabled-login --gecos 'GitLab' git

6. データベース

注:GitLab 12.1からはPostgreSQLのみがサポートされています。 GitLab 13.0からはPostgreSQL 11+が必要です。
  1. データベースパッケージをインストールします:

    sudo apt-get install -y postgresql postgresql-client libpq-dev postgresql-contrib
    
  2. PostgreSQLサービスを起動し、サービスが実行されていることを確認してください:

    sudo service postgresql start
    sudo service postgresql status
    
  3. GitLab 用のデータベースユーザーを作成します:

    sudo -u postgres psql -d template1 -c "CREATE USER git CREATEDB;"
    
  4. pg_trgm エクステンションを作成します(GitLab 8.6+ で必要):

    sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
    
  5. GitLab productionデータベースを作成し、データベース上のすべての権限を付与します:

    sudo -u postgres psql -d template1 -c "CREATE DATABASE gitlabhq_production OWNER git;"
    
  6. 新しいユーザーで新しいデータベースに接続してみてください:

    sudo -u git -H psql -d gitlabhq_production
    
  7. pg_trgm 拡張機能が有効かどうかを確認します:

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

    拡張機能が有効な場合、次のような出力が得られます:

    enabled
    ---------
     t
    (1 row)
    
  8. データベースセッションを終了します:

    gitlabhq_production> \q
    

7. Redis

GitLabは少なくともRedis 5.0を必要とします。

Debian 10 または Ubuntu 20.04 以降をお使いの場合は、Redis 5.0 をインストールできます:

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

# 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

# Add git to the redis group
sudo usermod -aG redis git

8. 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-ee.git -b X-Y-stable gitlab

X-Y-stable は、インストールしたいバージョンに対応する安定版ブランチに置き換えてください。 たとえば、11.8 をインストールしたい場合は、ブランチ名11-8-stableを使います。

注意:master 最先端のバージョンが必要 masterな場合はX-Y-stable を変更することがmaster できますが、 master本番サーバーには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

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

# Configure Git global settings for git user
# 'autocrlf' is needed for the web editor
sudo -u git -H git config --global core.autocrlf input

# Disable 'git gc --auto' because GitLab already runs 'git gc' when needed
sudo -u git -H git config --global gc.auto 0

# Enable packfile bitmaps
sudo -u git -H git config --global repack.writeBitmaps true

# Enable push options
sudo -u git -H git config --global receive.advertisePushOptions true

# Enable fsyncObjectFiles to reduce risk of repository corruption if the server crashes
sudo -u git -H git config --global core.fsyncObjectFiles true

# Configure Redis connection settings
sudo -u git -H cp config/resque.yml.example config/resque.yml

# Change the Redis socket path if you are not using the default Debian / Ubuntu configuration
sudo -u git -H editor config/resque.yml
注意:gitlab.ymlpuma.rb の両方を、あなたのセットアップに合わせて編集してください。 ユニコーンのウェブサーバーを使用する場合は、ユニコーンの使用を参照してください。
注:HTTPSを使用する場合は、「HTTPSを使用する」を参照してください。

GitLab DB の設定

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:
#     adapter: postgresql
#     encoding: unicode
#     database: gitlabhq_production
#     pool: 10
#
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

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

宝石のインストール

注意:Bundler 1.5.2では、bundle install -jN (N はプロセッサコアの数です) を呼び出すことで、gemsの並列インストールが可能になり、完了までの時間が大幅に短縮されました (~60%高速化)。nprocでコア数を確認してください。 詳細については、この投稿を参照してください。

bundlebundle -v)を実行してください:

sudo -u git -H bundle install --deployment --without development test mysql aws kerberos
注意: ユーザー認証に Kerberos を使用する場合は、上記の--without オプションでkerberos を省略してください。

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.ymlproduction -> elasticsearch -> indexer_path 設定を更新して、そのバイナリを指すようにする必要があります。

注:ElasticsearchはGitLab Enterprise Editionの機能であり、GitLab Community Editionには含まれていません。

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のドキュメントをご覧ください。

Gitalyスタート

Gitalyは次のセクションのために走らなければなりません。

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/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:'
注意:Administrator/root のパスワードと電子メールは、環境変数GITLAB_ROOT_PASSWORDGITLAB_ROOT_EMAIL でそれぞれ設定することができます。 パスワードを設定しない(デフォルトのパスワードが設定されている)場合は、インストールが完了してサーバーに初回ログインするまで、GitLab を公開するのを待ちましょう。 初回ログイン時に、デフォルトのパスワードを変更するよう強制されます。 Enterprise Edition のライセンスは、環境変数GITLAB_LICENSE_FILE にフルパスを指定することで、この時点でインストールすることもできます。
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=yourpassword GITLAB_ROOT_EMAIL=youremail GITLAB_LICENSE_FILE="/path/to/license"

安全なシークレット.yml

このsecrets.yml ファイルには、セッションとセキュア変数の暗号化キーが保存されます。 secrets.yml安全な場所にsecrets.yml バックアップして secrets.ymlください。ただし、データベースのバックアップと同じ場所には保存しないでください。 そうしないと、バックアップのいずれかが侵害された場合、シークレットが漏洩してしまいます。

初期スクリプトのインストール

initスクリプトをダウンロードします(/etc/init.d/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

Logrotateの設定

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

申請状況の確認

GitLabとその環境が正しく設定されているか確認してください:

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

GetText PO ファイルのコンパイル

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

rakeJavaScript 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 インスタンスを起動します。

sudo service gitlab start
# or
sudo /etc/init.d/gitlab restart

9. 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 configをgitlab-sslに置き換えてください。 HTTPS設定の詳細については、「HTTPSの使用」を参照してください。

テスト構成

次のコマンドを使用して、gitlab またはgitlab-ssl NGINX 設定ファイルを検証します:

sudo nginx -t

syntax is okaytest is successful のメッセージが表示されるはずです。エラーが表示された場合は、gitlab またはgitlab-ssl NGINX 設定ファイルにタイプミスなどがないか、エラーメッセージに記載されている内容を確認してください。

注意:nginx -vを実行して、インストールされているバージョンが 1.12.1 よりも大きいことを確認してください。 バージョンが低い場合、以下のエラーが表示されることがあります:nginx: [emerg] unknown "start$temp=[filtered]$rest" variable nginx: configuration file /etc/nginx/nginx.conf test failed

リスタート

sudo service nginx restart

インストール後

申請状況のダブルチェック

見落としがないかどうか、より徹底的なチェックが必要です:

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

すべての項目が緑になっていれば、GitLabのインストール成功です!

checkコマンドの出力からプロジェクト名を省略するには、SANITIZE=true 環境変数をgitlab:check に指定します。

初期ログイン

ウェブブラウザで YOUR_SERVER にアクセスし、GitLab に初めてログインします。

セットアップ中に root パスワードを入力しなかった場合、パスワード再設定画面にリダイレクトされ、初期管理者アカウントのパスワードを入力します。 必要なパスワードを入力すると、ログイン画面に戻ります。

デフォルトアカウントのユーザー名はrootです。 先ほど作成したパスワードを入力してログインします。 ログイン後、必要に応じてユーザー名を変更することができます。

お楽しみください!

sudo service gitlab startsudo service gitlab stop 、GitLabを起動したり停止したりすることができます。

高度なセットアップのヒント

相対URLのサポート

相対URLでGitLabを設定する方法の詳細については、相対URLのドキュメントを参照してください。

HTTPSの使用

GitLab を HTTPS で使用するには:

  1. gitlab.yml
    1. セクション 1 のport オプションを443に設定します。
    2. セクション 1 のhttps オプションをtrueに設定します。
  2. GitLab Shellのconfig.yml
    1. gitlab_url オプションを GitLab の HTTPS エンドポイントに設定します(例:https://git.example.com)。
    2. ca_file またはca_path オプションを使用して証明書を設定します。
  3. gitlab コンフィグではなく、gitlab-ssl NGINX サンプルコンフィグを使用してください。
    1. 更新YOUR_SERVER_FQDN
    2. ssl_certificatessl_certificate_keyを更新。
    3. コンフィギュレーション・ファイルをレビューし、その他のセキュリティやパフォーマンス向上機能の適用を検討してください。

自己署名証明書の使用は推奨されませんが、どうしても使用する必要がある場合は、通常の指示に従ってください。 では:

  1. 自己署名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
    
  2. GitLab Shell のconfig.ymlself_signed_certtrueに設定します。

メールでの返信を有効にする

この設定方法の詳細については、「電子メールによる返信」のドキュメントを参照してください。

LDAP認証

LDAP認証はconfig/gitlab.ymlで設定できます。 このファイルを編集した後、GitLabを再起動してください。

カスタム OmniAuth プロバイダの使用

OmniAuthインテグレーションのドキュメントを参照してください。

プロジェクトの構築

GitLabはプロジェクトをビルドすることができます。 その機能を有効にするには、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スキームとRedisソケットファイルへのパスをconfig/resque.yml

# 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 をご覧ください。

ユニコーンの使い方

GitLab 12.9では、Unicornに代わってPumaがソースからのインストール用のデフォルトのウェブサーバーとして採用されました。 Unicornに戻したい場合は、以下の手順に従ってください:

  1. GitLab のセットアップを完了し、GitLab を起動します。
  2. 付属のUnicorn設定ファイルのサンプルをコピーしてください:

    cd /home/git/gitlab
    
    # Copy config file for the web server
    sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
    
  3. システムのinit.d スクリプトを編集し、USE_WEB_SERVER="unicorn"を設定します。/etc/default/gitlabがある場合は、代わりにそれを編集してください。
  4. GitLabを再起動します。

Sidekiq Clusterの代わりにSidekiqを使用します。

GitLab 12.10では、SourceインストールはSidekiqプロセスの管理にbin/sidekiq-cluster 。Sidekiqを直接使用することは14.0までサポートされます。もし問題が発生した場合はご連絡ください:

  1. システムのinit.d スクリプトを編集して、SIDEKIQ_WORKERS フラグを削除してください。/etc/default/gitlabがある場合は、代わりに編集してください。
  2. GitLabを再起動します。
  3. 問題を説明するイシューを作成してください。

トラブルシューティング

“空のリポジトリをクローンしたようですね”

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'