根據(jù)我的經(jīng)驗(yàn) 部署Gitlab(社區(qū)版) 至少需要2核4g的服務(wù)器 帶寬3~4M
前端自動(dòng)化(其一)部署gitlab(本章?。?/p>
前端自動(dòng)化(其二)部署jenkins、配置環(huán)境、連接gitlab
前端自動(dòng)化(其三)持續(xù)集成和持續(xù)部署
1. 在自己電腦上安裝終端:寶塔ssl終端 或者 FinalShell,根據(jù)喜好安裝即可
http://www.hostbuf.com/t/988.html
http://www.hostbuf.com/downloads/finalshell_windows_x64.exe
(1)安裝好后連接SSL
2. 服務(wù)器(我的是香草云2核4G,大家可以隨意):Centos7.9
(1)安裝基礎(chǔ)環(huán)境sudo yum update -y
(centos7.9更新)
(1.1)安裝python3相關(guān)sudo yum install epel-release -y
sudo yum install python3 -y
pip3 install --upgrade pip
(1.2)準(zhǔn)備定時(shí)任務(wù)直接上傳backups和密鑰文件至百度網(wǎng)盤
執(zhí)行:
pip3 install bypy
a. 生成授權(quán)鏈接:bypy info
b. 在網(wǎng)頁(yè)成功登錄后 會(huì)得到授權(quán)碼然后返回服務(wù)器輸入這個(gè)授權(quán)碼
c. 查看連接情況:bypy list
如果一切正常,會(huì)列出百度云賬戶根目錄下的文件和文件夾。
(1.2)下面這一行按需安裝sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make zlib zlib-devel libffi-devel firewalld nano zip unzip -y
3. 安裝Docker
(1)下載docker.sh腳本: curl -fsSL https://get.docker.com -o get-docker.sh
(2)檢查docker是否下載成功 ls
(3)安裝docker(5分鐘或者更長(zhǎng)):sh get-docker.sh
(4)啟動(dòng)Docker: systemctl start docker
(5)檢查Docker運(yùn)行狀態(tài)(下圖說(shuō)明docker已經(jīng)運(yùn)行): systemctl status docker
可以同時(shí)執(zhí)行 執(zhí)行 1~5
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && systemctl start docker && systemctl status docker
(6)設(shè)置Docker隨系統(tǒng)啟動(dòng): sudo systemctl enable docker
4. 執(zhí)行GitLab Docker鏡像
(1)配置Centos環(huán)境變量 export GITLAB_HOME=/srv/gitlab
(2)將以下這段代碼填好指定的ip后復(fù)制到服務(wù)器終端上
或者添加永久環(huán)境變量(因?yàn)榕紶枙?huì)忘):
vi /etc/environment
社區(qū)版
sudo docker run --detach \
--hostname 1.2.3.4 \
--publish 8443:443 --publish 8080:80 --publish 8822:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:16.8.0-ce.0
其中:1.2.3.4
要換成你的服務(wù)器IP地址 --publish 8443:443 --publish 8080:80 --publish 8822:22 \
格式為外部端口:容器內(nèi)部端口 8080、8822端口可以隨意替換。
8080:80表示將主機(jī)的8080端口映射到容器的80端口(GitLab的Web服務(wù))。
2222:22表示將主機(jī)的2222端口映射到容器的22端口(GitLab的SSH服務(wù))。
8443:443保持不變,因?yàn)樗荋TTPS服務(wù)的標(biāo)準(zhǔn)端口。記得在服務(wù)器安全組中開啟 8080、80、22、8822、8443、443端口
(3)查看 gitlab是否正在運(yùn)行(剛部署完可能需要等一會(huì),因?yàn)間itlab比較大,需要配置各種數(shù)據(jù),): docker ps
starting 還需要再等一會(huì)
如果出現(xiàn)下圖則可以執(zhí)行第6步(我花了10分鐘左右)
(4)檢查gitlab版本:docker exec -it gitlab gitlab-rake gitlab:env:info
(5)使用瀏覽器打開你的極狐Gitlab http://1.2.3.4:8080
1.2.3.4換成你的服務(wù)器ip
(6)查看初始管理員 root
的密碼 docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
(7)設(shè)置漢化:
(8)記得修改root 密碼
(9)生成SSH秘鑰
(9.1)ssh-keygen -t rsa -b 4096 -C "你的郵箱"
然后可以一直回車
(9.2)確保 ssh-agent 正在運(yùn)行: eval "$(ssh-agent -s)"
(9.3)將 SSH 私鑰添加到 ssh-agent:ssh-add ~/.ssh/id_rsa
(9.4)復(fù)制 SSH 公鑰到剪貼板:cat ~/.ssh/id_rsa.pub
(10)進(jìn)入后會(huì)發(fā)現(xiàn)拉取代碼的命令并不是 8080端口 而是默認(rèn)的80端口 接下來(lái)要修改一下gitlab配置
(10.1)進(jìn)入 GitLab 容器: sudo docker exec -it gitlab /bin/bash
(10.2)修改gitlab.rb:vi /etc/gitlab/gitlab.rb
在文件最上邊加這三行 ip換成自己服務(wù)器的ip
external_url 'http://198.12.1.1'
gitlab_rails['gitlab_ssh_host'] = '198.12.1.1'
gitlab_rails['gitlab_shell_ssh_port'] = 8822
(10.2)使配置生效(這時(shí)不要重啟哈): gitlab-ctl reconfigure
(10.3)修改gitlab.yml配置:vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
(10.4)重啟 GitLab: gitlab-ctl restart
(10.5)退出等待一會(huì) 看內(nèi)存4g多的時(shí)候差不多gitlab準(zhǔn)備完了…:exit
(11)gitlab備份和恢復(fù)
當(dāng)前gitlab版本16.8.0社區(qū)版,使用docker部署,執(zhí)行備份(大家參考即可)
修改時(shí)區(qū):sudo timedatectl set-timezone Asia/Shanghai
設(shè)置定時(shí)任務(wù):crontab -e
0 8 * * * /root/backup_and_upload.sh
0 20 * * * /root/backup_and_upload.sh
(11.3)查看定時(shí)任務(wù):crontab -l
備份命令 backup_and_upload.sh
記得給執(zhí)行權(quán)限:chmod +x backup_and_upload.sh
#!/bin/bash
#進(jìn)入gitlab容器內(nèi)部 docker exec -it gitlab bash
echo "開始執(zhí)行backup腳本"
#bypy 腳本文件路徑
BYPY="/usr/local/bin/bypy"
#docker 腳本文件路徑
DOCKER="/usr/bin/docker"
#date 腳本文件路徑
DATE="/usr/bin/date"
# 獲取當(dāng)前日期和時(shí)間
CURRENT_TIME=$($DATE "+%Y_%m_%d__%H_%M_%S")
# 設(shè)置目標(biāo)備份路徑(存到百度網(wǎng)盤上的文件夾名字)
BACKUP_PATH="/gitlab_$CURRENT_TIME"
echo "$($DATE '+%Y-%m-%d %H:%M:%S') | 刪除原有備份"
$DOCKER exec gitlab bash -c 'rm /var/opt/gitlab/backups/*'
echo "$($DATE '+%Y-%m-%d %H:%M:%S') | 刪除容器外部備份"
rm -r /srv/backups
rm /srv/gitlab.rb
rm /srv/gitlab-secrets.json
echo "$($DATE '+%Y-%m-%d %H:%M:%S') | 創(chuàng)建新備份"
$DOCKER exec gitlab gitlab-backup create
echo "$($DATE '+%Y-%m-%d %H:%M:%S') | 將容器內(nèi)部文件復(fù)制出來(lái)準(zhǔn)備上傳backups gitlab.rb gitlab-secrets.json"
$DOCKER cp gitlab:/var/opt/gitlab/backups/ /srv/
$DOCKER cp gitlab:/etc/gitlab/gitlab.rb /srv/gitlab.rb
$DOCKER cp gitlab:/etc/gitlab/gitlab-secrets.json /srv/gitlab-secrets.json
echo "$($DATE '+%Y-%m-%d %H:%M:%S') | 將新包、gitlab.rb、gitlab-secrets.json上傳至百度網(wǎng)盤"
$BYPY upload /srv/backups/ $BACKUP_PATH/backups/
$BYPY upload /srv/gitlab.rb $BACKUP_PATH/gitlab.rb
$BYPY upload /srv/gitlab-secrets.json /$BACKUP_PATH/gitlab-secrets.json
恢復(fù)命令 down_gitlab_config.sh (手動(dòng)恢復(fù))
#!/bin/bash
# 獲取用戶輸入的目錄名
echo "請(qǐng)輸入要從百度網(wǎng)盤下載的目錄名:"
read DOWNLOAD_DIR
echo "$(date '+%Y-%m-%d %H:%M:%S') | 刪除backups"
rm -rf /srv/backups
rm -rf /srv/gitlab.rb
rm -rf /srv/gitlab-secrets.json
echo "$(date '+%Y-%m-%d %H:%M:%S') | 從百度網(wǎng)盤上下載新gitlab.rb gitlab-secrets.json backups"
bypy download $DOWNLOAD_DIR/backups /srv/backups
bypy download $DOWNLOAD_DIR/gitlab.rb /srv/gitlab.rb
bypy download $DOWNLOAD_DIR/gitlab-secrets.json /srv/gitlab-secrets.json
echo "$(date '+%Y-%m-%d %H:%M:%S') | 開始恢復(fù)文件"
docker cp /srv/gitlab.rb gitlab:/etc/gitlab/
docker cp /srv/gitlab-secrets.json gitlab:/etc/gitlab/
docker cp /srv/backups/. gitlab:/var/opt/gitlab/backups/
echo "執(zhí)行恢復(fù)鏡像命令"
docker exec -it gitlab gitlab-ctl stop unicorn
docker exec -it gitlab gitlab-ctl stop sidekiq
echo "進(jìn)入到 Docker 容器的 backups/ 目錄并獲取第一個(gè) .tar 文件的名字"
BACKUP_FILE=$(docker exec -it gitlab /bin/bash -c 'ls /var/opt/gitlab/backups/*.tar | head -n 1 | awk -F/ "{gsub(/_gitlab_backup.tar$/, \"\", \$NF); print \$NF}"')
echo "執(zhí)行恢復(fù)命令"
docker exec -it gitlab gitlab-backup restore BACKUP=$BACKUP_NAME
echo "使配置生效"
sudo docker exec -it gitlab /bin/bash -c 'gitlab-ctl reconfigure'
echo "進(jìn)入容器內(nèi)部,并修改yml配置文件"
sudo docker exec -it gitlab sed -i 's/port: 80/port: 8080/' /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
echo "重啟GitLab服務(wù)"
sudo docker exec -it gitlab gitlab-ctl restart
恢復(fù)過(guò)程中 輸入兩個(gè) yes 然后希望你yes!
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-818845.html
拓展:
開啟gitlab容器: sudo docker start gitlab
停止gitlab容器: sudo docker stop gitlab
刪除gitlab容器:sudo docker rm gitlab
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-818845.html
祝大家學(xué)習(xí)和工作愉快?。?!
到了這里,關(guān)于Centos使用Docker搭建自己的Gitlab社區(qū)版16.8.0-ce.0(設(shè)置漢化 修改密碼 設(shè)置SSH秘鑰 添加拉取命令端口號(hào) 備份至網(wǎng)盤和恢復(fù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!