Gitlab服務(wù)搭建冬骚,遠程備份以及還原

一.首先在linux服務(wù)器上安裝Gitlab服務(wù)需要依賴的組件,步驟如下:

? ? ①yum install policycoreutils-python

? ? ②如果使用默認的postfix發(fā)送郵件,執(zhí)行后面的步驟只冻,如果使用自己的smtp服務(wù)器來發(fā)送可以直接進入gitlab安裝步驟庇麦。

? ? ③yum install postfix 安裝postfix

? ? ④systemctl enable postfix 啟動postfix

? ? ⑤vim /etc/postfix/main.cf 修改 inet_interfaces = interface 為 inet_interfaces = all

? ? ⑥/usr/sbin/alternatives --set mta /usr/sbin/sendmail.postfix,然后alternatives --display mta 檢查是否成功修改mta

? ? ⑦如果hostname為數(shù)字啟動服務(wù)會失敗喜德,需要修改hostname山橄,執(zhí)行hostnamectl set-hostname localhost.localdomain 修改hostname

? ? ⑧systemctl start postfix 啟動郵件服務(wù)postfix

二.接下來進入gitlab安裝:

1.下載對應(yīng)的gitlab rpm包,這里以gitlab-ce 12.5.7為例舍悯,在linux服務(wù)器上執(zhí)行

wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.5.7-ce.0.el7.x86_64.rpm/download.rpm航棱,下載完成后,執(zhí)行rpm -ivh gitlab-ce-12.5.7-ce.0.el7.x86_64.rpm命令進行安裝

2.安裝完成后萌衬,會提示修改配置文件饮醇,vim /etc/gitlab/gitlab.rb 進行編輯,按需修改其中的屬性秕豫,external_url設(shè)置為域名朴艰,如果設(shè)置了端口,不能和unicorn['port']重復(fù)混移,git_data_dirs為倉庫存放目錄祠墅,gitlab_rails['gitlab_shell_ssh_port']是ssh端口,gitlab_rails['backup_path']為備份文件路徑歌径;其他的屬性可以查閱說明文檔毁嗦。

3.修改完配置后,執(zhí)行g(shù)itlab-ctl reconfigure 重載配置回铛,然后重啟?gitlab-ctl restart狗准。此時訪問gitlab(剛才配置的external_url地址),第一次會提示修改root密碼茵肃,按要求修改即可腔长。如果出現(xiàn)502錯誤,通常是配置文件錯誤免姿,如端口沖突饼酿,reconfigure未成功等,或者是機器內(nèi)存不足導(dǎo)致的胚膊。

4.如果要測試郵件發(fā)送是否OK故俐,可以執(zhí)行g(shù)itlab-rails console進入gitlab控制臺,然后輸入Notify.test_email("xxx@xxx.com","test","test").deliver_now 進行發(fā)送測試是否收到郵件紊婉。

5.常見的gitlab-ctl命令如下:

? ??gitlab-ctl start 啟動服務(wù)

????gitlab-ctl reconfigure 重新編譯配置

????gitlab-ctl restart 重啟gitlab服務(wù)

????gitlab-ctl status 查看運行狀態(tài)

????gitlab-ctl stop 停止服務(wù)

????gitlab-ctl tail 查看運行日志

6.如果需要升級gitlab版本药版,下載對應(yīng)的rpm包,執(zhí)行rpm -Uvh gitlab-ce-XXX.rpm喻犁,不同的大版本之間通常會提示錯誤無法升級槽片,此時需要按照提示先升級到當前大版本的最后一個小版本何缓,再進行升級。gitlab重裝與升級有許多坑(后面會說到)还栓,非必要時不建議進行升級碌廓。

三.企業(yè)項目代碼倉庫通常需要進行數(shù)據(jù)備份,gitlab-ce本身并不支持集群方案剩盒,官方推薦的備份方案是通過gitlab自帶的備份命令配合rsync來實現(xiàn)備份與恢復(fù)的谷婆。這里我使用定時任務(wù)調(diào)用gitlab自帶的備份命令加上scp遠程傳輸?shù)絺浞輽C器上,當主機宕機或者硬盤損壞時辽聊,可以啟用備機導(dǎo)入備份文件恢復(fù)服務(wù)的方式纪挎,具體操作如下:

1.兩臺機器建立免密ssh

? ? ①進入主機/root/.ssh目錄下(此目錄如果不存在,可ssh localhost生成或者自行創(chuàng)建)

? ? ②執(zhí)行?ssh-keygen -t rsa生成密鑰對跟匆,其中异袄,id_rsa是私鑰,id_rsa.pub是公鑰

? ? ③復(fù)制公鑰到備機/root/.ssh目錄下玛臂,假設(shè)命名為key_node1烤蜕,然后執(zhí)行命令追加主機的公鑰到備機認證文件中 cat key_node1 >>?authorized_keys。(>>代表追加寫入垢揩,>代表覆蓋寫入)

2.測試下直接從主機ssh到備機玖绿,如果不需要密碼則連接建立成功敛瓷。gitlab提供的備份命令不包括配置文件的備份叁巨,因此我們需要單獨備份以下配置文件:

? ? ①/etc/gitlab/gitlab.rb(gitlab核心配置文件)

? ? ②/etc/gitlab/gitlab-secrets.json(數(shù)據(jù)庫需要的secrets文件)

? ? ③/var/opt/gitlab/nginx/conf(nginx配置)

? ? ④/etc/postfix/main.cf(如果不使用postfix則不需要)

3.假設(shè)gitlab.rb中設(shè)置的備份目錄為/var/opt/gitlab/backups,我們要做到定期備份呐籽,可以在這個目錄下以時間命名作為備份文件夾锋勺,編寫類似如下腳本:

? ??LocalDir=/var/opt/gitlab/backups

? ??RemoteDir=$LocalBackDir/remote

? ??bakname=$(date -d "today" +"%Y%m%d_%H%M%S")

????BakDir=$LocalDir/$bakname

????mkdir $BakDir

? ? 此處建議可以echo一些日志記錄到某個日志文件,echo "gitlab backup begin" >> xxx.log

? ? cp?/etc/gitlab/gitlab.rb?$BakDir (其他配置同理)

? ??gitlab-backup create STRATEGY=copy(備份策略默認為直接壓縮狡蝶,此時如果push代碼會導(dǎo)致備份失敗庶橱,所以我這里選用復(fù)制策略,對空間有一定要求贪惹,但是可以保證不會發(fā)生提交代碼導(dǎo)致的備份失敗苏章,另外,12.1以前的gitlab版本奏瞬,備份命令為gitlab-rake gitlab:backup:create

? ? 假設(shè)我們每天生成一個備份枫绅,那么此時只需要將最新的備份復(fù)制到BakDir中,我們以查找30分? ? ? ? ? 鐘內(nèi)生成的備份文件為例硼端,target=`find $LocalBackDir -type f -mmin -30 -name '*.tar'`

? ? mv -bfu $target $BakDir 移動文件

? ??scp -r -P 22 $BakDir root@{備機ip}:{備機端口}

4.crontab -e 將腳本掛載到定時任務(wù)中并淋。

5.備機恢復(fù)時,將遠程備份目錄下最新的文件夾下的配置文件替換到對應(yīng)目錄下珍昨,然后復(fù)制gitlab生成的備份tar包到gitlab.rb中配置的備份目錄中县耽,執(zhí)行itlab-backup restore?BACKUP={tar包版本號句喷,假如tar包名字123_gitlab_backup.tar,則版本號為123}兔毙,12.1以前的gitlab版本唾琼,restore命令為gitlab-rake gitlab:backup:restore。執(zhí)行完成后澎剥,gitlab-ctl reconfigure 然后 gitlab-ctl restart 即可

6.gitlab服務(wù)端遷移后父叙,由于ip地址發(fā)生了變化,在客戶端需要刪除C:/Users/xxx/.ssh/known_hosts文件否則無法拉取提交代碼肴裙。

四.gitlab重裝升級過程中的一些坑及對應(yīng)的解決辦法

1.gitlab-ctl reconfigure 執(zhí)行到redis部分卡住趾唱,CTRL+C終止后,執(zhí)行 sudo systemctl restart gitlab-runsvdir 再重新 reconfigure蜻懦。

2.gitlab-ctl reconfigure報錯?

sysctl: cannot open "/etc/sysctl.d/90-omnibus-gitlab-kernel.shmall.conf": No such file or directory甜癞,修改unicorn端口,再重新 reconfigure會生成對應(yīng)的文件宛乃。

3.gitlab-ctl reconfigure報錯

--sysctl: cannot open "/etc/sysctl.d/90-omnibus-gitlab-kernel.sem.conf": No such file or directory

--sysctl: cannot open "/etc/sysctl.d/90-omnibus-gitlab-net.core.somaxconn.conf": No such file or directory

丟失了這兩個配置文件悠咱,進入/etc/sysctl.d目錄,ll以后發(fā)現(xiàn)征炼,這兩個文件都是通過鏈接到/opt/gitlab/embedded/etc/目錄下析既,這里沒有找到好的辦法,我是從備機上復(fù)制這兩個文件到上面的位置谆奥,重新 reconfigure 即可眼坏,應(yīng)該是重裝過程中操作失誤導(dǎo)致的文件丟失。

五.搭建好gitlab服務(wù)端后酸些,客戶端配置如下

1.下載gitbash宰译,查看是否已配置公鑰 cat ~/.ssh/id_rsa.pub

2.如果沒有,生成密鑰 ssh-keygen -t rsa -C "xxx@xxx.com"

3.登陸gitlab魄懂,在settings中添加密鑰沿侈,密鑰通過 cat ~/.ssh/id_rsa.pub 查看

4.配置 git config --global user.name "xxx" git config --global user.email "xxx@xxx.com"

5.在目標文件夾下打開gitbash,git clone xxx 克隆項目

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末市栗,一起剝皮案震驚了整個濱河市缀拭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌填帽,老刑警劉巖蛛淋,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異盲赊,居然都是意外死亡铣鹏,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門哀蘑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诚卸,“玉大人葵第,你說我怎么就攤上這事『夏纾” “怎么了卒密?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棠赛。 經(jīng)常有香客問我哮奇,道長,這世上最難降的妖魔是什么睛约? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任鼎俘,我火速辦了婚禮,結(jié)果婚禮上辩涝,老公的妹妹穿的比我還像新娘贸伐。我一直安慰自己,他們只是感情好怔揩,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布捉邢。 她就那樣靜靜地躺著,像睡著了一般商膊。 火紅的嫁衣襯著肌膚如雪伏伐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天晕拆,我揣著相機與錄音藐翎,去河邊找鬼。 笑死潦匈,一個胖子當著我的面吹牛阱高,可吹牛的內(nèi)容都是我干的赴背。 我是一名探鬼主播锻霎,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蝇庭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了凰锡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤圈暗,失蹤者是張志新(化名)和其女友劉穎掂为,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體员串,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡勇哗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了寸齐。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欲诺。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡抄谐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扰法,到底是詐尸還是另有隱情蛹含,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布塞颁,位于F島的核電站浦箱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏祠锣。R本人自食惡果不足惜酷窥,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望伴网。 院中可真熱鬧竖幔,春花似錦、人聲如沸是偷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蛋铆。三九已至馋评,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刺啦,已是汗流浹背留特。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玛瘸,地道東北人蜕青。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像糊渊,于是被迫代替她去往敵國和親右核。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容