赞
踩
根据我的经验 部署Gitlab(社区版) 至少需要2核4g的服务器 带宽3~4M
前端自动化(其二)部署jenkins、配置环境、连接gitlab
http://www.hostbuf.com/t/988.html
http://www.hostbuf.com/downloads/finalshell_windows_x64.exe
(1)安装好后连接SSL
(1)安装基础环境
sudo yum update -y
(centos7.9更新)
(1.1)安装python3相关
sudo yum install epel-release -y
sudo yum install python3 -y
pip3 install --upgrade pip
(1.2)准备定时任务直接上传backups和密钥文件至百度网盘
执行:
pip3 install bypy
a. 生成授权链接:bypy info
b. 在网页成功登录后 会得到授权码然后返回服务器输入这个授权码
c. 查看连接情况:bypy list
如果一切正常,会列出百度云账户根目录下的文件和文件夹。
(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
(1)下载docker.sh脚本: curl -fsSL https://get.docker.com -o get-docker.sh
(2)检查docker是否下载成功 ls
(3)安装docker(5分钟或者更长):sh get-docker.sh
(4)启动Docker: systemctl start docker
(5)检查Docker运行状态(下图说明docker已经运行): systemctl status docker
可以同时执行 执行 1~5
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh && systemctl start docker && systemctl status docker
(6)设置Docker随系统启动: sudo systemctl enable docker
(1)配置Centos环境变量 export GITLAB_HOME=/srv/gitlab
(2)将以下这段代码填好指定的ip后复制到服务器终端上
或者添加永久环境变量(因为偶尔会忘):
vi /etc/environment
社区版
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
要换成你的服务器IP地址
--publish 8443:443 --publish 8080:80 --publish 8822:22 \
格式为外部端口:容器内部端口 8080、8822端口可以随意替换。
8080:80表示将主机的8080端口映射到容器的80端口(GitLab的Web服务)。
2222:22表示将主机的2222端口映射到容器的22端口(GitLab的SSH服务)。
8443:443保持不变,因为它是HTTPS服务的标准端口。
记得在服务器安全组中开启 8080、80、22、8822、8443、443端口
(3)查看 gitlab是否正在运行(刚部署完可能需要等一会,因为gitlab比较大,需要配置各种数据,): docker ps
starting 还需要再等一会
如果出现下图则可以执行第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换成你的服务器ip
(6)查看初始管理员 root
的密码 docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
(7)设置汉化:
(8)记得修改root 密码
(9)生成SSH秘钥
(9.1)ssh-keygen -t rsa -b 4096 -C "你的邮箱"
然后可以一直回车
(9.2)确保 ssh-agent 正在运行: eval "$(ssh-agent -s)"
(9.3)将 SSH 私钥添加到 ssh-agent:ssh-add ~/.ssh/id_rsa
(9.4)复制 SSH 公钥到剪贴板:cat ~/.ssh/id_rsa.pub
(10)进入后会发现拉取代码的命令并不是 8080端口 而是默认的80端口 接下来要修改一下gitlab配置
(10.1)进入 GitLab 容器: sudo docker exec -it gitlab /bin/bash
(10.2)修改gitlab.rb:vi /etc/gitlab/gitlab.rb
在文件最上边加这三行 ip换成自己服务器的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)使配置生效(这时不要重启哈): 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)退出等待一会 看内存4g多的时候差不多gitlab准备完了…:exit
(11)gitlab备份和恢复
当前gitlab版本16.8.0社区版,使用docker部署,执行备份(大家参考即可)
修改时区:sudo timedatectl set-timezone Asia/Shanghai
设置定时任务:crontab -e
0 8 * * * /root/backup_and_upload.sh
0 20 * * * /root/backup_and_upload.sh
(11.3)查看定时任务:crontab -l
备份命令 backup_and_upload.sh
记得给执行权限:chmod +x backup_and_upload.sh
#!/bin/bash #进入gitlab容器内部 docker exec -it gitlab bash echo "开始执行backup脚本" #bypy 脚本文件路径 BYPY="/usr/local/bin/bypy" #docker 脚本文件路径 DOCKER="/usr/bin/docker" #date 脚本文件路径 DATE="/usr/bin/date" # 获取当前日期和时间 CURRENT_TIME=$($DATE "+%Y_%m_%d__%H_%M_%S") # 设置目标备份路径(存到百度网盘上的文件夹名字) 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') | 创建新备份" $DOCKER exec gitlab gitlab-backup create echo "$($DATE '+%Y-%m-%d %H:%M:%S') | 将容器内部文件复制出来准备上传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上传至百度网盘" $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
恢复命令 down_gitlab_config.sh (手动恢复)
#!/bin/bash # 获取用户输入的目录名 echo "请输入要从百度网盘下载的目录名:" 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') | 从百度网盘上下载新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') | 开始恢复文件" 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 "执行恢复镜像命令" docker exec -it gitlab gitlab-ctl stop unicorn docker exec -it gitlab gitlab-ctl stop sidekiq echo "进入到 Docker 容器的 backups/ 目录并获取第一个 .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 "执行恢复命令" docker exec -it gitlab gitlab-backup restore BACKUP=$BACKUP_NAME echo "使配置生效" sudo docker exec -it gitlab /bin/bash -c 'gitlab-ctl reconfigure' echo "进入容器内部,并修改yml配置文件" sudo docker exec -it gitlab sed -i 's/port: 80/port: 8080/' /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml echo "重启GitLab服务" sudo docker exec -it gitlab gitlab-ctl restart
恢复过程中 输入两个 yes 然后希望你yes!
拓展:
开启gitlab容器: sudo docker start gitlab
停止gitlab容器: sudo docker stop gitlab
删除gitlab容器:sudo docker rm gitlab
祝大家学习和工作愉快!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。