Git有三个类分别为:
Git: 是本地版本控制系统工具。
Github:是官方在线代码托管仓库,可自行注册使用,。
GitLab:是自建的一个非官方的自有版本仓库。通俗一点就是公司内部的。
概述讲义:
GitLab是一个开源版本管理系统,是集代码托管,测试,部署于一体的开源git仓库管理软件,可通过web界面来进行访问公开的或私人项目。与Github类似,GitLab能够浏览代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本,并提供一个文件历史库。是目前非常流行好用的研发版本控制系统。
搭建前准备工作:这里是用Centos 7版本的系统
1、关闭防火墙
2、关闭SELinux
[root@localhost ~]# [root@localhost ~]#
安装Gitlab
1、安装依赖项
-
sudo yum install curl openssh-server openssh-clients postfix cronie -y
-
sudo service postfix start
-
sudo chkconfig postfix on
-
sudo lokkit -s http -s ssh
2. 添加GitLab仓库,并安装到服务器上
-
curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash
-
yum install gitlab-ce
如果你不习惯使用命令管道的安装方式, 你可以在这里下载 或者 然后安装
-
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-XXX.rpm
-
rpm -ivh gitlab-ce-XXX.rpm
Gitlab 的常用命令
Gitlab命令分为两部分:通用命令 和服务管理命令
通用命令:
语法:gitlab-ctl 命令参数
命令参数如下:
help 帮助
reconfigure 修改配置文件之后,需要重新加载下 show-config 查看所有服务配置文件信息 uninstall 卸载这个软件
cleanse 删除gitlab数据,重新白手起家
服务管理命令:
start 启动所有服务 stop 关闭所有服务
restart 重启所有服务 status 查看所有服务状态
tail 查看日志信息
service-list 列举所有启动服务
graceful-kill 平稳停止一个服务
配置GitLab
# gitlab-ctl reconfigure --第一次加载配置的时候会很慢,耐心等待就好,直到加载完成。
开户访问web界面
第一次访问,系统会要求重置新密码,管理员的用户名为root
汉化Gitlab
Gitlab默认语言是英文,对于想加强英文的同学,建议继续使用英文,但要求使用中文,这里需要下载一个汉化包
首先我们要确认下当前我们gitlab的版本,查看版本命令如下:
# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
下载最新的汉化包:
# git clone
如果要下载指定版本的汉化包,需要加上版本号。
例:下载10.5.1,命令如下:
# git clone -b v10.5.1-zh
下载完成后,将下载的文件夹内容复制到gitlab目录下
进入gitlab查看补丁版本:# cat gitlab/VERSION
复制前先停止Gitlab
# gitlab-ctl stop
# cp -r -f ./gitlab/* /opt/gitlab/embedded/service/gitlab-rails/
复制时可能不断提示是否要覆盖,这时可能是系统每次执行cp命令时,其实是执行了cp -i命令的别名。出现这种情况可以修改~/.bashrc,在“alias cp=’cp -i’”前加#注释,再刷新文件 source ~/.bashrc
最简单的方法是cp命令前加反斜线\
# \cp -r -f ./gitlab/* /opt/gitlab/embedded/service/gitlab-rails/
在复制过程中提示,以下信息是正常的
复制完成后,需要重新加载配置,并启动Gitlab
# gitlab-ctl reconfigure
# gitlab-ctl restart
有可能报502错误,需要重启电脑
再次访问web界面,显示的已经为汉化熟悉的中文
ssh连接
修改项目ssh连接git地址(如果需要公网端口映射非22默认端口连接情况下使用)
1、修改/etc/gitlab/gitlab.rb [再次声明,gitlab.yml中的配置会被这个给覆盖]
启用下面这行,并把端口改为自己服务器的sshd端口,取消注释
gitlab_rails['gitlab_shell_ssh_port'] = 220
2、使之生效,大功告其,编译后重启!
gitlab-ctl reconfigure
http连接
修改/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml文件,注意此项如果重新编译会被重置,切记修改后不要重新编译,只需要重新启动服务即可。
重启服务并重启机器后显示如下
Gitlab私有仓库的使用
登陆进来Gitlab,创建一个项目,但创建项目前我们先创建一个组,让项目归属一个组里
新建一个组
在新建的dev-demo组里,创建一个项目
创建一个项目
在项目里创建一个README文件,一会用于测试用
在项目创建成功后,界面有提示要建ssh-key,这里先建自述文件,后面再来建ssh-key
给README文件添加点内容
在工作区的Git服务器上创建key,再添加至Gitlab
在Git工作区机器上创建ssh-key,我这里用的是192.1.1.52机器来创建ssh-key,Gitlab是在192.1.1.10机器。
-
[root@agent02 ~]# ssh-keygen -t rsa -b 4096
-
Generating public/private rsa key pair.
-
Enter file in which to save the key (/root/.ssh/id_rsa):
-
/root/.ssh/id_rsa already exists.
-
Overwrite (y/n)? y
-
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:/fqioPb2oKlcjiF8U+Pjw3FSNXcowo2y4qtT/TjV2TA root@agent02
-
The keys randomart image is:
-
+---[RSA 4096]----+
-
| . o . |
-
| . + = o . |
-
| o o + . |
-
| . . . E |
-
| . oo. S * |
-
|. oo+.o o o |
-
|..oo+oX . |
-
| +.*+Oo+ .. |
-
| .*o=++.o..o. |
-
+----[SHA256]-----+
-
-
[root@agent02 ~]# cat .ssh/id_rsa.pub
-
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCkgVRWoKTblJlloKNo8+YcBM3B8AA0X5QoyQGtjoNwz6L1iO2WEhVUqGqVK/ujG+i/NaOCkrVXlowc0a53mB3Wk1Bk+6INxtXmtPDqmSVHamCtuq86XGSIoGbE5j9cYaWasWs0kEx60BO5+/jqz9LWGeFJehDHQd0K32eHQpn836XCIhyXN7mWJ7XmUwYfyf6B9PjO0z/4hsM21qXuE3giQDrGDHCjqkWNoK7hwNwfQGaIo+kClgvgquq6I0d9XWb30C7/Xr+ZuXROHHSncteCJU8Chqk7uiOyUHcgMMrF5AhfEG8wyDQKOPDW3nPin3YvzSZg0jgIn3X9e1dIl4OZoyCIj1OW1gx/JZ0P9xBhjFCcWFjXSVqX34S05F7CiHdW/MIJgJBWc5qFjSTsaIVEUhwc3DzHhPcW1ZEbskqc6kBZyB5Ei3ZIvITPpa9tUV3BHPVFKPio6Leow5Vi0ne+b1Khm3KCKatGdkqRjbyZ6Me1J7+KQnAmT9FmCNo3V8IFs4PpFljDCNBxm93lbaiqAcFeAEhcm1M20BiGGmTJnVMrGGRlXcutnj9G5s0C4oOVL8ujFIS4wwcp6XWWNzkqOw1GiJp9GhFO1fXyg/vdiS+mgeMXjZNsKl4BAPZ+GYbiDOMSGdjXKVch5dmXfwDetbTl4+T/6COX5L0G6ijlVw== root@agent02
上面key已经创建好了,复制上面打印出来的密钥,放到Gitlab里面来
接着再回到刚才test项目里面,查看详情,这里有显示该项目的git链接地址
接下来,在192.1.1.52机器上,把Gitlab里面test项目克隆到本地来
-
[root@agent02 ]# echo "192.1.1.10 gitlab.example.com" >> /etc/hosts --注意一定要把Gitlab机器名和IP地址写进hosts记录里
-
-
[root@agent02 ]# mkdir /dev-demo
-
[root@agent02 ]# cd /dev-demo
-
-
[root@agent02 dev-demo]# git init
-
Reinitialized existing Git repository in /dev-demo/.git/
-
-
[root@agent02 dev-demo]# git clone git@gitlab.example.com:dev-demo/test.git
-
Cloning into 'test'...
-
The authenticity of host 'gitlab.example.com (192.1.1.10)' can't be established.
-
ECDSA key fingerprint is SHA256:885XnAhlZsdYbCLIzq1qh7cCt+yF9i/AtusSI7QmPcE.
-
ECDSA key fingerprint is MD5:e9:95:51:51:e4:ce:b9:5c:b1:d7:ce:2a:d8:7d:fe:ee.
-
Are you sure you want to continue connecting (yes/no)? yes
-
Warning: Permanently added 'gitlab.example.com,192.1.1.10
在本地模拟开发过程,再和Gitlab同步
-
[root@agent02 dev-demo]# vi test/index.html
-
<h1> 我是GitLab私有服务器 </h1>
-
-
[root@agent02 dev-demo]# git config --global user.email "409216159@qq.com"
-
[root@agent02 dev-demo]# git config --global user.name "LX"
-
[root@agent02 dev-demo]#
-
[root@agent02 dev-demo]# git add ./*
-
[root@agent02 dev-demo]# git commit -m "代码提交index.html"
-
[master (root-commit) b348c78] 代码提交index.html
-
1 file changed, 1 insertion(+)
-
create mode 160000 test
代码提交完成后,我们再来到Gitlab里查看项目test里是否有刚提交的index.html文件和内容
-
[root@agent02 test]# vi aa.html
-
<h1> 测试代码 </h1>
-
-
[root@agent02 test]# git add ./*
-
[root@agent02 test]# git commit -m "提交代码"
-
[master be2c1f8] 提交代码
-
2 files changed, 3 insertions(+)
-
create mode 100644 index.html
-
-
[root@agent02 test]#
-
[root@agent02 test]# git push
-
warning: push.default is unset; its implicit value is changing in
-
Git 2.0 from 'matching' to 'simple'. To squelch this message
-
and maintain the current behavior after the default changes, use:
-
-
git config --global push.default matching
-
-
To squelch this message and adopt the new behavior now, use:
-
-
git config --global push.default simple
-
-
See 'git help config' and search for 'push.default' for further information.
-
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
-
'current' instead of 'simple' if you sometimes use older versions of Git)
-
-
Counting objects: 5, done.
-
Compressing objects: 100% (2/2), done.
-
Writing objects: 100% (4/4), 389 bytes | 0 bytes/s, done.
-
Total 4 (delta 0), reused 0 (delta 0)
-
To git@gitlab.example.com:dev-demo/test.git
-
d5ef909..be2c1f8 master -> master
配置注册Gitlab时发邮件确认
配置在Gitlab注册用户时的邮件发送确认动作
-
[root@gitlab ~]# vi /etc/gitlab/gitlab.rb
-
429 gitlab_rails['smtp_enable'] = true
-
430 gitlab_rails['smtp_address'] = "smtp.qq.com"
-
431 gitlab_rails['smtp_port'] = 465
-
432 gitlab_rails['smtp_user_name'] = "409216159@qq.com"
-
433 gitlab_rails['smtp_password'] = "QQ password"
-
434 gitlab_rails['smtp_domain'] = "qq.com"
-
435 gitlab_rails['smtp_authentication'] = "login"
-
436 gitlab_rails['smtp_enable_starttls_auto'] = true
-
437 gitlab_rails['smtp_tls'] = true
-
438 gitlab_rails['gitlab_email_from'] = '409216159@qq.com'
配置完成后,需要重新生成gitlab参数
-
[root@gitlab ~]# gitlab-ctl reconfigure
-
-
[root@gitlab ~]# gitlab-ctl restart
-
-
[root@gitlab ~]# lsof -i:80
-
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
-
nginx 40422 root 7u IPv4 117999 0t0 TCP *:http (LISTEN)
-
nginx 40423 gitlab-www 7u IPv4 117999 0t0 TCP *:http (LISTEN)
-
-
[root@gitlab ~]# lsof -i:8080
-
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
-
bundle 40358 git 18u IPv4 119105 0t0 TCP localhost:webcache (LISTEN)
-
bundle 40650 git 18u IPv4 119105 0t0 TCP localhost:webcache (LISTEN)
-
bundle 40652 git 18u IPv4 119105 0t0 TCP localhost:webcache (LISTEN)
设置注册Gitlab用户时发送邮件确认
拉到最下面,点保存,再退出来,在登陆界面,注册一个新的帐号,会向你的注册时的邮箱发送一封确认的邮件
阅读(2963) | 评论(0) | 转发(0) |