<dl id="llxdb"></dl>
<video id="llxdb"><output id="llxdb"></output></video><dl id="llxdb"><output id="llxdb"></output></dl>
<output id="llxdb"></output>
<noframes id="llxdb"><dl id="llxdb"></dl>
<video id="llxdb"></video>
<output id="llxdb"><delect id="llxdb"><font id="llxdb"></font></delect></output>
<video id="llxdb"></video><dl id="llxdb"><output id="llxdb"></output></dl>
<dl id="llxdb"><delect id="llxdb"><font id="llxdb"></font></delect></dl><video id="llxdb"></video><dl id="llxdb"></dl><dl id="llxdb"><output id="llxdb"><font id="llxdb"></font></output></dl>
                          您的位置:首頁 >聚焦 >

                          當前觀點:Gitlab安裝及使用

                          2022-10-27 16:09:02    來源:程序員客棧

                          Gitlab是基于Ruby on Rails開源的項目管理和代碼托管平臺,可以很方便的管理公司私有庫,所以通常是自建Gitlab。下面來看下Gitlab服務的安裝。


                          (資料圖)

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

                          安裝配置依賴包

                          Gitlab服務需要系統防火墻打開HTTP,HTTPS和SSH訪問。這些依賴通常是通用的,運維人員可能已經安裝好

                          sudoyuminstall-ycurlpolicycoreutils-pythonopenssh-serversudosystemctlenablesshdsudosystemctlstartsshdsudofirewall-cmd--permanent--add-service=httpsudofirewall-cmd--permanent--add-service=httpssudosystemctlreloadfirewalld

                          安裝郵局服務

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

                          sudoyuminstallpostfixsudosystemctlenablepostfixsudosystemctlstartpostfix

                          安裝Gitlab軟件包

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

                          //輸出到文件里是為了看下下載的腳本內容curlhttps://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh>rpm.shchmod+xrpm.sh./rpm.sh

                          或者在線下載官方包進行安裝

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

                          也可以使用軟件源安裝

                          #配置yum源cat<>/etc/yum.repos.d/gitlab-ce.repo[gitlab-ce]name=gitlab-cebaseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el6Repo_gpgcheck=0Enabled=1Gpgkey=https://packages.gitlab.com/gpg.keyEOF#更新本地yum緩存sudoyummakecache#安裝Gitlab-ce社區版sudoyuminstallgitlab-ce#自動安裝最新版sudoyuminstallgitlab-ce-x.x.x#安裝指定版本

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

                          修改配置

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

                          配置URL

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

                          默認nginx 監聽的是80 端口,如果nginx 修改端口,external_url 里面也必須帶端口。gitlab安裝內置默認用戶root,首次訪問external_url時,需要root用戶登陸,設置密碼。如果配置不修改重啟,可能會出現502錯誤。

                          配置unicorn端口

                          unicorn是Ruby語言領域的一款http server軟件。默認端口是8080。如果是非獨享服務器,Tomcat默認端口也是8080,容易發生端口占用沖突,也會導致502錯誤。此時,可以需要unicorn端口。

                          unicorn["port"]=8901

                          配置SSH

                          新暴露了ssh的端口8902

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

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

                          #Port22Port22port8902

                          防火墻開放端口

                          iptables-IINPUT-ptcp-mstate--stateNEW-mtcp--dport8902-jACCEPTiptables-saveiptables-nL--line-number

                          重啟ssh服務

                          systemctlrestartsshd.service

                          配置郵箱

                          填寫配置好的smtp信息

                          gitlab_rails["smtp_enable"]=truegitlab_rails["smtp_address"]="smtp.wenqy.com"gitlab_rails["smtp_port"]=25gitlab_rails["smtp_user_name"]="wenqy@wenqy.com"gitlab_rails["smtp_password"]="123456"gitlab_rails["smtp_domain"]="smtp.uf-tobacco.com"gitlab_rails["smtp_authentication"]="login"gitlab_rails["smtp_tls"]=falsegitlab_rails["smtp_enable_starttls_auto"]=truegitlab_rails["smtp_openssl_verify_mode"]="none"gitlab_rails["smtp_ssl"]=falsegitlab_rails["smtp_force_ssl"]=falsegitlab_rails["gitlab_email_enabled"]=truegitlab_rails["gitlab_email_display_name"]="Gitlab"gitlab_rails["gitlab_email_from"]="wenqy@wenqy.com"

                          重啟后進入console測試郵箱發送

                          gitlab-railsconsole#進入控制臺,然后發送郵件Notify.test_email("wen.qy@qq.com","郵件標題","郵件正文").deliver_now

                          重啟gitlab

                          修改配置后,重啟生效

                          #重器gitlab配置服務sudogitlab-ctlreconfigure#重啟gitlabgitlab-ctlrestart

                          常用命令

                          gitlab-ctlstart#啟動全部服務gitlab-ctlrestart#重啟全部服務gitlab-ctlstop#停止全部服務gitlab-ctlrestartnginx#重啟單個服務gitlab-ctlstatus#查看全部組件的狀態gitlab-ctlshow-config#驗證配置文件gitlab-ctluninstall#刪除gitlab(保留數據)gitlab-ctlcleanse#刪除所有數據,重新開始gitlab-ctltail#查看服務的日志gitlab-railsconsoleproduction#進入控制臺,可以修改root的密碼gitlab-ctl--help#查看gitlab-ctl命令的幫助信息

                          漢化

                          如果需要漢化,漢化包與gitlab軟件包版本要一致,否則可能發送意想不到的錯誤,漢化之前更應該先備份gitlab數據。未嘗試,不建議漢化。

                          #暫停gitlabgitlab-ctlstop#查看gitlab版本cat/opt/gitlab/embedded/service/gitlab-rails/VERSION12.8.1-ee#下載對應版本漢化包gitclonehttps://gitlab.com/xhang/gitlab.git#備份cp-r/opt/gitlab/embedded/service/gitlab-rails{,.ori}#漢化包覆蓋cp-rfgitlab-10-3-stable-zh/*/opt/gitlab/embedded/service/gitlab-rails/#啟動gitlab-ctlstart

                          安裝git

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

                          #修改yum源,指向163mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup#下載對應版本repo文件,放入/etc/yum.repos.d/wgethttp://mirrors.163.com/.help/CentOS7-Base-163.repo#如果yum命令直接卡死,造成rpm數據庫異常,殺進程#刪除rpm數據文件rm-f/var/lib/rpm/__db.00*#重建rpm數據文件rpm-vv--rebuilddb#清除緩存yumcleanallyummakecache#安裝gityum-yinstallgit

                          Groups

                          一個 GitLab 的組是一些項目的集合,連同關于多少用戶可以訪問這些項目的數據。 每一個組都有一個項目命名空間(與用戶一樣),所以如果一個叫training的組擁有一個名稱是materials的項目,那么這個項目的 url 會是http://server/training/materials。

                          每一個組都有許多用戶與之關聯,每一個用戶對組中的項目以及組本身的權限都有級別區分。 權限的范圍從 “訪客”(僅能提問題和討論) 到 “擁有者”(完全控制組、成員和項目)。 權限的種類太多以至于難以在這里一一列舉,不過在 GitLab 的管理界面上有幫助鏈接。

                          項目

                          一個 GitLab 的項目相當于 git 的版本庫。 每一個項目都屬于一個用戶或者一個組的單個命名空間。 如果這個項目屬于一個用戶,那么這個擁有者對所有可以獲取這個項目的人擁有直接管理權; 如果這個項目屬于一個組,那么該組中用戶級別的權限也會起作用。

                          每一個用戶賬號都有一個命名空間,即該用戶項目的邏輯集合。 如果一個叫wenqy的用戶擁有一個名稱是 springcloudstudy的項目,那么這個項目的 url 會是http://server/wenqy/springcloudstudy。

                          每一個項目都有一個可視級別,控制著誰可以看到這個項目頁面和倉庫。 如果一個項目是私有的,這個項目的擁有者必須明確授權從而使特定的用戶可以訪問。 一個內部的項目可以被所有登錄的人看到,而一個公開的項目則是對所有人可見的。 注意,這種控制既包括git fetch的使用也包括對項目 web 用戶界面的訪問。

                          配置SSH Keys

                          我們需要經常免登錄git賬號進行推送代碼,這時需要配置SSH Keys,將生成的RSA 公鑰填入。

                          當通常情況下,我們已經在GitHub、碼云上已經分配了賬號,可能是相同的ID,也可能在一個平臺上有多個賬號,我們可能需要區分不同的平臺和賬號和一個平臺的多個賬號。我們可以看下同時配置GitHub兩個賬號,用命令生成公鑰私鑰對

                          ssh-keygen -t rsa -C "one@github.com"

                          ssh-keygen -t rsa -C "two@github.com"

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

                          配置config文件

                          在.ssh目錄下創建config文件,在config文件中添加以下內容:

                          #githubserveroneHostone.github.comHostnamegithub.comUseronePreferredAuthenticationspublickeyIdentityFileC:\\Users\\xmn-wenqy.HELLO-WORLD\\.ssh\\id_rsa#githubservertwoHosttwo.github.comHostnamegithub.comUsertwoPreferredAuthenticationspublickeyIdentityFileC:\\Users\\xmn-wenqy.HELLO-WORLD\\.ssh\\id_rsa_cloud

                          每個賬號單獨配置一個Host,每個Host要取一個別名,一般為每個Host主要配置HostName和IdentityFile兩個屬性,配置完保存即可。Host的名字可以自定義名字,不過這個會影響git相關命令,例如:Host one.github.com這樣定義的話,使用命令git clonegit@one.github.com:one/project.git,git@后面緊跟的名字改為one.github.com

                          為倉庫設置局部的用戶名和郵箱

                          #取消全局用戶名/郵箱配置gitconfig--global--unsetuser.namegitconfig--global--unsetuser.email#單獨為每個repo設置用戶名/郵箱gitconfiguser.name"one_name";gitconfiguser.email"one_email"gitconfiguser.name"two_name";gitconfiguser.email"two_email"

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

                          鉤子

                          GitLab 在項目和系統級別上都支持鉤子程序。 對任意級別,當有相關事件發生時,GitLab 的服務器會執行一個包含描述性 JSON 數據的 HTTP 請求。 這是自動化連接你的 git 版本庫和 GitLab 實例到其他的開發工具,比如 CI 服務器,聊天室,或者部署工具的一個極好方法。

                          對應root超級用戶,有更多的管理權限,有管理面板,可以對使用者、項目進行管理和統計分析等等。

                          架構

                          gitlab 依賴的組件默認安裝在/var/opt/gitlab/目錄下

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

                          此外,官方推薦服務器CPU核數至少4核,存儲空間不少于gitlab所有存儲庫之和,磁盤最好采用邏輯卷管理方便擴展硬盤驅動器,gitlab占用太多內存,容易導致服務器崩潰,可以啟用swap分區,緩解內存壓力,例如,阿里云ECS默認是沒有開啟swap的,這值得注意一下。日志目錄默認安裝在/var/log/gitlab路徑下。還應該注意Gitlab的性能優化、數據備份和遷移。

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

                          參考

                          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內存消耗大的問題:https://blog.csdn.net/ouyang_peng/article/details/84066417

                          入骨相思知不知

                          玲瓏骰子安紅豆

                          入我相思門,知我相思苦,長相思兮長相憶,短相思兮無窮極。

                          關鍵詞: 配置文件 命名空間 數據文件

                          相關閱讀

                          Av久草
                          <dl id="llxdb"></dl>
                          <video id="llxdb"><output id="llxdb"></output></video><dl id="llxdb"><output id="llxdb"></output></dl>
                          <output id="llxdb"></output>
                          <noframes id="llxdb"><dl id="llxdb"></dl>
                          <video id="llxdb"></video>
                          <output id="llxdb"><delect id="llxdb"><font id="llxdb"></font></delect></output>
                          <video id="llxdb"></video><dl id="llxdb"><output id="llxdb"></output></dl>
                          <dl id="llxdb"><delect id="llxdb"><font id="llxdb"></font></delect></dl><video id="llxdb"></video><dl id="llxdb"></dl><dl id="llxdb"><output id="llxdb"><font id="llxdb"></font></output></dl>