gitlab介绍和安装

1.1 GitLab介绍
GitLab是利用Ruby on Rails一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
GitLab能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。
它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找


github:为开源爱好者、企业提供的免费的代码存储分享
gitlab:是为企业提供的开源免费的私有的分布式代码仓库
git:是由linus开发的分布式版本控制系统的服务,git:还是一个gitlab 的客户端工具


1.2 Gitlab服务构成
    Nginx:静态web服务器。
    gitlab-shell:用于处理Git命令和修改authorized keys列表。
    gitlab-workhorse: 轻量级的反向代理服务器。
    logrotate:日志文件管理工具。
    postgresql:数据库。
    redis:缓存数据库。
    sidekiq:用于在后台执行队列任务(异步执行)。
    unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。
    
1.4 GitLab Shell
GitLab Shell有两个作用:为GitLab处理Git命令、修改authorized keys列表
当通过SSH访问GitLab Server时,GitLab Shell会:
    限制执行预定义好的Git命令(git push,git pull,git annex)
    调用GitLab Rails API检查权限
    执行pre-receive钩子(在企业版中叫做Git钩子)
    执行用户请求的动作,处理GitLab的post-receive动作
    处理自定义的post-receive动作
    
当通过http(s)访问GitLab Server时,工作流程取决于你是从Git仓库拉取(pull)代码还是向git仓库推送(push)代码:

如果是从Git仓库拉取(pull)代码,GitLab Rails应用会全权负责处理用户鉴权和执行Git命令的工作

如果是向Git仓库推送(push)代码,GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理:

    调用GitLab Rails API 检查权限
    执行pre-receive钩子(在GitLab企业版中叫做Git钩子)
    执行你请求的动作
    处理GitLab的post-receive动作
    处理自定义的post-receive动作

1.5 GitLab Workhorse 
GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。


1.6 git 缓存区与工作区等概念:
工作区:git clone 的代码或者开发自己编写的代码文件所在的目录,通常是代码所在的一个服务的目录名称。
暂存区:用于存储在工作区中对代码进行修改后的文件所保存的地方,使用 git add 添加。
本地仓库:用于提交存储在工作区和暂存区中改过的文件地方,使用 git commi 提交。
远程仓库:多个开发共同协作提交代码的仓库,即 gitlab 服务器,可以使用git pull 下载。
gitlab 数据保方式:

SVN 与 CVS:
每次提交的文件都单独保存,即按照文件的提交时间区分不同的版本,保存至不同的逻辑存储区域,后期恢复的时候直接基于之前版本恢复。

Gitlab:
Gitlab 与 SVN 的数据保存方式不一样,gitlab 虽然也会在内部对数据进行逻辑划分保存,但是当后期提交的数据如果和之前提交过的数据没有变化,其就直接快照之前的文件,而不是在将文件重新上传一份在保存一遍,这样既节省了空间又加快了代码提交速度

 

安装和使用

2. Gitlab的安装部署

2.1 方式一:下载gitlab-ce的rpm包
https://packages.gitlab.com/gitlab/gitlab-ce
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/

要先将这个rpm包下载到本地
yum install -y gitlab-ce-11.11.8-ce.0.el7.x86_64.rpm


2.2 方式二:配置yum源
在 /etc/yum.repos.d/ 下新建 gitlab-ce.repo,写入如下内容:
    [gitlab-ce]
    name=gitlab-ce
    baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
    Repo_gpgcheck=0
    Enabled=1
    Gpgkey=https://packages.gitlab.com/gpg.key

yum install -y gitlab-ce 
# 如果要安装指定的版本,在后面填上版本号即可
yum install -y  gitlab-ce-11.11.8

# 如果安装时出现gpgkey验证错误,只需在安装时明确指明不进行gpgkey验证
yum install gitlab-ce -y --nogpgcheck



2.3 gitlab的配置
[root@localhost7A ~]# vim  /etc/gitlab/gitlab.rb 
external_url 'http://192.168.80.100'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "348987564@qq.com"
gitlab_rails['smtp_password'] = "cszrwuylffhybjea"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = "348987564@qq.com"
user["git_user_email"] = "348987564@qq.com"

修改好配置文件后,要使用 gitlab-ctl reconfigure 命令重载一下配置文件,否则不生效。
gitlab-ctl reconfigure # 重载配置文件




2.4 gitlab的配置文件路径 
    /etc/gitlab/gitlab.rb # 修改gitlab默认的配置文件
    /etc/gitlab #配置文件目录
    /run/gitlab #运行 pid 目录
    /opt/gitlab #安装目录
    /var/opt/gitlab #数据目录
    /var/log/gitlab #日志目录
    /var/opt/gitlab/backups/ # Gitlab 数据备份目录,需要使用命令备份的
    /var/opt/gitlab/nginx/conf #nginx 配置文件
    /etc/gitlab/gitlab-secrets.json #key 文件
    /opt/gitlab/version-manifest.txt  #gitlab版本信息
    abc/.git/config  项目abc的信息


3. gitlab常用命令
使用 git 命令下载代码与提交代码等操作
3.1 gitlab常用命令
gitlab-rails #用于启动控制台进行特殊操作,比如修改管理员密码、打开数据库控制台( gitlab-rails dbconsole)等
gitlab-psql  #用于数据库操作
gitlab-rake #数据备份恢复等数据操作 
    # gitlab-rake gitlab:check SANITIZE=true --trace      #检查gitlab
    # gitlab-rake gitlab:backup:restore BACKUP=备份文件名 #数据备份
gitlab-ctl #客户端命令行操作行
    # gitlab-ctl stop         #停止 gitlab
    # gitlab-ctl start         #启动 gitlab
    # gitlab-ctl restart     #重启 gitlab
    # gitlab-ctl status     #查看组件运行状态
    # gitlab-ctl tail nginx #查看某个组件的日志
    # gitlab-ctl reconfigure   # 启动服务,重载配置文件
    # gitlab-ctl show-config   # 验证配置文件
 
3.2.命令说明(yum install git )
    git config --global user.name “name“ #设置全局用户名
    git config --global user.email xxx@xx.com #设置全局邮箱
    git config --global --list #列出用户全局设置
    git add index.html / .         #添加指定文件、目录或当前目录下所有数据到暂存区
    git commit -m “11“             #提交文件到工作区
    git status                     #查看工作区的状态,各服务的状态。
    git push                     #提交代码到服务器
    git pull                     #获取代码到本地
    git log                     #查看操作日志
    vim .gitignore                 #定义忽略本地工作区的文件上传到gitlab
    git reset --hard HEAD^^     #git 版本回滚, HEAD 为当前版本,加一个^为上一个,^^为上上一个版本,也可使用:git reset --hard 5621dad 
    git reflog #                 #获取每次提交的 ID,可以使用--hard 根据提交的 ID 进行版本回退
    git reset --hard 5ae4b06     #回退到指定 id 的版本
    git branch                     #查看当前所处的分支
    git checkout -b develop     #创建并切换到一个新分支
    git checkout develop         #切换分支 


4.项目实例说明

Gitlab  web重点说明
    例:http://192.168.80.100/linux39/web1.git
    1.创建用户 ,对项目访问时的账号。
    2.创建组(linux39),此组并非用户使用的组,而是项目的组。  
    3.创建项目(web1),真正项目的名称,定义在组下面。
    4.用户设置  信息密码等
    5.用户的权限设置  在组中的members设置  权限包括(guest  reporter  developer  maintainer  owner)
    6.关闭注册账号功能  去除master是受保护的等。


4.1.#在web页面中创建用户laomao  组java  项目web   和index.html 并分配权限。(方式一)

4.2.# 将java项目克隆下来
    git clone http://192.168.80.100/java/web.git
4.3.# 初始化配置(可省略),主要提交代码中会显示谁提交的。
    git config --global user.name "jack"
    git config --global user.email "348987564@qq.com"
4.4.# 编写第二版本并推送到gitlab
    cd web/
    vim web/index.html 
    git add index.html
    git commit -m "v2"
    git push
4.5.# 在web项目目录下新建一些文件,推送到gitlab
    mkdir app
    echo this is one app v1 > app/index.html
    git add ./*
    git commit -m "app v1"
    git push
  
 
4.5.# 工作区代码回滚,或gitlab服务器回滚
    1.工作区代码回滚
    cd web/
    echo this is fie v3 >> web/index.html
    git add index.html
    git commit -m "v3"0
    git push                  #上传到gitlab服务器上#
    echo this is fie v4 >> web/index.html
    git add index.html
    git commit -m "v4"
    git reset --hard HEAD^   #回滚到v3,注意现在还没有上传到gitlab服务器上。
    cat index.html
    git push -f   #一般master是受保护的,如果强推,先在gitlab服务器上去除掉protected,选择project下的setting下Repository下面的protected Branches
    

使用命令创建一个项目(方式二)
初始化一个新的本地仓库,此操作,每个新项目开始时执行一次即可
git init 

关联远程仓库,会在.git/config配置文件中。(组和项目先创建):如何使用命令创建远程仓库?
git remote add origin http://192.168.80.100/zzhz/xinpan.git

把要提交的项目复制到这个目录中并提交到缓存区
echo  "linux39" >> README.md
git add README.md

Git全局设置
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"
设置本地仓库对应gitlab的用户
git config --local user.name "用户名"
git config --local user.email "邮箱地址"

提交到本地仓库
git commit -m "fisrt commit"


git上传本地代码到远程仓库
git push -u origin master

 
====================================================================================== 
5.gitlab 数据备份恢复:
 
5.1:停止 gitlab 数据服务:
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq
5.2:手动备份数据:
    gitlab-rake gitlab:backup:create #在任意目录即可备份当前 gitlab 数据
    gitlab-ctl start #备份完成后启动 gitlab
5.3:查看要恢复的文件:
    /var/opt/gitlab/backups/ # Gitlab 数据备份目录,需要使用命令备份的
    ll /var/opt/gitlab/backups/
    -rw------- 1 git git 92160 Jul 17 10:32 1635296268_2021_10_27_11.11.8_gitlab_backup.tar
5.4:执行恢复:
    删除一些数据,测试能否恢复
    gitlab-ctl stop unicorn
    gitlab-ctl stop sidekiq #恢复数据之前停止服务
    gitlab-rake gitlab:backup:restore BACKUP=备份文件名,注意文件名不带“_gitlab_backup.tar”
    gitlab-rake gitlab:backup:restore BACKUP=1635296268_2021_10_27_11.11.8
5.5:启动服务:
    gitlab-ctl start sidekiq
    gitlab-ctl start unicorn

 

posted @ 2023-01-19 13:41  yuanbangchen  阅读(18)  评论(0编辑  收藏  举报