- Omnibusパッケージのインストールを考える
- インストールするバージョンの選択
- GitLab ディレクトリ構造
- 概要
- 1. パッケージと依存関係
- 2. Ruby
- 3. 行く
- 4. ノード
- 5. システム利用者
- 6. データベース
- 7. Redis
-
8. GitLab
- ソースのクローン
- 設定
- GitLab DB の設定
- 宝石のインストール
- GitLab Shellのインストール
- GitLab Workhorseのインストール
- GitLab-Elasticsearch-indexerをEnterprise Editionにインストールします。
- GitLab Pagesのインストール
- Gitalyのインストール
- Gitalyスタート
- データベースの初期化と高度な機能の有効化
- 安全なシークレット.yml
- 初期スクリプトのインストール
- Logrotateの設定
- 申請状況の確認
- GetText PO ファイルのコンパイル
- 資産のコンパイル
- GitLab インスタンスを起動します。
- 9. NGINX
- インストール後
- 高度なセットアップのヒント
- トラブルシューティング
ソースからのインストール
これは、ソースファイルを使って本番 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リポジトリがメンテナーされます。この領域には、プロジェクトの重要なデータが含まれます。バックアップをとっておきましょう。
config/gitlab.yml
、GitLab Shellのconfig.yml
。より詳細な概要については、GitLabアーキテクチャドキュメントをご覧ください。
概要
GitLabのインストールは、以下のコンポーネントのセットアップから構成されます:
1. パッケージと依存関係
sudo
システムが最新であることを確認してインストールしてください。
# run as root!
apt-get update -y
apt-get upgrade -y
apt-get install sudo -y
# 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
正しいバージョンの 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のサポートが終了しました。
RVM、rbenv、chrubyのような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. データベース
-
データベースパッケージをインストールします:
sudo apt-get install -y postgresql postgresql-client libpq-dev postgresql-contrib
-
PostgreSQLサービスを起動し、サービスが実行されていることを確認してください:
sudo service postgresql start sudo service postgresql status
-
GitLab 用のデータベースユーザーを作成します:
sudo -u postgres psql -d template1 -c "CREATE USER git CREATEDB;"
-
pg_trgm
エクステンションを作成します(GitLab 8.6+ で必要):sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
-
GitLab productionデータベースを作成し、データベース上のすべての権限を付与します:
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)
-
データベースセッションを終了します:
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 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
宝石のインストール
bundle install -jN
(N
はプロセッサコアの数です) を呼び出すことで、gemsの並列インストールが可能になり、完了までの時間が大幅に短縮されました (~60%高速化)。nproc
でコア数を確認してください。 詳細については、この投稿を参照してください。bundle
(bundle -v
)を実行してください:
sudo -u git -H bundle install --deployment --without development test mysql aws 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
/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のドキュメントをご覧ください。
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:'
GITLAB_ROOT_PASSWORD
とGITLAB_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
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 インスタンスを起動します。
sudo service gitlab start
# or
sudo /etc/init.d/gitlab restart
9. 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
また、特に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 okay
とtest 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のインストール成功です!
SANITIZE=true
環境変数をgitlab:check
に指定します。初期ログイン
ウェブブラウザで YOUR_SERVER にアクセスし、GitLab に初めてログインします。
セットアップ中に root パスワードを入力しなかった場合、パスワード再設定画面にリダイレクトされ、初期管理者アカウントのパスワードを入力します。 必要なパスワードを入力すると、ログイン画面に戻ります。
デフォルトアカウントのユーザー名はrootです。 先ほど作成したパスワードを入力してログインします。 ログイン後、必要に応じてユーザー名を変更することができます。
お楽しみください!
sudo service gitlab start
、sudo service gitlab stop
、GitLabを起動したり停止したりすることができます。
高度なセットアップのヒント
相対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
-
GitLab Shell の
config.yml
でself_signed_cert
をtrue
に設定します。
メールでの返信を有効にする
この設定方法の詳細については、「電子メールによる返信」のドキュメントを参照してください。
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に戻したい場合は、以下の手順に従ってください:
- GitLab のセットアップを完了し、GitLab を起動します。
-
付属のUnicorn設定ファイルのサンプルをコピーしてください:
cd /home/git/gitlab # Copy config file for the web server sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
- システムの
init.d
スクリプトを編集し、USE_WEB_SERVER="unicorn"
を設定します。/etc/default/gitlab
がある場合は、代わりにそれを編集してください。 - GitLabを再起動します。
Sidekiq Clusterの代わりにSidekiqを使用します。
GitLab 12.10では、SourceインストールはSidekiqプロセスの管理にbin/sidekiq-cluster
。Sidekiqを直接使用することは14.0までサポートされます。もし問題が発生した場合はご連絡ください:
- システムの
init.d
スクリプトを編集して、SIDEKIQ_WORKERS
フラグを削除してください。/etc/default/gitlab
がある場合は、代わりに編集してください。 - GitLabを再起動します。
- 問題を説明するイシューを作成してください。
トラブルシューティング
“空のリポジトリをクローンしたようですね”
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'