Apacheでホストされている既存のウェブサイト(mywebsite.comなど)があるCentOS 7サーバーがあります。 GitLabをnginxの代わりにApacheで管理し、私のウェブサイトの1つ(mywebsite.com/gitlabなど)の実際のURLを取得したいと思います。 GitLabの包括的なパッケージでこれは可能ですか?
編集する:
私の設定に関する追加情報です。これは、GitLabのインストールに関して仮想ホストと一致しない要求を解決するための情報を含める必要があるデフォルトのApache設定ファイルです。このファイルは触れませんでした。
/etc/httpd/conf/httpd.conf
リンクを貼り付ける
以下は、GitLabを使用してApacheが仮想ホストを検証できるように追加した設定ファイルです(まだ相対URL仮想ホストが利用可能かどうかを確認しようとしています)。このガイドApache 2.4およびGitLab Omnibusの場合(基本レシピは次のとおりです。)これ)。
/etc/httpd/conf.d/gitlab.conf
<VirtualHost *:80>
ServerName mywebsite.com/gitlab
ServerSignature Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Location />
Require all granted
ProxyPassReverse http://127.0.0.1:8181
ProxyPassReverse http://mywebsite.com/gitlab
</Location>
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} ^/uploads/.*
RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
ErrorDocument 404 /404.html
ErrorDocument 422 /422.html
ErrorDocument 500 /500.html
ErrorDocument 502 /502.html
ErrorDocument 503 /503.html
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common_forwarded
ErrorLog /var/log/httpd/mywebsite_error.log
CustomLog /var/log/httpd/mywebsite_forwarded.log common_forwarded
CustomLog /var/log/httpd/mywebsite_access.log combined env=!dontlog
CustomLog /var/log/httpd/mywebsite.log combined
</VirtualHost>
最後に、GitLab Omnibusパッケージの構成は次のとおりです。 gitlabのデフォルトポートを変更し、nginxを無効にし、ApacheをWebサーバーの外部ユーザーとして設定しました。外部ユーザーに関する限り、私のコンピューターにそのようなユーザーがいないため、www-dataを使用しません(www-dataを使用しようとすると、gitlab-ctlの再構成にもエラーが発生します)。私はhttpd.confの "User apache"ディレクティブのためにapacheが正しいと仮定していますが、わかりません。
/etc/gitlab/gitlab.rb
external_url 'http://mywebsite.com/gitlab'
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
web_server['external_users'] = ['apache']
nginx['enable'] = false
このような設定では、私のウェブサイトは機能しません。すべてのページに503 GitLabエラーが表示されます。 "申し訳ありませんが、現在GitLabは利用できません。ページを更新または戻って操作をやり直してください。"; ? gitlab.confファイルを削除してhttpdを再ロードすると、通常のWebサイトが正しく機能します。また、Apacheを無効にしてnginxを使用して相対URLのデフォルト設定としてGitLabを実行すると、すべてがうまく機能します。相対URLとnginxの代わりにapacheを一緒に使用することはできません。
答え1
このソリューションは、GitLab Omnibusパッケージを介してApache 2.4.6およびGitLab 11.9.4がインストールされているCentOS 7 Webサーバーで実行されます。サーバーはhttpで実行されますが、httpsに簡単に転送できるはずです。
Apacheを新しくインストールして起動し、ドメイン内の1つのホストのみを管理したいと思います。mywebsite.com(仮想ホスティングなし)。また、GitLab Omnibusパッケージを新しくインストールする必要があります(公式ガイド)。完全性のためにここにhttpd.confファイルはApacheのデフォルト設定ファイルです。これには、ポート 80 でリッスンし、すべての要求をプライマリドメインに転送する手順が含まれています。mywebsite.comディレクティブで指定されたディレクトリに移動します。DocumentRoot
つまり/var/www/html
、私の場合、そのディレクトリにWordPressインスタンスが含まれています。
/etc/httpd/conf/httpd.conf
Pastebinのhttpd.conf
これで、GitLab設定を編集する前に、sudo gitlab-ctl stop
GitLabが相対URLをプライマリドメインのサブディレクトリとして処理できるようになります。mywebsite.com、最初に行うことは、相対URLにGitLabをインストールすることです。external_url
ディレクティブを変更する必要があります。gitlab.rbパラメータに設定します'http://mywebsite.com/gitlab'
。次に、nginx(GitLab OmnibusにバンドルされているデフォルトのWebサーバー)を無効にする必要があります。 Apacheはhttpのみを使用できるため、Webサーバーの外部ユーザーを次に設定する必要がありますapache
(www-data
ほとんどのディストリビューションにはApacheの外部ユーザーがありますが、apache
CentOS 7にはありません)。したがって、デフォルトのGitLabは以下でtcpをリッスンするように設定する必要があり、デフォルトのGitLabはポート8181をリッスンすると仮定します。このポートも設定する必要があります。 GitLabのインストールを簡単にするために、パイプラインのCI / CD機能も無効にしましたが(directivesを使用gitlab_rails
)、これはユーザーのニーズによって異なります。
詳細については、公式GitLab Omnibusのドキュメントを参照してください。相対URLの設定そしてバンドルされていない Web サーバーの使用。 GitLabの最終設定ファイルは次のとおりです。
/etc/gitlab/gitlab.rb
external_url 'http://mywebsite.com/gitlab'
gitlab_workhorse['listen_network'] = "tcp"
gitlab_workhorse['listen_addr'] = "127.0.0.1:8181"
web_server['external_users'] = ['apache']
nginx['enable'] = false
gitlab_rails['gitlab_default_projects_features_builds'] = false
これで1つを実行しますsudo gitlab-ctl reconfigure
。 Apacheの設定に戻りましょう。 GitLabが設定されましたが、すべてのリクエストを次にリダイレクトする必要があります。http://mywebsite.com/gitlab実際のGitLabサーバーに。私が見つけたほとんどのソリューションは、仮想ホストでサブフォルダを使用することをお勧めしますが、GitLabでは動作しないようです。解決策はLocation
ディレクティブを使用することです。デフォルトのApache設定ファイルにこのような設定を追加できます。httpd.confまたは、新しい.confファイルを作成して挿入します。/etc/httpd/conf.d/したがって、自動的に含まれます(ただし、httpd.conf指示が含まれていますIncludeOptional conf.d/*.conf
)。構成は次のとおりです。
/etc/httpd/conf.d/gitlab.conf
Header add Strict-Transport-Security: "max-age=15768000;includeSubdomains"
<Location /gitlab>
Require all granted
#Allow forwarding to gitlab-workhorse
ProxyPassReverse http://127.0.0.1:8181
ProxyPassReverse http://mywebsite.com/gitlab
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} ^/uploads/.*
RewriteRule .* http://127.0.0.1:8181%{REQUEST_URI} [P,QSA,NE]
ErrorDocument 404 /404.html
ErrorDocument 422 /422.html
ErrorDocument 500 /500.html
ErrorDocument 502 /502.html
ErrorDocument 503 /503.html
</Location>
</VirtualHost>
<Location /gitlab>
GitLabにアクセスする相対URLに基づいてパラメータを変更する必要があります。
これで設定が完了しましたので、実行してsystemctl reload httpd
Apacheを再設定し、.restartを使用してGitLabを再起動してくださいsudo gitlab-ctl restart
。もう1つ:Apacheがhttpソケットを使用できるようにする必要がありますsudo setsebool -P httpd_can_network_connect=1
。