<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Gitlab安裝及使用

          共 8918字,需瀏覽 18分鐘

           ·

          2022-10-27 14:06

          Gitlab是基于Ruby on Rails開(kāi)源的項(xiàng)目管理和代碼托管平臺(tái),可以很方便的管理公司私有庫(kù),所以通常是自建Gitlab。下面來(lái)看下Gitlab服務(wù)的安裝。

          官方硬件需求至少需要4GB內(nèi)存。在CentOS 7安裝為例,安裝Gitlab。

          安裝配置依賴包

          Gitlab服務(wù)需要系統(tǒng)防火墻打開(kāi)HTTPHTTPS 和 SSH訪問(wèn)。這些依賴通常是通用的,運(yùn)維人員可能已經(jīng)安裝好

          sudo yum install -y curl policycoreutils-python openssh-server
          sudo systemctl enable sshd
          sudo systemctl start sshd

          sudo firewall-cmd --permanent --add-service=http
          sudo firewall-cmd --permanent --add-service=https
          sudo systemctl reload firewalld

          安裝郵局服務(wù)

          我們可以安裝Postfix進(jìn)行郵件通知,注意DNS解析。如果安裝有其他郵局服務(wù),可以跳過(guò)。此外,安裝Gitlab后,還需配置smtp。

          sudo yum install postfix
          sudo systemctl enable postfix
          sudo systemctl start postfix

          安裝Gitlab軟件包

          我們可以使用官方提供的一鍵腳本安裝包,安裝最新穩(wěn)定版

          //輸出到文件里是為了看下下載的腳本內(nèi)容
          curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh > rpm.sh
          chmod +x rpm.sh
          ./rpm.sh

          或者在線下載官方包進(jìn)行安裝

          wget -O gitlab.rpm https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.10.4-ce.0.el7.x86_64.rpm/download.rpm
          rpm -ivh gitlab.rpm
          #可以查看安裝了哪些的文件,看到gitlab安裝在/opt/gitlab目錄下
          #rpm -ql gitlab-ce-12.10.4-ce.0.el7.x86_64

          也可以使用軟件源安裝

          # 配置yum源
          cat << EOF >> /etc/yum.repos.d/gitlab-ce.repo
          [gitlab-ce]
          name=gitlab-ce
          baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6
          Repo_gpgcheck=0
          Enabled=1
          Gpgkey=https://packages.gitlab.com/gpg.key
          EOF


          #更新本地yum緩存
          sudo yum makecache

          #安裝Gitlab-ce社區(qū)版
          sudo yum install gitlab-ce        #自動(dòng)安裝最新版
          sudo yum install gitlab-ce-x.x.x    #安裝指定版本

          我們還可以將gitlab安裝在docker、kubernetes等容器服務(wù)里

          修改配置

          默認(rèn)配置文件路徑:/etc/gitlab/gitlab.rb,修改配置后,需要重啟服務(wù)方可生效。

          配置URL

          external_url 'http://gitlab.wenqy.com:80'
          nginx['listen_port'] = 80

          默認(rèn)nginx 監(jiān)聽(tīng)的是80 端口,如果nginx 修改端口,external_url 里面也必須帶端口。gitlab安裝內(nèi)置默認(rèn)用戶root,首次訪問(wèn)external_url時(shí),需要root用戶登陸,設(shè)置密碼。如果配置不修改重啟,可能會(huì)出現(xiàn)502錯(cuò)誤。

          配置unicorn端口

          unicorn是Ruby語(yǔ)言領(lǐng)域的一款http server軟件。默認(rèn)端口是8080。如果是非獨(dú)享服務(wù)器,Tomcat默認(rèn)端口也是8080,容易發(fā)生端口占用沖突,也會(huì)導(dǎo)致502錯(cuò)誤。此時(shí),可以需要unicorn端口。

          unicorn['port'] = 8901

          配置SSH

          新暴露了ssh的端口8902

          gitlab_rails['gitlab_ssh_host'] = '192.168.1.34'
          gitlab_rails['gitlab_shell_ssh_port'] = 8902

          修改ssh協(xié)議后,/etc/ssh/sshd_config配置文件新增ssh端口

          #Port 22
          Port 22
          port 8902

          防火墻開(kāi)放端口

          iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8902 -j ACCEPT
          iptables-save
          iptables -nL --line-number

          重啟ssh服務(wù)

          systemctl restart sshd.service

          配置郵箱

          填寫(xiě)配置好的smtp信息

          gitlab_rails['smtp_enable'] = true
          gitlab_rails['smtp_address'] = "smtp.wenqy.com"
          gitlab_rails['smtp_port'] = 25
          gitlab_rails['smtp_user_name'] = "[email protected]"
          gitlab_rails['smtp_password'] = "123456"
          gitlab_rails['smtp_domain'] = "smtp.uf-tobacco.com"
          gitlab_rails['smtp_authentication'] = "login"
          gitlab_rails['smtp_tls'] = false
          gitlab_rails['smtp_enable_starttls_auto'] = true
          gitlab_rails['smtp_openssl_verify_mode'] = 'none'
          gitlab_rails['smtp_ssl'] = false
          gitlab_rails['smtp_force_ssl'] = false

          gitlab_rails['gitlab_email_enabled'] = true
          gitlab_rails['gitlab_email_display_name'] = 'Gitlab'
          gitlab_rails['gitlab_email_from'] = '[email protected]'

          重啟后進(jìn)入console測(cè)試郵箱發(fā)送

          gitlab-rails console
          #進(jìn)入控制臺(tái),然后發(fā)送郵件
          Notify.test_email('[email protected]''郵件標(biāo)題''郵件正文').deliver_now

          重啟gitlab

          修改配置后,重啟生效

          #重器gitlab配置服務(wù)
          sudo gitlab-ctl reconfigure
          #重啟gitlab
          gitlab-ctl restart 

          常用命令

          gitlab-ctl start #啟動(dòng)全部服務(wù)
          gitlab-ctl restart #重啟全部服務(wù)
          gitlab-ctl stop #停止全部服務(wù)
          gitlab-ctl restart nginx #重啟單個(gè)服務(wù)
          gitlab-ctl status #查看全部組件的狀態(tài)
          gitlab-ctl show-config #驗(yàn)證配置文件
          gitlab-ctl uninstall #刪除gitlab(保留數(shù)據(jù))
          gitlab-ctl cleanse #刪除所有數(shù)據(jù),重新開(kāi)始
          gitlab-ctl tail <svc_name>  #查看服務(wù)的日志
          gitlab-rails console production #進(jìn)入控制臺(tái) ,可以修改root 的密碼
          gitlab-ctl --help #查看gitlab-ctl命令的幫助信息

          漢化

          如果需要漢化,漢化包與gitlab軟件包版本要一致,否則可能發(fā)送意想不到的錯(cuò)誤,漢化之前更應(yīng)該先備份gitlab數(shù)據(jù)。未嘗試,不建議漢化。

          # 暫停gitlab
          gitlab-ctl stop
          # 查看gitlab版本
          cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
          12.8.1-ee
          # 下載對(duì)應(yīng)版本漢化包
          git clone https://gitlab.com/xhang/gitlab.git
          # 備份
          cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}
          # 漢化包覆蓋
          cp -rf gitlab-10-3-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
          # 啟動(dòng)
          gitlab-ctl start

          安裝git

          Gitlab是基于git做版本控制,訪問(wèn)gitlab需要安裝git,在linux用yum源安裝

          # 修改yum源,指向163
          mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
          # 下載對(duì)應(yīng)版本repo文件, 放入/etc/yum.repos.d/
          wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
          # 如果yum命令直接卡死,造成rpm數(shù)據(jù)庫(kù)異常,殺進(jìn)程
          # 刪除rpm數(shù)據(jù)文件 
          rm -f /var/lib/rpm/__db.00*
          # 重建rpm數(shù)據(jù)文件 
          rpm -vv --rebuilddb
          # 清除緩存
          yum clean all
          yum makecache
          # 安裝git
          yum -y install git

          Groups

          一個(gè) GitLab 的組是一些項(xiàng)目的集合,連同關(guān)于多少用戶可以訪問(wèn)這些項(xiàng)目的數(shù)據(jù)。 每一個(gè)組都有一個(gè)項(xiàng)目命名空間(與用戶一樣),所以如果一個(gè)叫 training 的組擁有一個(gè)名稱是 materials 的項(xiàng)目,那么這個(gè)項(xiàng)目的 url 會(huì)是 http://server/training/materials

          每一個(gè)組都有許多用戶與之關(guān)聯(lián),每一個(gè)用戶對(duì)組中的項(xiàng)目以及組本身的權(quán)限都有級(jí)別區(qū)分。 權(quán)限的范圍從 “訪客”(僅能提問(wèn)題和討論) 到 “擁有者”(完全控制組、成員和項(xiàng)目)。 權(quán)限的種類(lèi)太多以至于難以在這里一一列舉,不過(guò)在 GitLab 的管理界面上有幫助鏈接。

          項(xiàng)目

          一個(gè) GitLab 的項(xiàng)目相當(dāng)于 git 的版本庫(kù)。 每一個(gè)項(xiàng)目都屬于一個(gè)用戶或者一個(gè)組的單個(gè)命名空間。 如果這個(gè)項(xiàng)目屬于一個(gè)用戶,那么這個(gè)擁有者對(duì)所有可以獲取這個(gè)項(xiàng)目的人擁有直接管理權(quán); 如果這個(gè)項(xiàng)目屬于一個(gè)組,那么該組中用戶級(jí)別的權(quán)限也會(huì)起作用。

          每一個(gè)用戶賬號(hào)都有一個(gè) 命名空間 ,即該用戶項(xiàng)目的邏輯集合。 如果一個(gè)叫 wenqy 的用戶擁有一個(gè)名稱是 springcloudstudy的項(xiàng)目,那么這個(gè)項(xiàng)目的 url 會(huì)是 http://server/wenqy/springcloudstudy 。

          每一個(gè)項(xiàng)目都有一個(gè)可視級(jí)別,控制著誰(shuí)可以看到這個(gè)項(xiàng)目頁(yè)面和倉(cāng)庫(kù)。 如果一個(gè)項(xiàng)目是 私有 的,這個(gè)項(xiàng)目的擁有者必須明確授權(quán)從而使特定的用戶可以訪問(wèn)。 一個(gè) 內(nèi)部 的項(xiàng)目可以被所有登錄的人看到,而一個(gè) 公開(kāi) 的項(xiàng)目則是對(duì)所有人可見(jiàn)的。 注意,這種控制既包括 git fetch 的使用也包括對(duì)項(xiàng)目 web 用戶界面的訪問(wèn)。

          配置SSH Keys

          我們需要經(jīng)常免登錄git賬號(hào)進(jìn)行推送代碼,這時(shí)需要配置SSH Keys,將生成的RSA 公鑰填入。

          當(dāng)通常情況下,我們已經(jīng)在GitHub、碼云上已經(jīng)分配了賬號(hào),可能是相同的ID,也可能在一個(gè)平臺(tái)上有多個(gè)賬號(hào),我們可能需要區(qū)分不同的平臺(tái)和賬號(hào)和一個(gè)平臺(tái)的多個(gè)賬號(hào)。我們可以看下同時(shí)配置GitHub兩個(gè)賬號(hào),用命令生成公鑰私鑰對(duì)

          ssh-keygen -t rsa -C "[email protected]"

          ssh-keygen -t rsa -C "[email protected]"

          運(yùn)行命令后不要一路回車(chē),分別在第一次對(duì)話出現(xiàn)“Enter file in which to save the key”的時(shí)候輸入不同的文件名,避免覆蓋。兩份包含私鑰和公鑰的4個(gè)文件,后綴為.pub的文件為公鑰文件。linux或mac用戶一定要在~/.ssh路徑下運(yùn)行命令行,不然生成的文件不會(huì)出現(xiàn)在當(dāng)前目錄,Windows用戶則在“C:\Users\用戶名\.ssh”目錄下運(yùn)行命令行。

          配置config文件

          .ssh目錄下創(chuàng)建config文件,在config文件中添加以下內(nèi)容:

          #github server one
          Host one.github.com
          Hostname github.com
          User one
          PreferredAuthentications publickey
          IdentityFile C:\\Users\\xmn-wenqy.HELLO-WORLD\\.ssh\\id_rsa
          #github server two
          Host two.github.com
          Hostname github.com
          User two
          PreferredAuthentications publickey
          IdentityFile C:\\Users\\xmn-wenqy.HELLO-WORLD\\.ssh\\id_rsa_cloud

          每個(gè)賬號(hào)單獨(dú)配置一個(gè)Host,每個(gè)Host要取一個(gè)別名,一般為每個(gè)Host主要配置HostName和IdentityFile兩個(gè)屬性,配置完保存即可。Host的名字可以自定義名字,不過(guò)這個(gè)會(huì)影響git相關(guān)命令,例如:Host one.github.com這樣定義的話,使用命令git clone [email protected]:one/project.git,git@后面緊跟的名字改為one.github.com

          為倉(cāng)庫(kù)設(shè)置局部的用戶名和郵箱

          # 取消全局 用戶名/郵箱 配置
          git config --global --unset user.name
          git config --global --unset user.email
              
          # 單獨(dú)為每個(gè)repo設(shè)置 用戶名/郵箱
          git config user.name "one_name" ; git config user.email "one_email"
          git config user.name "two_name" ; git config user.email "two_email"

          配置好SSH Keys后就可以免登錄推送代碼到gitlab了。

          鉤子

          GitLab 在項(xiàng)目和系統(tǒng)級(jí)別上都支持鉤子程序。 對(duì)任意級(jí)別,當(dāng)有相關(guān)事件發(fā)生時(shí),GitLab 的服務(wù)器會(huì)執(zhí)行一個(gè)包含描述性 JSON 數(shù)據(jù)的 HTTP 請(qǐng)求。 這是自動(dòng)化連接你的 git 版本庫(kù)和 GitLab 實(shí)例到其他的開(kāi)發(fā)工具,比如 CI 服務(wù)器,聊天室,或者部署工具的一個(gè)極好方法。

          對(duì)應(yīng)root超級(jí)用戶,有更多的管理權(quán)限,有管理面板,可以對(duì)使用者、項(xiàng)目進(jìn)行管理和統(tǒng)計(jì)分析等等。

          架構(gòu)

          gitlab 依賴的組件默認(rèn)安裝在/var/opt/gitlab/目錄下

          Gitlab利用Nginx或者Apache作為web前端代理到Unicorn web服務(wù)端。默認(rèn)情況下,Unicorn和前端之間的通信是通過(guò)Unix domain socket進(jìn)行的,但也支持通過(guò)TCP轉(zhuǎn)發(fā)請(qǐng)求。利用Sidekiq從Redis隊(duì)列中拉取job并處理,是Ruby后臺(tái)任務(wù)處理器;利用Redis緩存作業(yè)、會(huì)話等信息;利用PostgreSQL做持久化數(shù)據(jù)庫(kù),保存用戶、權(quán)限、issues等元信息;利用GitLab Shell接收SSH請(qǐng)求,GitLab Shell通過(guò)Gitaly訪問(wèn)存儲(chǔ)庫(kù),為Git對(duì)象提供服務(wù),并與Redis通信,將作業(yè)提交給Sidekiq供GitLab處理。GitLab Shell通過(guò)GitLab API查詢以確定授權(quán)和訪問(wèn);GitalyGitLab Shell和GitLab web app執(zhí)行Git操作,并為GitLab web app提供一個(gè)API,以從Git獲取屬性(例如titile、、branches、tags、其他元數(shù)據(jù)),并獲取blob(例如diff、commits、files);GitLab Workhorse是由GitLab設(shè)計(jì)的程序,可幫助緩解Unicorn的壓力,它旨在充當(dāng)智能反向代理,以幫助加快整個(gè)GitLab的運(yùn)行速度。

          此外,官方推薦服務(wù)器CPU核數(shù)至少4核,存儲(chǔ)空間不少于gitlab所有存儲(chǔ)庫(kù)之和,磁盤(pán)最好采用邏輯卷管理方便擴(kuò)展硬盤(pán)驅(qū)動(dòng)器,gitlab占用太多內(nèi)存,容易導(dǎo)致服務(wù)器崩潰,可以啟用swap分區(qū),緩解內(nèi)存壓力,例如,阿里云ECS默認(rèn)是沒(méi)有開(kāi)啟swap的,這值得注意一下。日志目錄默認(rèn)安裝在/var/log/gitlab路徑下。還應(yīng)該注意Gitlab的性能優(yōu)化、數(shù)據(jù)備份和遷移。

          Gitlab安裝和部署還是相對(duì)容易的,只是依賴的組件相對(duì)龐雜,太過(guò)吃內(nèi)存。對(duì)于熟悉Git和GitHub的人也是極易上手,甚至是無(wú)感知使用的。

          參考

          https://about.gitlab.com/install/#centos-7

          https://gitlab.com/gitlab-org/gitlab-foss/

          https://packages.gitlab.com/gitlab/gitlab-ce

          https://docs.gitlab.com/omnibus/settings/smtp.html

          https://docs.gitlab.com/ee/install/requirements.html

          https://docs.gitlab.com/ce/development/architecture.html

          解決GitLab內(nèi)存消耗大的問(wèn)題:https://blog.csdn.net/ouyang_peng/article/details/84066417


          入骨相思知不知


          玲瓏骰子安紅豆


          入我相思門(mén),知我相思苦,長(zhǎng)相思兮長(zhǎng)相憶,短相思兮無(wú)窮極。

          瀏覽 91
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产午夜精品一区二区三区四区 | 无码高清操逼网址 | 思思热在线免费视频 | B想要XX免费视频 | 欧美第一页精品 |