Bagaimana cara kami mengubah URL dari instalasi GitLab yang berfungsi?

89

Saya telah menyiapkan dan kami menjalankan penginstalan default GitLab v6.0.1 (kami juga akan meningkatkannya). Itu adalah penyiapan "Produksi", mengikuti panduan ini persis seperti yang tertulis:

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

Sekarang, bagaimana kita mengubah URL instalasi yang berfungsi dengan aman?

Rupanya URL kami sangat panjang dan kami telah menemukan URL baru. Saya telah mengedit sejumlah file konfigurasi dan laporan "Pemeriksaan Status Aplikasi" semuanya baik-baik saja. Saya telah mem-boot ulang server untuk memastikan semuanya masih berfungsi.

Saya dapat mengakses Nginx dengan baik, melalui SSL asli kami. Saya dapat menelusuri situs GitLab, membuat repositori, dll. Saya dapat bercabang dan melakukan dengan baik.

Semuanya tampak baik-baik saja; tetapi, karena ini bukan lingkungan asli bagi saya, saya ingin memeriksa ulang apakah saya telah melakukan segalanya untuk mengganti nama situs GitLab.

File yang telah saya edit adalah:

/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
eduncan911
sumber
9
Pengguna instal Omnibus: Prosesnya berbeda .
Jonathon Reinhart

Jawaban:

29

Anda melakukan semuanya dengan benar!

Anda juga dapat mengubah konfigurasi email, bergantung pada apakah server email juga merupakan server yang sama. Konfigurasi email ada di gitlab.yml untuk email yang dikirim oleh GitLab dan juga email-admin.

Razer
sumber
Saya bertanya-tanya tentang ini, karena saya menyetel email Dari (dan email lain) untuk dikirim dari alias email grup pengembang global kami yang ada di domain berbeda. Seperti: [email protected]. Alasannya adalah untuk mengizinkan pengembang menekan Balas untuk membuat komentar pada permintaan Pull atau email umum lainnya.
eduncan911
2
Kembali untuk menandai ini sebagai jawaban karena GitLab telah berfungsi dengan baik sejak saya membuat perubahan ini di atas.
eduncan911
159

GitLab Omnibus

Untuk pemasangan Omnibus, ini sedikit berbeda.

Tempat yang benar dalam pemasangan Omnibus adalah:

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

Terakhir, Anda harus menjalankan sudo gitlab-ctl reconfiguredan sudo gitlab-ctl restartmenerapkan perubahan.


Saya membuat perubahan di tempat yang salah dan mereka terpesona.

Jalur yang salah adalah:

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

Perhatikan peringatan yang berbunyi:

# 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`.
Jonathon Reinhart
sumber
Saya memiliki GitLab Omnibus di server internal, tetapi dapat diakses dari Internet dari URL yang berbeda. The external_urlpilihan dalam /etc/gitlab/gitlab.rbadalah tempat yang tepat untuk mengatur URL sehingga proyek Git / HTTP URL akan benar.
Matthew Clark
Selain itu, setelah perubahan ini dan setelah menjalankan konfigurasi ulang gitlab-ctl, Anda harus mereboot server agar konfigurasi ulang nginx dapat dilakukan.
Dejv
Anda benar, ini adalah satu-satunya tempat terbaik untuk mengubah pengaturan ini. Sisanya dihasilkan.
hazard89
4
@Dejv Anda tidak perlu memulai ulang. Memulai ulang layanan nginx sudah cukup.
Jonathon Reinhart
Terima kasih @JonathonReinhart pekerjaan ini untuk saya, tetapi pertama-tama jangan lupa lakukan sudo gitlab-ctl stop unicorndansudo gitlab-ctl stop sidekiq
Cyberguille
7

Sebenarnya, ini TIDAK sepenuhnya benar. Saya tiba di halaman ini, mencoba menjawab pertanyaan ini sendiri, karena kami sedang mentransisikan server produksi GitLab dari http://ke https://dan sebagian besar berfungsi seperti yang dijelaskan di atas, tetapi ketika Anda masuk ke https://serverdan semuanya terlihat baik-baik saja ... kecuali saat Anda menjelajah ke sebuah proyek atau repositori, dan ini menampilkan instruksi SSH dan HTTP ... Dikatakan "http" dan instruksi yang ditampilkannya juga mengatakan "http".

Saya menemukan beberapa hal lagi untuk diedit:

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

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

dan

/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;

...
Edward Ned Harvey
sumber
Terima kasih Edward atas komentar Anda (Anda memposting Jawaban untuk pertanyaan ini, padahal sebenarnya itu adalah komentar untuk jawaban berbeda oleh @Razer di atas). Anda mungkin ingin mengedit jawaban (komentar) Anda untuk menyatakan versi apa yang Anda gunakan untuk orang lain. Namun, kami telah berhasil menggunakan GitLab hanya dengan perubahan ini sejak saya memposting pertanyaan ini. kami dapat menelusuri repo dan proyek di seluruh tim - seluruhnya melalui SSL secara eksklusif di jaringan perusahaan kami.
eduncan911
2
Saya tahu, tetapi jawaban yang lain ditandai sebagai jawaban yang diterima. Jadi saya sengaja tidak mau berkomentar, karena itu tidak menarik perhatian. Memposting jawaban lain sedikit lebih jelas. Saya menggunakan gitlab-shell 1.8.0 dan gitlab 6.4 stable terbaru. Kami juga dapat bekerja, seluruhnya melalui https dan ssh. Tetapi kita harus ingat untuk mengganti http dengan https setiap kali kita menyalin & menempel instruksi atau URL dari antarmuka web ke git client.
Edward Ned Harvey
Kedengarannya bagi saya bahwa Anda melewatkan URL di salah satu file konfigurasi. Kami hanya menggunakan HTTPS dan HTTP sengaja dinonaktifkan sebelum "pindah" dalam pertanyaan / deskripsi asli saya di sini. Jadi memilikinya secara eksklusif sebagai HTTPS memungkinkan kami untuk bergerak sesuai instruksi yang diposting tanpa terasa. Namun, jika Anda menjalankan lingkungan http / https mode campuran, kemungkinan besar ada beberapa baris tambahan yang perlu Anda edit.
eduncan911
Terima kasih atas komentarnya, tetapi (a) saya memeriksa ulang bahwa saya membuat perubahan yang dirujuk dalam jawaban di atas. (b) Saya menginstal prosedur berikut, dan saya mengikuti kembali prosedur tersebut untuk memastikan saya mengubah setiap tempat URL-nya. (c) Kami tidak hanya mengubah http menjadi https, kami juga mengubah nama host. Perubahan nama host berhasil, yang berarti modifikasi file konfigurasi berhasil. (d) Saya skeptis tentang pengaturan Anda. Dapatkah Anda menjelajahi sebuah proyek di gitlab Anda, dan di bagian atas yang menunjukkan SSH dan URL HTTP, beralih antara ssh dan http, dan melihat apakah URL yang ditampilkannya memiliki "http" atau "https?"
Edward Ned Harvey
1
Jawaban ini sekarang ambigus. Anda menyatakan "Sebenarnya, ini TIDAK sepenuhnya benar." tapi apa itu "ini"? Apakah Anda mengacu pada sesuatu dalam pertanyaan? Salah satu jawaban lainnya?
Jonathon Reinhart
1

Ada catatan rinci tentang ini yang membantu saya sepenuhnya, terletak di sini .

Jonathon Reinhart telah menjawab dengan bit kunci, untuk mengedit /etc/gitlab/gitlab.rb , ubah external_url dan kemudian jalankansudo gitlab-ctl reconfigure; sudo gitlab-ctl restart

Namun saya perlu melangkah lebih jauh dan dokumen yang saya tautkan di atas menjelaskannya. Jadi apa yang saya dapatkan seperti ini:

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"
}

Di atas, saya secara eksplisit menyatakan di mana barang SSL saya berada di server ini. Dan itu tentu saja diikuti oleh

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

Juga, ketika Anda mengganti paket omnibus ke https, paket nginx hanya akan berfungsi pada port 443. Karena semua barang saya dijangkau melalui proxy terbalik, bagian ini berpotensi signifikan.

Ketika saya melalui ini, saya mengacaukan sesuatu dan sangat membantu untuk menemukan log nginx yang sebenarnya, ini membawa saya ke sana:

sudo gitlab-ctl tail nginx
James T Snell
sumber