เราจะเปลี่ยน 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.