linux :CentOS Linux release 7.7.1908
gitlab: 11.5.1
注意:应为我gitlab之前的备份版本是gitlab11.5.1的,所以我第一步安装的gitlab版本也就选择11.5.1了,应为备份恢复gitlab版本必须一致,否则无法恢复!
进入你的老服务器的gitlab备份文件目录 /var/opt/gitlab/backups/
cd /var/opt/gitlab/backups
执行备份命令:
gitlab-rake gitlab:backup:create
执行过程可能需要一点时间。成功后会打出一个压缩文件1577425161_2019_12_27_11.5.1_gitlab_backup.tar
把压缩文件拷贝出来备用!
注意:如果想要迁移恢复gitlab那么版本必须跟老服务器gitlab版本保持一致
1:创建gitlab镜像文件存放地址
mkdir /usr/gitlab
cd /usr/gitlab
2:安装所需的依赖:curl,policycoreutils-python,ssh,防火墙,postfix(用于邮件通知) ,wget
(1):安装 curl,policycoreutils-python,ssh
sudo yum install -y curl policycoreutils-python openssh-server
将SSH服务设置成开机自启动,安装命令:
sudo systemctl enable sshd
启动SSH服务,安装命令:
sudo systemctl start sshd
(2):安装防火墙
yum install firewalld systemd -y
complete!表示安装成功!
开启防火墙命令:
service firewalld start
添加http服务到firewalld。(pemmanent表示永久生效,若不加--permanent系统下次启动后就会失效)
sudo firewall-cmd --permanent --add-service=http
重启防火墙命令:
sudo systemctl reload firewalld
防火墙可以按照自己的需求进行开通或者关闭!!
(3):postfix(用于邮件通知)
安装命令:
sudo yum install postfix
设置为开机自动启动:
sudo systemctl enable postfix
启动postfix
sudo systemctl start postfix
启动postfix可能会报错
解决方法:
vi /etc/postfix/main.cf的设置
inet_protocols = ipv4
inet_interfaces = all
然后重新启动就可以了!
(4):安装wget (从外网上下载插件)
yum -y install wget
nothing to do说明自带wget已经安装好了!
3:2上面所有的依赖安装完成后,开始下载gitlab镜像并安装!
(1)下载gitlab镜像
查找镜像地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
找到我们要安装的11.5.1的版本地址
下载命令:
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.5.1-ce.0.el7.x86_64.rpm
下载需要点时间。
(2)安装gitlab
下载完成后,需要改变镜像文件的读写权限
权限命令:
chmod 777 gitlab-ce-11.5.1-ce.0.el7.x86_64.rpm
安装gitlab 命令:
rpm -i gitlab-ce-11.5.1-ce.0.el7.x86_64.rpm
安装过程需要些时间,如果出现下图,则说明安装成功。
(3)修改gitlab配置文件指定服务器ip和自定义端口
vi /etc/gitlab/gitlab.rb
http://服务器ip:端口
ps:
注意这里设置的端口不能被占用,默认是8080端口,如果8080已经使用,请自定义其它端口,并在防火墙设置开放相对应得端口,如果你防火墙是开启的已经要记得把上面设置的gitlab端口加入防火墙白名单!
保存修改配置
gitlab-ctl reconfigure
并启动GitLab
gitlab-ctl restart
然后就可以通过 http://服务器ip:端口 访问giitlab页面了!
如果无法访问,需要排查为什么无法访问:
这里我就给大家提供个思路,具体就不详细介绍了
思路:本机ping 服务器ip ,本机 telnet 服务器ip gitlab端口
如果无法telnet 通gitlab的端口,需要查看gitlab的端口以及gitlab的nginx默认80端口 配置是否正确是否被占用,
检查防火墙白名单,如果用的阿里云或者腾讯云等需要检查云服务器端口安全组是否配置放行!
直接输入服务器ip和指定端口进行访问
初始账户: root 密码:5iveL!fe
第一次登录修改密码
(4)配置gitlab通知邮件
编辑配置文件命令:
vi /etc/gitlab/gitlab.rb
我使用的qq邮箱,在邮箱设置里打开POP3/SMTP服务,并保存好16位授权码。
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "******@qq.com"
gitlab_rails['smtp_password'] = "授权码"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '******@qq.com'
修改上面的邮箱地址和授权码,其它的不要动。
保存好后重启使配置生效
gitlab-ctl reconfigure
执行命令进入控制台:
gitlab-rails console
发送一封测试邮件:Notify.test_email('收件人邮箱', 'title', 'body').deliver_now
这里有可能会报
SocketError (getaddrinfo: Name or service not known) 这个错误
前面都正常,最后报了错。看起来前面的配置是没有问题的。
这是DNS的问题,自动获取DNS改为手动配置,填8.8.8.8。(怎么设置linux的dns自行百度)
继续测试发送邮件成功,问题解决。
至此。gitlab的全新安装步骤已经讲完!如果你只需要安装gitlab,就不用看第三步!
(1)进入你新服务器的gitlab备份目录
cd /var/opt/gitlab/backups/
把你第一步从老服务器拷贝出来的 1577425161_2019_12_27_11.5.1_gitlab_backup.tar 备份文件拷贝到此目录
我用的是xshell 和xftp上传拷贝文件
(2)给文件777权限,不然无法恢复
chmod 777 1577425161_2019_12_27_11.5.1_gitlab_backup.tar
(3)执行命令停止相关数据连接服务
# 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
(4)执行命令从备份文件中恢复Gitlab
gitlab-rake gitlab:backup:restore BACKUP=备份文件编号
例如我的备份文件的编号是1577425161_2019_12_27_11.5.1,因此执行下面的命令即可恢复gitlab
gitlab-rake gitlab:backup:restore BACKUP=1577425161_2019_12_27_11.5.1
敲完命令后,出现第一个交互页面
输入“yes”继续
反正出现都都敲yes
出现这个页面说明备份恢复成功了!
(4)启动Gitlab
sudo gitlab-ctl start
需要注意的是,恢复完成后,你gitlab的所有权限和账户都是老的gitlab上面的一模一样!
如果忘了可以往下看第四步,教你强行改密码!
(1)切换到git账户
su - git
(2)进入gitlab命令行(时间可能有点长)
gitlab-rails console production
找到第一个用户,也就是超级管理员
user = User.where(id:1).first
修改密码(最后八位带大小写字符)
user.password='xx123456XX'
别忘了保存!
user.save
重启gitlab服务!
gitlab-ctl restart
好了,就可以用新密码登录了!
老项目都恢复了!
在crontab文件里面,每一行代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,每个字段之间用空格分割,没用的段用*代替,格式如下:
m h dom mon dow user command
其中:
m: 表示分钟,可以是从0到59之间的任何整数。
h:表示小时,可以是从0到23之间的任何整数。
dom:表示日期,可以是从1到31之间的任何整数。
mon:表示月份,可以是从1到12之间的任何整数。
dow:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
user : 表示执行的用户。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件(如shell文件)。
实现每天凌晨2点进行一次自动备份:通过crontab使用备份命令实现,需重启cron服务
编辑定时任务设置
vi /etc/crontab
添加定时任务项
# 添加定时任务,每天凌晨两点,执行gitlab备份
0 2 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
配置完了重启定时任务
/bin/systemctl restart crond.service
设置备份过期时间:
默认只保存最近7天的备份,但是需要开启,编辑 /etc/gitlab/gitlab.rb 配置文件,找到gitlab_rails[‘backup_keep_time’],设置为你想要设置的值。
我这里设置成两天172800
修改完了后
保存修改配置
gitlab-ctl reconfigure
启动GitLab
gitlab-ctl restart
好了,至此,全部关于gitlab的搭建,备份,迁移,强制修改密码教程已经全部讲完,码字不易,如果能帮助到你,请点赞评论,谢谢支持!
查看版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
实时查看日志
gitlab-ctl tail
数据库关系升级
gitlab-rake db:migrate
清理redis缓存
gitlab-rake cache:clear
升级GitLab-ce 版本
yum update gitlab-ce
升级PostgreSQL最新版本
gitlab-ctl pg-upgrade
启动/停止/重启所有 gitlab 组件:
gitlab-ctl start/stop/restart
启动指定模块组件:
gitlab-ctl start redis/postgresql/gitlab-workhorse/logrotate/nginx/sidekiq/unicorn
停止指定模块组件:
gitlab-ctl stop 模块名
查看服务状态
gitlab-ctl status
生成配置并启动服务
gitlab-ctl reconfigure
实时查看所有日志
gitlab-ctl tail
实时各个模块日志
gitlab-ctl tail redis/postgresql/gitlab-workhorse/logrotate/nginx/sidekiq/unicorn
GitLab由主要由以下服务构成,他们共同承担了Gitlab的运作需要
nginx: 静态web服务器
gitlab-shell: 用于处理Git命令和修改authorized keys列表
gitlab-workhorse: 轻量级的反向代理服务器
logrotate:日志文件管理工具
postgresql:数据库
redis:缓存数据库
sidekiq:用于在后台执行队列任务(异步执行)
unicorn:HTTP服务,GitLab Rails应用是托管在这个服务器上面的。
主配置文件: /etc/gitlab/gitlab.rb
文档根目录: /opt/gitlab
默认存储库位置: /var/opt/gitlab/git-data/repositories
Nginx配置文件: /var/opt/gitlab/nginx/conf/gitlab-http.conf
Postgresql数据目录: /var/opt/gitlab/postgresql/data