https://about.gitlab.com/downloads/ のデフォルトパッケージを使用してUbuntu 12.04でGitlabを設定しました
{明確にするために編集}
私は、ポート8888にインストールされたパッケージをプロキシしてnginxサーバーを実行するようにApacheを設定しました(そう思いました)。
Apacheがすでにインストールされているので、localhost:8888でnginxを実行する必要があります。問題は、すべての画像(アバターなど)がhttp://localhost:8888
から提供されるようになり、Gitlabが提供するすべてのチェックアウトURLもローカルホストである-ドメイン名を使用する代わりにです。
そのURLを使用するように/etc/gitlab/gitlab.rb
を変更すると、Gitlabが機能しなくなり、503が返されます。
それが実際にlocalhostで実行されている場合でも、GitlabにどのURLを世界に提示するかを伝える方法はありますか?
/etc/gitlab/gitlab.rb
は次のようになります:
# Change the external_url to the address your users will type in their browser
external_url 'http://my.local.domain'
redis['port'] = 6379
postgresql['port'] = 2345
Unicorn['port'] = 3456
/opt/gitlab/embedded/conf/nginx.conf
は次のようになります:
server {
listen localhost:8888;
server_name my.local.domain;
[更新]
External_urlとしてlocalhost:8888を指定しない場合、nginxは引き続き間違ったポートでリッスンしているようです。 /var/log/gitlab/nginx/error.log
で見つけました
2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/08/19 14:29:58 [emerg] 2526#0: still could not bind()
Apacheのセットアップは次のようになります。
<VirtualHost *:80>
ServerName my.local.domain
ServerSignature Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Location />
ProxyPass http://localhost:8888/
ProxyPassReverse http://127.0.0.1:8888
ProxyPassReverse http://my.local.domain
</Location>
</VirtualHost>
Gitlabがlocalhost:8888でリッスンしている場合は、すべてプロキシでプロキシされているようです。localhost:8888ではなく、Gitlabが正しいURLの表示を開始する必要があるだけです。
Gitlabのgithub にあるドキュメントに従って:
# Copy the example GitLab config
Sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
# Make sure to change "localhost" to the fully-qualified domain name of your
# Host serving GitLab where necessary
Apacheが適切なプロキシヘッダーを送信していることも確認してください。
この場合、Apacheをプロキシに使用しているため、nginxの設定は関係ありません。削除するか、オフにしてください。
他の多くの投稿と巧妙なconf編集の間で石畳になっていることについて、誰もが明確な答えを持っていないのは非常に残念です。無駄にした2時間を節約するために、皆さんのためにすべてを1か所にまとめました。
私のセットアップは、多数のサイトをホストし、HTTPSをホストするApacheです。これは、gitlabを指すリバースプロキシとして構成しました。したがって、Apacheの安全なURLを指すように、gitlabが電子メールで生成する私のURLが必要です。これを行うには...
CentOS 7では/opt/gitlab/embedded/cookbooks/gitlab/libraries/gitlab.rbにあります
と行を変更...
external_url nil
に
external_url "http://<yoururl>:81"
Nginxはポート81でホストしますが、電子メールで送信されるURLは「http://:81」のようになり、安全なApacheプロキシではありません。これを行うには...
CentOS 7では、これは/var/opt/gitlab/gitlab-Rails/etc/gitlab.ymlにあります
と行を変更...
## Web server settings (note: Host is the FQDN, do not include http://)
Host: <yoururl>
port: 81
https: false
に
## Web server settings (note: Host is the FQDN, do not include http://)
Host: <yoururl>
port: 443
https: true
次に、nginxが適切に起動することを確認します。必要に応じて、gitlab-ctl tail nginxを実行して、出力されるエラーを確認します。
警告:gitlab-ctl reconfigureを再度実行する場合は、この編集を再度行う必要があります。私は高低を検索しましたが、これをうまく再構成する方法でこれを行う方法は見つかりませんでした。これは、誰かがgitlabに追加を要求できる機能リクエストであり、かなりマイナーなものでなければなりません。オプションの変数「actual_url」。設定すると、生成されたURLに使用されます。
私は最後にnginxを無効にすることで構成されるこのドキュメントをたどり、Apacheインストールプロキシgitlabを許可しました。これは私にとってより理にかなっており、nginxプロキシを介してプロキシしようとすると、いくつかのアセットが:8081からまだロードされているという問題がありました。
http://ryansechrest.com/2015/08/use-Apache-instead-of-built-in-nginx-in-gitlab-ce/
vi /etc/gitlab/gitlab.rb
外部URLを設定する
external_url 'http://mygitlab.web.site/'
Wwwユーザーとグループを変更する
web_server['username'] = 'www-data'
web_server['group'] = 'www-data'
Nginxを無効にする
nginx['enable'] = false
Gitサーバーのポートを設定します(ファイルの最後に)
gitlab_git_http_server['listen_network'] = "tcp"
gitlab_git_http_server['listen_addr'] = "localhost:8282"
Gitlabを再構成する
gitlab-ctl reconfigure
仮想ホスト構成を変更する
<VirtualHost *:80>
ServerName git.domain.com
DocumentRoot /opt/gitlab/embedded/service/gitlab-Rails/public
ProxyPreserveHost On
AllowEncodedSlashes Off
<Location />
Order deny,allow
Allow from all
ProxyPassReverse http://127.0.0.1:8080
ProxyPassReverse http://git.domain.com/
</Location>
RewriteEngine on
#Don't escape encoded characters in api requests
RewriteCond %{REQUEST_URI} ^/api/v3/.*
RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA,NE]
#Forward all requests to gitlab-workhorse except existing files like error documents
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} ^/uploads/.*
RewriteRule .* http://127.0.0.1:8282%{REQUEST_URI} [P,QSA]
</VirtualHost>
Gitlabを再起動します
gitlab-ctl restart
私はこの問題にも遭遇しましたが、Apacheプロキシが原因ではありません。私のインストールは、ホストコンピューターから仮想マシンへの単純なポート転送でした。このソリューションは、ポート転送とプロキシのすべての方法で機能します。 OS間で異なる可能性があるのは、Gitlab構成ファイルの場所だけです。 Gitlab 7.8.4でDebian 7.8を使用しています
短い答え:
/etc/gitlab/gitlab.rb
で次の変更を行います:
external_url
を'http://gitlab.example.com/'
から'http://gitlab.example.com:8080'
に変更しますnginx['custom_gitlab_server_config'] = "listen *:80;"
を追加最終メモ:-GitlabのNginxは、「内部」マシンの:8080で実行できません(プロキシ/ポートフォワードが指すもの)
長い答え:
これには、私のセットアップとソリューションを見つけるプロセスに関する背景情報が含まれます
私のセットアップ:
computer.local
:ホストコンピュータ
computer-vm.local:80
に転送しますcomputer-vm.local:22
に転送しますcomputer-vm.local
:Gitlabおよびその他のソフトウェアがインストールされているDebian仮想マシン。これはVM=ブリッジネットワークを使用しないため、外部からアクセスできるポートはすべてホストコンピュータから転送する必要があります。
注:Sudo gitlab-ctl reconfigure
を変更するたびに/etc/gitlab/gitlab.rb
を実行しました
そのダウンロードページ にある標準のインストール手順を使用して、Gitlabインスタンスにcomputer.local:8080
でアクセスできました。アカウントの作成に進みましたが、送信された電子メールリンクはURL http://computer-vm.local/users/confirmation?confirmation_token=...
を使用しており、ホストマシン以外のコンピューターからはアクセスできませんでした。 external_url
の/etc/gitlab/gitlab.rb
をhttp://computer-vm.local
からhttp://computer.local:8080
に変更すると、Gitlabに完全にアクセスできなくなります。ホストからhttp://computer-vm.local:8080
に移動すると、「502:Gitlabが応答していません」というエラーが発生しました。調査の結果、ユニコーンはlocalhost:8080
をリッスンしようとしていたようです。そのため、NginxとUnicornが同じポートで争っていたため、Nginxが戦いに勝利しましたが、Gitlabは役に立たなくなりました。 external_url
をhttp://computer.local:8081
に変更すると、http://computer-vm.local:8081
からアクセスできるGitlabでの502エラーが解決されました。しかし、それは唯一の問題です...
変更したくないポート転送のため、GitlabにそのURLを'http://computer.local:8080'
としてアドバタイズする必要がありました。そのため、external_url
はhttp://computer.local:8080
に戻りました。 NginxオプションについてのGitlabドキュメント here を見ると、完全なGitlab外部URL(以前のバージョンのオプション)を変更せずにNginxポートを変更する方法についての言及はありません。ただし、Gitlabでは、ユーザーがnginx['custom_gitlab_server_config']
オプションを介してNginxに任意のオプションを渡すことができます。以下を/etc/gitlab/gitlab.rb
ファイルに追加しました:
nginx['custom_gitlab_server_config'] = "listen *:80;"
Gitlabを再構成した後、出来上がり! http://computer.local:8080
からアクセスでき、パスワードリセットリンクを送信するとき、およびgit clone
リンクを表示するときに正しいドメインが含まれます。
また、ポート転送の状況により、gitlab_Rails['gitlab_Shell_ssh_port']
を22
から2222
に変更する必要がありましたが、必ずしもそうする必要はありません。
私の最後の/etc/gitlab/gitlab.rb
:
external_url "computer.local:8080"
gitlab_Rails['gitlab_Shell_ssh_port'] = 2222
nginx['custom_gitlab_server_config'] = "listen *:80;"
私は同じ問題を抱えていました
external_url 'http://my.local.domain'
に
external_url 'http://my.local.domain:8888'
gitlab構成を再生成すると、nginx構成が修正されます。 Apacheプロキシは、8888が再び取り除かれるようにリンクを修正する必要があります。
これが役立つことを願って、私はgitlabを既存の環境から削除し、既存のセットアップでは(私の意見では)ナイスを再生しないので、gitlabのクリーンなvmを起動します。
デフォルトのポート番号を変更する非常に簡単な方法
run- gitlab-ctl stop
centosまたはlinuxでファイルを編集します:-/var/opt/gitlab/nginx/conf/gitlab-http.conf
リッスン変更*:80;例:90
その後
コマンドを実行しないでください-gitlab-ctl reconfigure
Gitlab-ctlを再構成する場合、デフォルトでgitlabを構成し、変更を削除します。
したがって、run- gitlab-ctl startのみ
これを見つけた他の人のために、サポートするために:
このサンプルのProxyPass構成を考えます。
ProxyPass /gitlab http://localhost:81/gitlab
ProxyPassReverse /gitlab http://localhost:81/gitlab
gitlab.rbの2つのパラメーターを編集して再構成します。手順:
/etc/gitlab/gitlab.rbを編集します。
変化する: external_url 'http://my.local.domain/gitlab'
宛先:external_url 'http://my.local.domain/'
/etc/gitlab/gitlab.rbを編集します
変化する: # nginx['listen_port'] = nil
宛先:nginx['listen_port'] = 81
コマンドを実行:gitlab-ctl reconfigure
できました。