GitLabインストール 既存ApacheにNginx追加

GitLabインストール&Apache共存設定をまとめます。

GitLab(ギットラブ)は、分散型バージョン管理システム「Git」をベースとした、ソフトウェア開発の全工程を支援するDevSecOpsプラットフォームです。ソースコードの管理だけでなく、計画から開発、セキュリティ、デプロイ、運用までのライフサイクルを一元管理できる点が大きな特徴です。 

  • 統合されたDevSecOps環境: CI/CD(継続的インテグレーション/継続的デプロイ)、課題管理(イシュー)、セキュリティスキャン、モニタリングなどの機能が、単一のアプリケーションとして統合されています。
  • 柔軟な導入形態GitLab.com で提供されるクラウド版(SaaS)のほか、自社サーバーにインストールして運用するセルフホスト版があり、社内統制やセキュリティを重視する企業に多く選ばれています。
  • AIによる支援: 「GitLab Duo」などの生成AI機能を搭載し、コードの自動補完や脆弱性の説明、生産性の向上をサポートしています。
  • ライセンス: オープンソースベースの無料版(Community Edition)と、高度なセキュリティ機能やサポートを含む有料のエンタープライズ版(Ultimate/Premium)が用意されています。 

GitHubとの主な違い

GitHubがオープンソースコミュニティや外部とのコラボレーションに強いのに対し、GitLabは企業のインフラ内での統合的な開発プロセス管理(CI/CDの高度なカスタマイズなど)に適しているとされます。 

特徴 GitHubGitLab
主な利用者個人、オープンソース企業、開発チーム
得意分野コラボレーション、普及率統合CI/CD、DevOpsの自動化
設置方法クラウド中心(SaaS)セルフホスト(自前運用)に強い

1. 依存パッケージとリポジトリ準備

sudo dnf install -y curl policycoreutils openssh-server perl mod_ssl
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

2. GitLabのインストール

sudo EXTERNAL_URL="https://gitlab.aquila.jp" dnf install -y gitlab-ee

3. GitLab内部設定 (/etc/gitlab/gitlab.rb)

編集後、sudo gitlab-ctl reconfigure を実行。

  • external_url 'https://gitlab.aquila.jp'
  • nginx['listen_port'] = 8081
  • nginx['listen_https'] = false
  • nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "https", "X-Forwarded-Ssl" => "on" }

4. Apacheリバースプロキシ設定

<VirtualHost *:80>
    ServerName gitlab.aquila.jp
    DocumentRoot /var/www/gitlab
    # Certbot認証用
    ProxyPass /.well-known/acme-challenge !
</VirtualHost>

証明書取得前(ポート80):

<VirtualHost *:443>
    ServerName gitlab.aquila.jp
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/gitlab.aquila.jp/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/gitlab.aquila.jp/privkey.pem

    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8081/
    ProxyPassReverse / http://127.0.0.1:8081/
    ProxyTimeout 300
    LimitRequestBody 0
</VirtualHost>

証明書取得後(ポート443):

5. OS側の仕上げ(重要)

Apacheが内部ポートに通信できるように許可を出します。

sudo setsebool -P httpd_can_network_connect 1

6.サービスの起動・停止

 sudo gitlab-ctl start / stop

GitLabアクセス情報

  • URL: https://gitlab.aquila.jp/
  • ID: root
  • PW: sudo cat /etc/gitlab/initial_root_password で確認

GitLabのメモリ節約

sudo vi /etc/gitlab/gitlab.rb
puma['worker_processes'] = 2
sidekiq['concurrency'] = 5
prometheus_monitoring['enable'] = false

監視ツールのPrometheusを止める(もし不要なら)

sudo gitlab-ctl reconfigure