Çalışan bir GitLab kurulumunun URL'sini nasıl değiştiririz?


89

Kurdum ve GitLab v6.0.1'in varsayılan kurulumunu çalıştırıyoruz (biz de yükseltmek üzereyiz). Bu bir "Üretim" kurulumuydu ve bu kılavuzu harfiyen takip ederek:

https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md

Şimdi, çalışan bir kurulumun URL'sini güvenli bir şekilde nasıl değiştirebiliriz?

Görünüşe göre URL’miz çok uzun ve yeni bir URL bulduk. Bir dizi yapılandırma dosyasını düzenledim ve "Uygulama Durum Kontrolleri" raporu her şey yolunda. İşlerin hala çalıştığından emin olmak için sunucuyu yeniden başlattım.

Orijinal SSL üzerinden Nginx'e gayet iyi erişebiliyorum. GitLab sitesine göz atabilirim, bir depo oluşturabilirim, vb. Çatallayabilir ve gayet iyi işleyebilirim.

Her şey yolunda görünüyor; ancak bu benim için yerel bir ortam olmadığından, bir GitLab sitesini yeniden adlandırmak için her şeyi yaptığımı iki kez kontrol etmek istedim.

Düzenlediğim dosyalar:

/etc/hosts
  127.0.0.1  localhost
  10.0.0.10  wake.domain.com    wake
  10.0.0.10  git.domain.com     git

/home/git/gitlab/config/gitlab.yml
  production: &base
    gitlab:
      host: git.domain.com

/home/git/gitlab-shell/config.yml
  gitlab_url: "https://git.domain.com"
  ^- yes, we are on SSL and that is working, even on a new URL

/etc/nginx/sites-available/gitlab
  server {
    server_name git.domain.com

9
Omnibus yükleme kullanıcıları: İşlem farklıdır .
Jonathon Reinhart

Yanıtlar:


29

Her şeyi doğru yaptın!

E-posta sunucusunun da aynı sunucu olmasına bağlı olarak e-posta yapılandırmasını da değiştirebilirsiniz. E-posta yapılandırması GitLab tarafından gönderilen postalar ve ayrıca yönetici-e-postası için gitlab.yml içindedir.


Bunu merak ediyordum, çünkü Gönderen e-postasını (ve diğer e-postayı) farklı bir etki alanındaki global geliştirici grubu e-posta takma adımızdan gönderilecek şekilde ayarladım. Gibi: devs@domain-2.com. Bunun nedeni, geliştiricilerin Pull istekleriyle veya diğer genel e-postalarla ilgili yorum yapmak için Yanıtla'ya basmasına izin vermektir.
eduncan911

2
GitLab yukarıda bu değişiklikleri yaptığımdan beri iyi çalıştığı için bunu bir cevap olarak işaretlemek için geri döndüm.
eduncan911

159

GitLab Omnibus

Omnibus yüklemesi için durum biraz farklıdır.

Doğru bir Omnibus yüklemek içinde yer:

/etc/gitlab/gitlab.rb
    external_url 'http://gitlab.example.com'

Son olarak, uygulamanız gerekecek sudo gitlab-ctl reconfigureve sudo gitlab-ctl restartbu nedenle değişiklikler geçerli olacaktır.


Yanlış yerlerde değişiklik yapıyordum ve onlar uçup gidiyordu.

Yanlış yollar şunlardır:

/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
/var/opt/gitlab/.gitconfig
/var/opt/gitlab/nginx/conf/gitlab-http.conf

Şu uyarılara dikkat edin:

# This file is managed by gitlab-ctl. Manual changes will be
# erased! To change the contents below, edit /etc/gitlab/gitlab.rb
# and run `sudo gitlab-ctl reconfigure`.

Dahili bir sunucuda GitLab Omnibus'um var, ancak İnternetten farklı bir URL'den erişilebilir. 'Deki external_urlseçenek, /etc/gitlab/gitlab.rbGit / HTTP URL'lerinin projelendirilmesi için URL'yi ayarlamak için doğru yerdi.
Matthew Clark

Ayrıca, bu değişiklikten sonra ve gitlab-ctl yeniden yapılandırmayı çalıştırdıktan sonra, nginx yeniden yapılandırmasının gerçekleşmesi için sunucuyu yeniden başlatmanız gerekir.
Dejv

Haklısınız, bu ayarları değiştirebileceğiniz tek ve en iyi yer burası. Gerisi üretilir.
tehlike89

4
@Dejv yeniden başlatmanız gerekmemelidir. Nginx hizmetini yeniden başlatmak yeterli olacaktır.
Jonathon Reinhart

Teşekkürler @JonathonReinhart bu işi benim için, ama önce unutma sudo gitlab-ctl stop unicornvesudo gitlab-ctl stop sidekiq
Cyberguille

7

Aslında bu tamamen doğru DEĞİLDİR. Bence gelen üretim GitLab sunucusunu geçiş gibi, kendim bu soruyu cevaplamak için çalışıyoruz, bu sayfaya ulaşmış http://için https://ve çoğu yukarıda açıklandığı gibi şeyler çalışıyor, ancak giriş yaptığınızdahttps://server ve her şey görünüyor ince bir projeye göz attıklarında ... hariç veya depo ve SSH ve HTTP talimatlarını görüntüler ... "http" diyor ve görüntülediği talimatlarda ayrıca "http" yazıyor.

Yine de düzenlenecek bazı şeyler buldum:

/home/git/gitlab/config/gitlab.yml
  production: &base
    gitlab:
      host: git.domain.com

      # Also edit these:
      port: 443
      https: true
...

ve

/etc/nginx/sites-available/gitlab
  server {
    server_name git.domain.com;

    # Also edit these:
    listen 443 ssl;
    ssl_certificate     /etc/ssl/certs/somecert.crt;
    ssl_certificate_key /etc/ssl/private/somekey.key;

...

Yorumunuz için teşekkür ederiz Edward (bu soruya bir Cevap gönderdiniz, aslında yukarıda @Razer tarafından farklı bir cevaba yapılan bir yorum iken). Başkaları için hangi sürümü kullandığınızı belirtmek için cevabınızı (yorumunuzu) düzenlemek isteyebilirsiniz. Ancak, bu soruyu gönderdiğimden beri GitLab'ı yalnızca bu değişikliklerle başarıyla kullanıyoruz. Takımdaki depolara ve projelere göz atabiliriz - tamamen SSL üzerinden, yalnızca kurumsal ağımızda.
eduncan911

2
Biliyorum, ancak diğer cevap kabul edilmiş bir cevap olarak işaretlendi. Bu yüzden bilerek yorum yapmak istemedim çünkü bu dikkat çekmiyor. Başka bir cevap vermek biraz daha belirgindir. En son gitlab-shell 1.8.0 ve gitlab 6.4 kararlı sürümündeyim. Ayrıca tamamen https ve ssh aracılığıyla da çalışabiliyoruz. Ancak, git istemcisine web arayüzünden talimatları veya URL'yi kopyalayıp yapıştırdığımızda http'yi https ile değiştirmeyi unutmamalıyız.
Edward Ned Harvey

Bana öyle geliyor ki, yapılandırma dosyalarından birinde bir URL'yi kaçırdınız. Buradaki orijinal sorum / açıklamamda "taşımadan" önce yalnızca HTTPS kullanıyoruz ve kasıtlı olarak HTTP'yi devre dışı bırakıyoruz. Bu nedenle, yalnızca HTTPS olarak sahip olmak, yayınlanan talimatlara göre görünüşte hareket etmemize izin verdi. Ancak, karma modlu bir http / https ortamı çalıştırıyorsanız, büyük olasılıkla düzenlemeniz gereken birkaç ek satır vardır.
eduncan911

Yorumunuz için teşekkürler, ancak (a) Yukarıdaki cevapta belirtilen değişiklikleri yaptığımı iki kez kontrol ettim. (b) Aşağıdaki prosedürü kurdum ve URL'nin bulunduğu her yeri değiştirdiğimden emin olmak için bu prosedürü tekrar uyguladım. (c) Yalnızca http'yi https olarak değiştirmedik, aynı zamanda ana makine adını da değiştirdik. Ana bilgisayar adı değişikliği işe yaradı, bu da yapılandırma dosyası değişikliklerinin başarılı olduğu anlamına gelir. (d) Kurulumunuz konusunda şüpheliyim. Gitlab'inizdeki bir projeye göz atabilir ve en üstte size SSH ve HTTP URL'sini gösterir, ssh ve http arasında geçiş yapabilir ve görüntülediği URL'nin "http" veya "https" olup olmadığını görebilir misiniz?
Edward Ned Harvey

1
Bu cevap şimdi belirsizdir. Sen devlet "Aslında bu tamamen doğru değil." ama "bu" nedir? Sorudaki bir şeyden mi bahsediyorsunuz? Diğer cevaplardan biri?
Jonathan Reinhart

1

Burada bana tamamen yardımcı olan ayrıntılı notlar var .

Jonathon Reinhart, /etc/gitlab/gitlab.rb'yi düzenlemek , external_url'yi değiştirmek ve ardından çalıştırmak için anahtar bit ile zaten cevap verdisudo gitlab-ctl reconfigure; sudo gitlab-ctl restart

Ancak biraz daha ileri gitmem gerekiyordu ve yukarıda bağladığım dokümanlar bunu açıkladı. Yani sonuçta neye benziyor:

external_url 'https://gitlab.toilethumor.com'
nginx['ssl_certificate'] = "/www/ssl/star_toilethumor.com-chained.crt"
nginx['ssl_certificate_key'] = "/www/ssl/star_toilethumor.com.key"
nginx['proxy_set_headers'] = {
 "X-Forwarded-Proto" => "http",
 "CUSTOM_HEADER" => "VALUE"
}

Yukarıda, SSL ürünlerimin bu sunucuda nerede olduğunu açıkça beyan ettim. Ve bunu tabii ki takip ediyor

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

Ayrıca, omnibus paketini https olarak değiştirdiğinizde, paketlenmiş nginx yalnızca 443 numaralı bağlantı noktasında hizmet verecektir. Tüm dosyalarıma ters proxy aracılığıyla erişildiğinden, bu bölüm potansiyel olarak önemliydi.

Bunun üzerinden geçerken, bir şeyi batırdım ve gerçek nginx günlüklerini bulmak faydalı oldu, bu beni oraya götürüyor:

sudo gitlab-ctl tail nginx
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.