Gitlab搭建
- 一.gitlab安装
- 二.gitlab安装目录
- 三.gitlab常用命令汇总
- 四.gitlab访问测试
- 五.gitlab图形化操作
-
- 1.gitlab关闭自动注册
- 2.gitlab免密登录
- 3.gitlab创建项目
- 4.使用管理员创建账户
- [5.gitlab 添加邮箱设置](#5.gitlab 添加邮箱设置)
- 6.修改登录欢迎页面
- 六.gitlab命令行操作
- 七.gitlab数据备份
-
- 1.gitlab创建备份
- 2.更改gitlab备份目录
- 3.gitlab自动备份
-
- [3.1方法一 输入: crontab -e 然后添加相应的任务](#3.1方法一 输入: crontab -e 然后添加相应的任务)
- [3.2脚本执行gitlab 备份](#3.2脚本执行gitlab 备份)
一.gitlab安装
设置gitlab的yum源(使用清华镜像源安装GitLab)
gitlab-ce是它的社区版,gitlab-ee是企业版,是收费的。
shell
在 /etc/yum.repos.d/ 下新建 gitlab-ce.repo,写入如下内容:
cd /etc/yum.repos.d/
vim gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enabled=1
yum clean all && yum makecache
安装Gitlab
shell
# 直接安装最新版
yum install -y gitlab-ce
出现下面的图标,安装成功
# 如果要安装指定的版本,在后面填上版本号即可
yum install -y gitlab-ce-×××
# 如果安装时出现gpgkey验证错误,只需在安装时明确指明不进行gpgkey验证
yum install gitlab-ce -y --nogpgcheck
关闭防火墙,开机自关闭
shell
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
安装完gitlab需要修改配置文件,并加载
shell
vim /etc/gitlab/gitlab.rb 进入配置文件
找到下面一行,修改ip
修改好配置文件后,要使用 gitlab-ctl reconfigure 命令重载一下配置文件,否则不生效即可启动Gitlab。注意,启动过程较长,需要耐心等待。
查看Gitlab的状态,执行命令
shell
gitlab-ctl status
二.gitlab安装目录
gitlab组件日志路径:/var/log/gitlab
gitlab配置路径:/etc/gitlab/ 路径下有gitlab.rb配置文件
应用代码和组件依赖程序:/opt/gitlab
各个组件存储路径: /var/opt/gitlab/
仓库默认存储路径 /var/opt/gitlab/git-data/repositories
版本文件备份路径:/var/opt/gitlab/backups/
nginx安装路径:/var/opt/gitlab/nginx/
redis安装路径:/var/opt/gitlab/redis
三.gitlab常用命令汇总
#查看服务状态
gitlab-ctl status
使用控制台实时查看日志
# 查看所有的logs; 按 Ctrl-C 退出
gitlab-ctl tail
# 拉取/var/log/gitlab下子目录的日志
gitlab-ctl tail gitlab-rails
# 拉取某个指定的日志文件
gitlab-ctl tail nginx/gitlab_error.log
#启动关闭gitlab
gitlab-ctl start
gitlab-ctl stop #停止
gitlab-ctl status #查看状态
gitlab-ctl restart #重启
gitlab-ctl reconfigure #更新配置文件
gitlab-ctl help #帮助
gitlab-rake gitlab:check SANITIZE=true --trace 检查gitlab
#gitlab 默认的日志文件存放在/var/log/gitlab 目录下
gitlab-ctl tail #查看所有日志
#禁止 Gitlab 开机自启动
systemctl disable gitlab-runsvdir.service
#启用 Gitlab 开机自启动
systemctl enable gitlab-runsvdir.service
四.gitlab访问测试
1.登录gitlab
打开浏览器输入gitlab服务器地址,注册用户,如下图
注册用户
完成后想登录http://192.168.40.185:9091 需要账号和密码登录,注册一个后登录报错误,需要管理员账号初始化
2.配置默认访问密码
切换到命令运行的目录 cd /opt/gitlab/bin/
执行如下命令:gitlab-rails console -e production 进行初始化密码
在irb(main):001:0> 后面通过 u=User.where(id:1).first 来查找与切换账号(User.all 可以查看所有用户)
gitlab-rails console -e production
u=User.where(id:1).first
u.password='because5210.0'
u.password_confirmation='because5210.0'
u.save!
exit
出现true说明设置成功!
此时就可以用root/because5210.0来登录页面
成功登录root账户
设置中文
3.登陆自己创建的账户
root账号登陆
再次登录,登陆成功
五.gitlab图形化操作
1.gitlab关闭自动注册
在企业生产环境中,我们一般由项目负责人负责创建用户并分配权限,一般禁止员工私自注册用户,以防给项目开发工作带来安全性上的风险。为了避免员工自动注册,我们一般会禁止Gitlab的自动注册功能。在Gitlab的主菜单上,选择Menu------Admin,如下所示:
点击下方保存配置,在页面上就无法自动注册了。
2.gitlab免密登录
Gitlab的登录免密验证,配置完成后,可以使得我们的Gitlab自动执行Git命令而无需登录,对于脚本的编写以及其他项目**(如Jenkins)的运用这一步是必须的**。
首先,在想要进行验证的设备上执行命令:
shell
ssh-keygen
[root@localhost ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:9s9C6howGF17soK592sDESNOydaJf88Ee/csxOpkoro root@localhost.localdomain
The key's randomart image is:
+---[RSA 2048]----+
| . + .. |
| B.=... |
| +.o.ooo.. |
| .=o o+o + |
| + +o.=S+ o |
| ..+..*.o o |
| . .o.= o.. |
| ...o.o .o |
| Eo .+=. .o |
+----[SHA256]-----+
[root@localhost ~]#
完成上述配置后,可以生成本设备的公私钥对,执行命令:
可以查看本设备的公钥,如下所示:
[root@localhost ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCeW8qTs//BIuY8Fb9MM1qxFDFpzUygfOxhgDS9ngv92AXBVEufIeoOWnV3IFO2BHD8GYdMzi5USyQyVNA6fQ3KxCgoHMk5d9Tb4ZGdtBqNkJQ8aJdNEfC9mAtYnlJXeF9+DYdcRhRD+i6RoDkG12+fHcwImgBOnnz0MgWus+IT4rE8p6CL4oabdZ+R4Oh9fHWxJ7QKUrid9C65WC0YpW0QP5ewr63eNTJRHqRv/Vh+B1cvNZqk1p/x73K8UMvEK8ff5QBC6eujmBZckRANmMSAGnkJMHQSFFTfh1uFK5spGD7E0Etc7+cyogKhWrI7O5P/XfGEraPb+QBxuFnUVRxN root@localhost.localdomain
我们将该公钥复制下来,之后,我们打开Gitlab,点击右上角的用户图标,在弹出的选择框中选择Edit Profile,然后点击左边的SSH Keys,如下所示:
添加密钥添加完成后的页面如下:
3.gitlab创建项目
Gitlab上创建项目。由于新项目的创建必须依赖于一个组,因此,我们在创建项目前,先创建组。
进入Gitlab主页面后,点击Overview中的Groups选项,然后点击右边的New group,选择新创建一个组,如下所示:
输入组的名称和描述,组的URL会随着组名称的输入而自动出现,在组的权限处,我们选择Private,配置完成后如下所示
接下来,我们点击最下方的Create Group,就可以完成组的创建了,如下所示:
接下来,我们来创建项目。项目的创建与组的创建过程类似,都是输入项目名称,选择组的名称,项目描述以及权限等,配置好的项目如下所示:
配置完成后,就可以创建项目了。
创建项目后,Gitlab会自动创建一个README.md的文件,我们可以在线对该文件机型编辑,如下所示:
4.使用管理员创建账户
前提:使用root管理员账号密码登陆GitLab
初始密码由管理员设置,
当用户第一次登录时,由用户进行修改密码
5.gitlab 添加邮箱设置
5.1开启SMTP功能
登陆邮箱==》设置==》账户==》POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务==》开启SMTP服务==》接收验证
shell
修改gitlab配置
Vim /etc/gitlab/gitlab.rb
shell
#更新配置文件
gitlab-ctl reconfigure
gitlab-ctl restart
5.2验证
Notify.test_email('收件人邮箱', '邮件标题', '邮件正文').deliver_now
Notify.test_email('1657xxxx@qq.com', 'GitLab email', 'Hellow world').deliver_now
执行 gitlab-rails console进入控制台交互界面, 然后在控制台提示符后输入下面内容发送一封测试邮件,测试完成后exit()退出。
6.修改登录欢迎页面
看下图操作即可
设置完的效果图
六.gitlab命令行操作
第一次使用该项目地址的话,需要创建新版本库,首先从主项目上fork一个自己的项目。从自己项目上获取clone(克隆)链接地址。在想要存放的目录下执行
shell
git clone http://192.168.40.185:9091/test/git_test.git
查看日志
1.命令行新建分支
shell
查看当前所在的分支
git branch 查看分支
shell
git branch deve 创建分支,deve为新的分支名,可改
git checkout deve 进入到刚刚创建的分支
切换分支
查看状态(跟源文件有出入的文件)
shell
git status
git push -u origin deve 提交到新分支中
添加新分支成功
shell
切换到主分支
git checkout main
2.上传代码仓库
首次使用Git的话,需要设置全局的用户名和邮箱设置,如下图所示:
在命令行或终端中使用下面的命令可以设置git自己的名字和电子邮件。这是因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
git config --global user.name "root"
git config --global user.email "admin@example.com"
# 查看配置
git config --list
git init 初始化git
git remote add origin http://192.168.40.185:9091/test/git_test.git 将本地git和服务器上的连接
git add 1.txt 添加要提交的本地项目 (.代表所有 可用文件名代替. 上传某个文件)
git commit -m "测试代码" 提交到本地仓库
git push -u origin main 将项目推送到gitlab端
出现报错:
fatal: 远程 origin 已经存在
解决:
#删除远程配置 git remote rm origin
#重新添加 git remote add origin http://192.168.58.10:9091/test/git_test.git
这样就可以了,刷新gitlab页面就可以看到上传的项目了。
3.git命令行常用指令的使用
git status #上次提交后是否对文件再做了修改项目
git add . #添加所有的变动
git checkout -b 文件夹名称 #创建本地分支并切换分支 git checkout -b pr/ffr
git commit -m "描述" #提交修改 git commit -m "修改什么"
git merge origin/develop "本地分支" #合并origin/develop上别人所做的修改到自己的本地分支 git merge origin/develop pr/ffr
git push origin "本地分支" #推送本地分支到远程,并建立联系 git push origin pr/ffr
git rebase -i 编号 #合并多次提交,将前几次的提交合并为一次
git checkout 分支名 #切换分支 git checkout pr/FFR-color git cherckout develop
git pull #更新当前分支的状态
git branch #列出本地分支
git branch -a #列出本地分支与远程分支
git branch -D 分支名 #删除分支(目前仅用于删除本地分支)
git remote -v #可以查看远程仓库信息
git branch 分支名 #仅仅创建 一个新分支,并不会自动切换到新分支中去
git rebase --abort #退出git rebase
git reset 提交编号 #git rebase -i 提交编号,之后出现错误,可以回退到之前未合并时的日志状态
git commit --amend -m "描述" #修改上一次的提交的描述
git stash #暂存上一次的修改,准备切换到其他的分支
git stash pop #还原上一次的修改,将暂存的修改加入到新的分支
3.1提交与修改
命令 | 说明 |
---|---|
git add | 添加文件到暂存区 |
git status | 查看仓库当前的状态,显示有变化的文件 |
git diff | 比较文件的不同,即暂存区和工作区的差异 |
git commit | 提交暂存区到本地仓库 |
git reset | 回退版本 |
git rm | 删除工作区文件 |
git mv | 移动或重命名工作区文件 |
七.gitlab数据备份
1.gitlab创建备份
1.1手动备份
创建备份文件
使用一条命令即可创建完整的Gitlab备份。
gitlab-rake gitlab:backup:create
使用命令会在/var/opt/gitlab/backups目录下创建一个压缩包,这个压缩包就是Gitlab整个的完整部分。
生成完后,/var/opt/gitlab/backups目录
创建一个名称类似为1715127202_2024_05_08_16.11.1_gitlab_backup.tar的压缩包
其中
/etc/gitlab/gitlab.rb 配置文件须备份
/var/opt/gitlab/nginx/conf nginx配置文件
/etc/postfix/main.cfpostfix 邮件配置备份
2.更改gitlab备份目录
shell
也可以通过/etc/gitlab/gitlab.rb配置文件来修改默认存放备份文件的目录
修改为你想存放备份的目录即可
gitlab_rails['backup_path'] = "/home/gitlab-backup"
#指定备份后数据存放的路径、权限、时间配置
gitlab_rails['manage_backup_path'] = true 开启备份功能
gitlab_rails['backup_path'] = "/home/gitlab-backup" 指定备份的路径
gitlab_rails['backup_archive_permissions'] = 0644 备份文件的权限
gitlab_rails['backup_keep_time'] = 604800 备份保留时间
修改完成之后使用下面命令重载配置文件即可.
gitlab-ctl reconfigure
创建备份目录并授权
chown -R git:git /home/gitlab-backup
使用命令创建完整的Gitlab备份
这个压缩包就是gitlab的整个完整部分
3.gitlab自动备份
定时自动备份
实现每天凌晨2点进行一次自动备份:通过crontab使用备份命令实现,需重启cron服务
3.1方法一 输入: crontab -e 然后添加相应的任务
#输入命令crontab -e
crontab -e
#输入相应的任务
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
注意:环境变量CRON=1的作用是如果没有任何错误发生时, 抑制备份脚本的所有进度输出
#查看周期性计划任务
crontab -l
3.2脚本执行gitlab 备份
shell
#!/bin/bash
a="/home/gitlab-backup"
back="/home/git_back"
date="$(date +%Y-%m-%d)"
logfile=$back/$date.log
gitlab-rake gitlab:backup:create > /dev/null
b=`ls $a |wc -l`
if [ $b -eq 0 ];then
echo "$date.tar 备份失败" >> $logfile
elif [ $b -gt 0 ];then
echo " $date.tar 备份成功" >> $logfile
fi
mv $a/* $back/$date.tar
将脚本加入执行计划
先清空gitlab-backup下的文件进行测试