これらについて
しかし、Omnibus は 80 をリッスンし、Apache2 も Nginx も使用していないようです [ , したがって ...]。
および @stdob コメント:
オムニバスはnginxをWebサーバーとして使用しませんでしたか??? –
私が答えたもの
システムにnginxパッケージがインストールされていないためではないと思います...
実際には
Gitlabの公式ドキュメントから:
デフォルトでは、omnibus-gitlab は、Nginx がバンドルされた GitLab をインストールします。
あ、はい!
オムニバスパッケージは実際にNginxを使用しています!
しかし、それはバンドルされており、ホスト OS からの依存関係としてインストールする必要がない理由を説明しています。
したがって、はい!Nginx は、私の PHP アプリを提供し、他の 2 つのノード アプリをリバース プロキシするために使用できますし、使用する必要があります。
それから今
Omnibus-gitlab ではgitlab-www
、同じ名前のグループに属するユーザーを介して Web サーバーにアクセスできます。GitLab への外部 Web サーバー アクセスを許可するには、外部 Web サーバー ユーザーをgitlab-www
グループに追加する必要があります。
Apache や既存の Nginx インストールなどの別の Web サーバーを使用するには、次の手順を実行する必要があります。
で指定して、バンドルされているNginxを無効にします/etc/gitlab/gitlab.rb
nginx['enable'] = false
# For GitLab CI, use the following:
ci_nginx['enable'] = false
バンドルされていない Web サーバー ユーザーのユーザー名を確認します。デフォルトでomnibus-gitlab
は、外部 Web サーバー ユーザーのデフォルト設定はありません。構成で外部 Web サーバーのユーザー名を指定する必要があります。たとえば、Web サーバーのユーザーがwww-data
. /etc/gitlab/gitlab.rb
セットで
web_server['external_users'] = ['www-data']
この設定は配列であるため、複数のユーザーを gitlab-www グループに追加するように指定できます。
実行sudo gitlab-ctl reconfigure
して変更を有効にします。
NGINX リッスン アドレスの設定
デフォルトでは、NGINX はすべてのローカル IPv4 アドレスで着信接続を受け入れます。でアドレスのリストを変更できます/etc/gitlab/gitlab.rb
。
nginx['listen_addresses'] = ["0.0.0.0", "[::]"] # listen on all IPv4 and IPv6 addresses
GitLab CI の場合は、ci_nginx['listen_addresses']
設定を使用します。
NGINX リッスン ポートの設定
デフォルトでは、NGINX は指定されたポートでリッスンするexternal_url
か、暗黙的に正しいポート (HTTP の場合は 80、HTTPS の場合は 443) を使用します。リバース プロキシの背後で GitLab を実行している場合は、リッスン ポートを別のものにオーバーライドすることをお勧めします。たとえば、ポート 8080 を使用するには:
nginx['listen_port'] = 8080
同様に、GitLab CI の場合:
ci_nginx['listen_port'] = 8081
プロキシ SSL のサポート
デフォルトでは、NGINX は、external_url
含まれている場合に SSL を使用するかどうかを自動検出しますhttps://
。リバース プロキシの背後で GitLab を実行している場合external_url
、 を HTTPS アドレスとして保持し、HTTP 経由で内部的に GitLab NGINX と通信したい場合があります。これを行うには、次のlisten_https
オプションを使用して HTTPS を無効にできます。
nginx['listen_https'] = false
同様に、GitLab CI の場合:
ci_nginx['listen_https'] = false
Host
特定のヘッダー ( 、X-Forwarded-Ssl
、X-Forwarded-For
などX-Forwarded-Port
) を GitLabに転送するには、リバース プロキシを構成する必要がある場合があることに注意してください。
この手順を忘れると、不適切なリダイレクトやエラー (「422 Unprocessable Entity」、「CSRF トークンの信頼性を検証できません」など) が表示される場合があります。詳細については、次を参照してください。
さらに進むには、https: //gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#using-a-non-bundled-web-server の公式ドキュメントに従うことができます
gitlab 仮想ホストの構成
Phusion Passengerのインストール
OS にグローバルに Ruby (バンドルされた Ruby を使用してオムニバスで実行される gitlab) をインストールする必要があります。
$ sudo apt-get update
$ sudo apt-get install ruby
$ sudo gem install passenger
パッセンジャー モジュールを使用して nginx を再コンパイルする
たとえば、 nginxApache2
はオンザフライでバイナリ モジュールをプラグインすることはできません。追加する新しいプラグインごとに再コンパイルする必要があります。
Phusion パッセンジャー開発者チームは、「パッセンジャーのバンドルされた nginx バージョン」: パッセンジャー プラグインでコンパイルされた nginx ビンを提供するために一生懸命働きました。
それでは、それを使用しましょう:
要件TCP
:ポート11371
(ポート)を開く必要がありますAPT key
。
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
$ sudo apt-get install apt-transport-https ca-certificates
作成
passenger.list
$ sudo nano /etc/apt/sources.list.d/passenger.list
これらのリーニュで
# Ubuntu 14.04
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main
ubuntu バージョンに適したリポジトリを使用してください。たとえば、Ubuntu 15.04 の場合: deb https://oss-binaries.phusionpassenger.com/apt/passengervivid main
編集権限:
$ sudo chown root: /etc/apt/sources.list.d/passenger.list
$ sudo chmod 600 /etc/apt/sources.list.d/passenger.list
パッケージリストを更新しています:
$ sudo apt-get update
として許可するunattended-upgrades
$ sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
ファイルの上にあるこの構成ブロックを検索または作成します。
// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
// you may have some instructions here
};
以下を追加します。
// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
// you may have some instructions here
// To check "Origin:" and "Suite:", you could use e.g.:
// grep "Origin\|Suite" /var/lib/apt/lists/oss-binaries.phusionpassenger.com*
"Phusion:stable";
};
今すぐ(再)インストールnginx-extra
してpassenger
:
$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak_"$(date +%Y-%m-%d_%H:%M)"
$ sudo apt-get install nginx-extras passenger
構成する
ファイル内のディレクティブpassenger_root
とpassenger_ruby
ディレクティブのコメントを外します。/etc/nginx/nginx.conf
$ sudo nano /etc/nginx/nginx.conf
... 次のようなものを取得します。
##
# Phusion Passenger config
##
# Uncomment it if you installed passenger or passenger-enterprise
##
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/bin/passenger_free_ruby;
nginx サイト構成 (仮想ホスト conf) を作成します。
$ nano /etc/nginx/sites-available/gitlab.conf
server {
listen *:80;
server_name gitlab.mycompany.com;
server_tokens off;
root /opt/gitlab/embedded/service/gitlab-rails/public;
client_max_body_size 250m;
access_log /var/log/gitlab/nginx/gitlab_access.log;
error_log /var/log/gitlab/nginx/gitlab_error.log;
# Ensure Passenger uses the bundled Ruby version
passenger_ruby /opt/gitlab/embedded/bin/ruby;
# Correct the $PATH variable to included packaged executables
passenger_env_var PATH "/opt/gitlab/bin:/opt/gitlab/embedded/bin:/usr/local/bin:/usr/bin:/bin";
# Make sure Passenger runs as the correct user and group to
# prevent permission issues
passenger_user git;
passenger_group git;
# Enable Passenger & keep at least one instance running at all times
passenger_enabled on;
passenger_min_instances 1;
error_page 502 /502.html;
}
これで有効にできます:
$ sudo ln -s /etc/nginx/sites-available/gitlab.cong /etc/nginx/sites-enabled/
a2ensite
nginx にネイティブに付属する同等のものはないため、 を使用しますがln
、必要に応じて、github にプロジェクトがあり
ます。
これは、Apache 2.2/2.4 でサイトを仮想ホストとして有効または無効にするために、nginx 用に Debian a2ensite および a2dissite を複製するシェル (Bash) スクリプトです。
完了しました:-)。最後に、nginx を再起動します。
$ sudo service nginx restart
この新しい構成では、gitlab の隣で他の仮想ホストを実行して、必要なものを提供できます。
で新しい構成を作成するだけ/etc/nginx/sites-available
です。
私の場合、同じホストでこのように実行してサービスを提供しました。
たとえば、次のように提供しnpm.mycompany.com
ます。
ログ用のディレクトリを作成します。
$ sudo mkdir -p /var/log/private-npm/nginx/
そして、新しい vhost 構成ファイルに入力します。
$ sudo nano /etc/nginx/sites-available/npm.conf
この構成で
server {
listen *:80;
server_name npm.mycompany.com
client_max_body_size 5m;
access_log /var/log/private-npm/nginx/npm_access.log;
error_log /var/log/private-npm/nginx/npm_error.log;
location / {
proxy_pass http://localhost:8082;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
次に、有効にして再起動します。
$ sudo ln -s /etc/nginx/sites-available/npm.conf /etc/nginx/sites-enabled/
$ sudo service nginx restart