一、 gitlab的使用
前面我们已经知道Git人人都是中心,那他们怎么交互数据呢?
• 使用GitHub或者码云等公共代码仓库
• 使用GitLab私有仓库
1. 安装配置gitlab
1.1 安装配置gitlab
安装
# 安装依赖,并启动ssh、防火墙开启相应端口、postfix [root@gitlab ~]# yum install -y curl policycoreutils-python openssh-server perl # 安装完成后会直接启动 [root@gitlab ~]# yum install gitlab-jh-16.0.3-jh.0.el7.x86_64.rpm
安装完就呈现出此画面这里我用的gitlab rpm包是从官网上下载的,接下来我们就初始化gitlab
初始化
# 以下两种方法都可以配置访问地址,第一种需要在yum安装前配置 [root@gitlab ~]# export EXTERNAL_URL='http://192.168.249.156' 或 [root@gitlab ~]# vim /etc/gitlab/gitlab.rb external_url 'http://10.12.153.169' [root@gitlab ~]# gitlab-ctl reconfigure (这个过程大约三分钟左右,根据自己机器的配置而定,至少两核四G)
这里改成本机的ip地址
状态
[root@gitlab ~]# gitlab-ctl status run: gitaly: (pid 4491) 48s; run: log: (pid 4087) 279s run: gitlab-monitor: (pid 4539) 44s; run: log: (pid 4251) 207s run: gitlab-workhorse: (pid 4501) 47s; run: log: (pid 4099) 273s run: logrotate: (pid 4125) 265s; run: log: (pid 4124) 265s run: nginx: (pid 4112) 271s; run: log: (pid 4111) 271s run: node-exporter: (pid 4175) 243s; run: log: (pid 4174) 243s run: postgres-exporter: (pid 4528) 45s; run: log: (pid 4223) 219s run: postgresql: (pid 3933) 343s; run: log: (pid 3932) 343s run: prometheus: (pid 4514) 46s; run: log: (pid 4156) 259s run: redis: (pid 3876) 355s; run: log: (pid 3875) 355s run: redis-exporter: (pid 4186) 237s; run: log: (pid 4185) 237s run: sidekiq: (pid 4078) 281s; run: log: (pid 4077) 281s run: unicorn: (pid 4047) 287s; run: log: (pid 4046) 287s
检查端口
要下载nginx yum -y install nginx
[root@gitlab ~]# netstat -lntup|grep 80 tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 4073/unicorn master tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4112/nginx: master tcp 0 0 0.0.0.0:8060 0.0.0.0:* LISTEN 4112/nginx: master
1.2 使用浏览器访问,进行web界面操作
这里是已经登陆到这个极狐(gitlab)界面了,此时我们第一次登陆,账号是root 初始密码在 /etc/gitlab/initial_root_password 这个目录下 我们只需要cat /etc/gitlab/initial_root_password 查看一下这个目录即可,切记此密码只有24小时时间生效,所以我们进去后第一件事情就是改自己的密码!!!
2. Gitlab 备份与恢复
1、查看系统版本和软件版本
[root@gitlab gitlab]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [root@gitlab gitlab]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 8.15.4
2、数据备份
打开/etc/gitlab/gitlab.rb配置文件,查看一个和备份相关的配置项:
gitlab_rails['backup_path'] = "/data/gitlab/backups"
该项定义了默认备份出文件的路径,可以通过修改该配置,并执行 gitlab-ctl reconfigure 或者 gitlab-ctl restart 重启服务生效。
执行备份命令进行备份
/opt/gitlab/bin/gitlab-rake gitlab:backup:create
也可以添加到 crontab 中定时执行:
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
可以到/data/gitlab/backups找到备份包,解压查看,会发现备份的还是比较全面的,数据库、repositories、build、upload等分类还是比较清晰的。
设置备份保留时常,防止每天执行备份,肯定有目录被爆满的风险,打开/etc/gitlab/gitlab.rb配置文件,找到如下配置:
gitlab_rails['backup_keep_time'] = 604800
设置备份保留7天(7360024=604800),秒为单位,如果想增大或减小,可以直接在该处配置,并通过gitlab-ctl restart 重启服务生效。
备份完成,会在备份目录中生成一个当天日期的tar包。
3、测试数据恢复
(1) 安装部署 gitlab server
具体步骤参见上面:gitlab server 搭建过程
(2) 恢复 gitlab
打开/etc/gitlab/gitlab.rb配置文件,查看一个和备份相关的配置项:
gitlab_rails['backup_path'] = "/data/gitlab/backups"
修改该配置,定义了默认备份出文件的路径,并执行 gitlab-ctl reconfigure 或者 gitlab-ctl restart 重启服务生效。
恢复前需要先停掉数据连接服务:
[root@gitlab ]# gitlab-ctl stop unicorn [root@gitlab ]# gitlab-ctl stop sidekiq
如果是台新搭建的主机,不需要操作,理论上不停这两个服务也可以。停这两个服务是为了保证数据一致性。将老服务器/data/gitlab/backups目录下的备份文件拷贝到新服务器上的/data/gitlab/backups
[root@gitlab gitlab]# rsync -avz 1530773117_2019_03_05_gitlab_backup.tar 192.168.95.135:/data/gitlab/backups/
注意权限:600权限是无权恢复的。 实验环境可改成了777,生产环境建议修改属主属组
[root@gitlab backups]# pwd /data/gitlab/backups [root@gitlab backups]# chmod 777 1530773117_2019_03_05_gitlab_backup.tar [root@gitlab backups]# ll total 17328900 -rwxrwxrwx 1 git git 17744793600 Jul 5 14:47 1530773117_2018_07_05_gitlab_backup.tar
执行下面的命令进行恢复:后面再输入两次yes就完成恢复了。
[root@gitlab backups]# gitlab-rake gitlab:backup:restore BACKUP=1530773117_2018_07_05_gitlab_backup.tar
恢复完成后,启动刚刚的两个服务,或者重启所有服务,再打开浏览器进行访问,发现数据和之前的一致:
[root@gitlab backups]# gitlab-ctl start unicorn [root@gitlab backups]# gitlab-ctl start sidekiq 或 [root@gitlab backups]# gitlab-ctl restart
注意:通过备份文件恢复gitlab必须保证两台主机的gitlab版本一致,否则会提示版本不匹配
3. 邮箱配置
[root@gitlab ]# vim /etc/gitlab/gitlab.rb gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.163.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "newrain_wang@163.com" gitlab_rails['smtp_password'] = "UWYNCPQOBQFCDLIW" gitlab_rails['smtp_domain'] = "smtp.163.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = false gitlab_rails['smtp_tls'] = true gitlab_rails['smtp_pool'] = false gitlab_rails['gitlab_email_from'] = 'newrain_wang@163.com' [root@gitlab ]# gitlab-ctl reconfigure