เราจะเปลี่ยน URL ของการติดตั้ง GitLab ที่ใช้งานได้อย่างไร


89

ฉันได้ตั้งค่าแล้วและเรากำลังเรียกใช้การติดตั้งเริ่มต้นของ GitLab v6.0.1 (เรากำลังจะอัปเกรดด้วย) เป็นการตั้งค่า "การผลิต" ตามคำแนะนำนี้อย่างแม่นยำถึงตัวอักษร:

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

ตอนนี้เราจะเปลี่ยน URL ของการติดตั้งที่ใช้งานได้อย่างปลอดภัยได้อย่างไร

เห็นได้ชัดว่า URL ของเรายาวมากและเราได้สร้าง URL ใหม่ขึ้นมา ฉันได้แก้ไขไฟล์การกำหนดค่าจำนวนหนึ่งและรายงาน "การตรวจสอบสถานะแอปพลิเคชัน" ทุกอย่างเรียบร้อยดี ฉันได้รีบูตเซิร์ฟเวอร์เพื่อให้แน่ใจว่าสิ่งต่างๆยังคงทำงานอยู่

ฉันสามารถเข้าถึง Nginx ได้ดีผ่าน SSL ดั้งเดิมของเรา ฉันสามารถเรียกดูไซต์ GitLab สร้างที่เก็บ ฯลฯ ฉันสามารถแยกและกระทำได้ดี

ทุกอย่างดูเหมือนจะโอเค แต่เนื่องจากนี่ไม่ใช่สภาพแวดล้อมดั้งเดิมสำหรับฉันฉันจึงต้องการตรวจสอบอีกครั้งว่าฉันได้ทำทุกอย่างเพื่อเปลี่ยนชื่อไซต์ GitLab แล้ว

ไฟล์ที่ฉันแก้ไขคือ:

/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
รถโดยสารติดตั้งผู้ใช้: กระบวนการนี้เป็นกระบวนการที่แตกต่างกัน
— Jonathon Reinhart

คำตอบ:


29

คุณทำทุกอย่างถูกต้อง!

คุณอาจเปลี่ยนการกำหนดค่าอีเมลได้ด้วยทั้งนี้ขึ้นอยู่กับว่าเซิร์ฟเวอร์อีเมลเป็นเซิร์ฟเวอร์เดียวกันหรือไม่ การกำหนดค่าอีเมลอยู่ในgitlab.ymlสำหรับอีเมลที่ส่งโดย GitLab และอีเมลของผู้ดูแลระบบ


ฉันสงสัยเกี่ยวกับเรื่องนี้เนื่องจากฉันตั้งค่าอีเมลจาก (และอีเมลอื่น) ที่จะส่งจากอีเมลแทนของกลุ่มนักพัฒนาซอฟต์แวร์ระดับโลกของเราที่อยู่ในโดเมนอื่น ชอบ: devs@domain-2.com เหตุผลคืออนุญาตให้นักพัฒนากดตอบกลับเพื่อแสดงความคิดเห็นในคำขอดึงหรืออีเมลทั่วไปอื่น ๆ
— eduncan911

2
กลับมาเพื่อทำเครื่องหมายว่านี่เป็นคำตอบเนื่องจาก GitLab ทำงานได้ดีตั้งแต่ฉันทำการเปลี่ยนแปลงข้างต้น
— eduncan911

159

GitLab Omnibus

สำหรับการติดตั้ง Omnibus จะแตกต่างกันเล็กน้อย

ที่ถูกต้องเกิดขึ้นในรถโดยสารติดตั้ง:

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

สุดท้ายคุณก็จะต้องดำเนินการsudo gitlab-ctl reconfigureและsudo gitlab-ctl restartเพื่อให้การเปลี่ยนแปลงที่นำไปใช้


ฉันทำการเปลี่ยนแปลงในสถานที่ที่ไม่ถูกต้องและพวกเขาก็ปลิวไป

ไม่ถูกต้องเส้นทาง ได้แก่ :

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

ให้ความสนใจกับคำเตือนที่อ่าน:

# 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`.

ฉันมี GitLab Omnibus บนเซิร์ฟเวอร์ภายใน แต่สามารถเข้าถึงได้จากอินเทอร์เน็ตจาก URL อื่น external_urlตัวเลือกในการ/etc/gitlab/gitlab.rbเป็นสถานที่ถูกต้องในการตั้งค่า URL เพื่อให้โครงการ Git / HTTP URL ที่จะถูกต้อง
— Matthew Clark

นอกจากนี้หลังจากการเปลี่ยนแปลงนี้และหลังจากรันการกำหนดค่า gitlab-ctl ใหม่คุณต้องรีบูตเซิร์ฟเวอร์เพื่อให้การกำหนดค่า nginx ใหม่เกิดขึ้น
— Dejv

คุณพูดถูกนี่เป็นที่เดียวและดีที่สุดในการเปลี่ยนการตั้งค่าเหล่านี้ ส่วนที่เหลือจะถูกสร้างขึ้น
— อันตราย 89

4
@Dejv คุณไม่ควรรีสตาร์ท การรีสตาร์ทบริการ nginx น่าจะเพียงพอ
— Jonathon Reinhart

ขอบคุณ @JonathonReinhart งานนี้สำหรับฉัน แต่ก่อนอื่นอย่าลืมทำsudo gitlab-ctl stop unicornและsudo gitlab-ctl stop sidekiq
— Cyberguille

7

อันที่จริงสิ่งนี้ไม่ถูกต้องทั้งหมด ฉันมาถึงหน้านี้พยายามที่จะตอบคำถามนี้ด้วยตัวเองเนื่องจากเรากำลังเปลี่ยนเซิร์ฟเวอร์ GitLab ที่ใช้งานจริงจากhttp://ไปยังhttps://และสิ่งต่างๆส่วนใหญ่ทำงานได้ตามที่อธิบายไว้ข้างต้น แต่เมื่อคุณเข้าสู่ระบบhttps://serverและทุกอย่างดูดี ... ยกเว้นเมื่อคุณเรียกดูโครงการ หรือที่เก็บและจะแสดงคำแนะนำ SSH และ HTTP ... โดยระบุว่า "http" และคำแนะนำที่แสดงยังระบุว่า "http"

ฉันพบบางสิ่งที่ต้องแก้ไขเพิ่มเติม:

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

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

และ

/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 สำหรับความคิดเห็นของคุณ (คุณโพสต์คำตอบสำหรับคำถามนี้เมื่อเป็นความคิดเห็นสำหรับคำตอบอื่นโดย @Razer ด้านบน) คุณอาจต้องการแก้ไขคำตอบของคุณ (ความคิดเห็น) เพื่อระบุว่าคุณอยู่ในเวอร์ชันใดสำหรับผู้อื่น แต่เราประสบความสำเร็จในการใช้ GitLab โดยมีเพียงการเปลี่ยนแปลงเหล่านี้ตั้งแต่ฉันโพสต์คำถามนี้ เราสามารถเรียกดู repos และโครงการต่างๆได้ทั้งทีมผ่าน SSL โดยเฉพาะในเครือข่ายองค์กรของเรา
— eduncan911

2
ฉันรู้ แต่คำตอบอื่นถูกทำเครื่องหมายว่าเป็นคำตอบที่ยอมรับ ดังนั้นฉันจึงไม่ต้องการแสดงความคิดเห็นเกี่ยวกับเรื่องนี้เนื่องจากไม่ได้รับความสนใจ การโพสต์คำตอบอื่นให้ชัดเจนขึ้นเล็กน้อย ฉันใช้ gitlab-shell 1.8.0 และ gitlab 6.4 รุ่นล่าสุดที่เสถียร นอกจากนี้เรายังสามารถทำงานผ่าน https และ ssh ได้ทั้งหมด แต่เราต้องอย่าลืมแทนที่ http ด้วย https ทุกครั้งที่เราคัดลอกและวางคำแนะนำหรือ URL จากอินเทอร์เฟซเว็บไปยังคอมไพล์ไคลเอนต์
— Edward Ned Harvey

ฟังดูแล้วว่าคุณพลาด URL ในไฟล์การกำหนดค่ารายการใดรายการหนึ่ง เราใช้ HTTPS เท่านั้นและปิดใช้ HTTP โดยเจตนาก่อนที่จะ "ย้าย" ในคำถาม / คำอธิบายเดิมของฉันที่นี่ ดังนั้นการมีเฉพาะ HTTPS ทำให้เราสามารถย้ายตามคำแนะนำที่โพสต์ได้ แต่ถ้าคุณใช้สภาพแวดล้อม http / https โหมดผสมมักจะมีบรรทัดเพิ่มเติมสองสามบรรทัดที่คุณต้องแก้ไข
— eduncan911

ขอบคุณสำหรับความคิดเห็น แต่ (ก) ฉันตรวจสอบอีกครั้งว่าได้ทำการเปลี่ยนแปลงที่อ้างถึงในคำตอบด้านบนแล้ว (b) ฉันติดตั้งขั้นตอนต่อไปนี้และฉันทำตามขั้นตอนนั้นอีกครั้งเพื่อให้แน่ใจว่าฉันได้เปลี่ยนทุกตำแหน่งที่ URL อยู่ (c) เราไม่เพียง แต่เปลี่ยน http เป็น https แต่เรายังเปลี่ยนชื่อโฮสต์ด้วย การเปลี่ยนชื่อโฮสต์ทำงานได้ซึ่งหมายความว่าการแก้ไขไฟล์กำหนดค่าสำเร็จแล้ว (ง) ฉันไม่แน่ใจเกี่ยวกับการตั้งค่าของคุณ คุณสามารถเรียกดูโปรเจ็กต์ใน gitlab ของคุณได้หรือไม่และที่ด้านบนสุดจะแสดง SSH และ HTTP URL ให้สลับระหว่าง ssh และ http และดูว่า URL ที่แสดงมี "http" หรือ "https" หรือไม่
— Edward Ned Harvey

1
คำตอบนี้ยังไม่ชัดเจน คุณระบุว่า "อันที่จริงสิ่งนี้ไม่ถูกต้องทั้งหมด" แต่ "นี่" คืออะไร? คุณกำลังอ้างถึงบางสิ่งในคำถามหรือไม่? หนึ่งในคำตอบอื่น ๆ ?
— Jonathon Reinhart

1

มีบันทึกรายละเอียดเกี่ยวกับเรื่องนี้ที่ช่วยให้ฉันสมบูรณ์จะตั้งอยู่ที่นี่

Jonathon Reinhart ได้ตอบด้วยคีย์บิตแล้วเพื่อแก้ไข/etc/gitlab/gitlab.rbแก้ไขexternal_urlแล้วเรียกใช้sudo gitlab-ctl reconfigure; sudo gitlab-ctl restart

อย่างไรก็ตามฉันต้องดำเนินการต่อไปอีกเล็กน้อยและเอกสารที่ฉันเชื่อมโยงข้างต้นได้อธิบายไว้ ดังนั้นสิ่งที่ฉันลงเอยด้วยดูเหมือน:

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

ข้างต้นฉันได้ประกาศอย่างชัดเจนว่าสินค้า SSL ของฉันอยู่ที่ไหนบนเซิร์ฟเวอร์นี้ และแน่นอนตามด้วย

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

นอกจากนี้เมื่อคุณเปลี่ยนแพ็คเกจรถโดยสารเป็น https nginx ที่แถมมาจะให้บริการบนพอร์ต 443 เท่านั้นเนื่องจากข้อมูลทั้งหมดของฉันเข้าถึงผ่านพร็อกซีย้อนกลับส่วนนี้จึงอาจมีความสำคัญ

ในขณะที่ฉันทำสิ่งนี้ฉันก็ทำอะไรบางอย่างผิดพลาดและการค้นหาบันทึก nginx ที่แท้จริงจะเป็นประโยชน์ทำให้ฉันไปที่นั่น:

sudo gitlab-ctl tail nginx
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.