Centos7.3从零部署Git服务器之(二)初始搭建一个项目的Git空仓库

5 篇文章 0 订阅

场景部署

客户端电脑(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远程仓库、测试环境,三者已经成功联通。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值