场景部署
客户端电脑(Windows系统):
开发的项目位于C:\MyProject\mycms\
服务器为:(Centos7.3 +Git环境已成功搭建)
本项目的git仓库目录/gitrepo/mycms.git
克隆地址为 git@1.2.3.195:/gitrepo/mycms.git
本项目的测试环境也位于本服务器的/home/wwwroot/mycms
对应访问的测试域名为http://dev.mycms.com
(Git安装篇见: Centos7.3从零部署Git服务器之(一) 安装Git )
一、创建git用户组和用户
首先为服务器创建一个名为git的用户和用户组,用于专门管理git服务。
[root@qinser ~]# groupadd git //添加一个git用户组
[root@qinser ~]# useradd git -g git //添加一个git用户并放入git用户组
[root@qinser ~]# passwd git //设置密码
Changing password for user git.
New password: //输入密码请牢记
Retype new password:
最后出现 passwd: all authentication tokens updated successfully.
用户已经添加成功
二、创建证书登录
1、检查RSA证书配置
必须用root用户进行操作:
Git服务器打开RSA认证,在Git服务器上首先需要将/etc/ssh/sshd_config中的RSA认证打开,即将sshd_config文件中下面几个前面的#号去掉:
如果密码和证书都使用,就在此文档最后添加一行
# AuthenticationMethods publickey,password #如果密码和密钥都使用在末尾加上此行代码
重启ssh
systemctl restart sshd.service
2、创建证书
切换到git用户
# su git
# cd /home/git/
# mkdir /home/git/.ssh 创建一个隐藏的.ssh目录,
# chmod 700 /home/git/.ssh 权限一定要修改为700
# touch /home/git/.ssh/authorized_keys 创建一个公钥文件
# chmod 700 /home/git/.ssh/authorized_keys 权限一定要修改为700,必须修改为700,不能为其他
设置git 用户名和邮箱 (建议和你github的账号和邮箱保存一直,以后和github通信很方便)
# git config --global user.name "niu***g"
# git config --global user.email "niu***g@126.com"
#执行证书命令, 类型为RSA ,备注信息为邮箱niuxitong@126.com
# [git@qinser ~]$ ssh-keygen -t rsa -C "niuxitong@126.com"
这样就在我们的/home/git/.ssh/下生成了一个密钥对。
id_rsa 为私钥文件
id_rsa.pub 为公钥文件
把此id_rsa.pub 的内容拷贝到authorized_keys里面
#cat id_rsa.pub >> authorized_keys 把公钥内容拷贝进去
authorized_keys文件的作用,用于保存所有访问本服务器的主机的公钥内容, 一个公钥一行。比如本电脑作为服务器,开发人员张三、李四每个人的电脑都需要访问本服务器, 就需要张三、李四每个人分别在自己的电脑上生产对应的zhangsan_rsa(私钥)、zhangsan_rsa.pub(公钥)然后把他们的zhangsan_rsa.pub文件放到本服务器/home/git/.ssh/里,并把内容拷贝到authorized_keys文件内, 注意一定是一人一行,同一个人的不能换行。
OK证书创建完成了
3、禁止 git用户的shell登录
因为搭建git服务器后通常会建立一个git账户,其它人共用这个账户来克隆或推送数据到git仓库中,通常也只需要这个功能,但是如果不加限制,那么其它人可以通过这个git账户登录到主机,那么这样是不安全的,所以需要加以限制,即令git用户不允许登录shell
用 root用户
# vim /etc/passwd
找到:
# git:x:1000:1000::/home/git:/bin/bash
修改为:
# git:x:1000:1000::/home/git:/usr/local/git/bin/git-shell
三、创建一个Git空仓库
根据我们的项目部署,把git仓库文件都放到 /gitrepo/目录下。而当前的git用户无法在/ 根目录里创建文件夹,因此要用root用户创建,并且把所属组所有者都修改成git用户组和git用户。
[root@qinser /]# su root 必须要切换到root用户
[root@qinser /]# mkdir /gitrepo
[root@qinser /]# chown git:git gitrepo/
[root@qinser /]# cd /gitrepo/
[root@qinser gitrepo]# git init --bare mycms.git
出现如下:
Initialized empty Git repository in /gitrepo/mycms.git/
说名一个空仓库已经创建完成。
一定要修改权限
[root@qinser gitrepo]# chown -R git:git mycms.git/
#cd /gitrepo/mycms.git/
#tree : 内容
[root@qinser mycms.git]# tree
|-- branches # 本项目的分支
|-- config # 项目的配置信息,git config命令会改动它
|-- description # 项目的描述信息
|-- HEAD # 这个git项目当前处在哪个分支里
|-- hooks # 系统默认钩子脚本目录
| |-- applypatch-msg.sample
| |-- commit-msg.sample
| |-- fsmonitor-watchman.sample
| |-- …….
|-- info
| `-- exclude
|-- objects # Git本地仓库的所有对象 (commits, trees, blobs, tags)
| |-- info
| `-- pack
`-- refs # 标识你项目里的每个分支指向了哪个提交(commit)
|-- heads
`-- tags
OK 到此 mycms项目的git管理仓库已经搭建完毕:
git@1.2.3.195:/gitrepo/mycms.git 是本项目的克隆地址。
四、克隆仓库
假设在你本地电脑(Windows系统请安装)把项目克隆到C:/MyProject/目录下。
到此,已经把此项目的git项目克隆到本地了。
C:\MyProject\ 是不是已经多了一个mycms的目录,里面只有一个隐藏的.git目录。
C:\MyProject\mycms\ 就是你的开发目录,把项目放进去,
测试:
在此目录中随便新建一个文件。如index.php ,里面随便写点内容
然后使用git命令上传到git仓库。
可以看出目前只有一个 maser 分支。我们先把这个文件提交到master分支上。
2、服务器端测试项目拉去更新
我们的项目测试目录位于/home/wwwroot/内,因此,必须使用root用户进行克隆
OK 是不是很神奇 : 我们本地的内容已经进入了远程git仓库, 并被测试环境成功克隆到了。
3、本地环境新分支的更新测试
目前本地只有一个master分支,在真实的项目开发过程中,是不允许直接在master分支上修改内容的,必须创建自己的分支,
我们在本地创建自己的分支:niuxitong
确保当前分支在 niuxitong分支上。我们修改index.php里的内容
通过命令提交本地分支到master ,然后master合并niuxitong的分支,最后push到远程仓库
在master上合并niuxitong分支的内容,然后push的远程分支
在测试环境上只要执行一个# git pull 拉取即可
OK niuxitong分支上修改的内容已经成功更新到了测试环境上。
到此,整个项目的 本地开发环境、git远程仓库、测试环境,三者已经成功联通。