git服务器文件位置,线上服务器搭建GIT服务器,实现本地代码上传并同步到服务器...

前言

最近搞了个服务器,来放一些自己的小东西(代码)。想想 ftp 太麻烦(lower),于是选择了在服务器上搭建一个 Git,用来同步代码,特此做一个备忘录(注:我的服务器是 centos 7,lnmp 环境)。

一、在服务器安装 Git

1

yum install -y git

在安装完之后你可以运行 git 进行测试,看看是否安装成功(就不贴图了)。

二、在服务器上创建裸版本库

ps:远程仓库通常只是一个裸仓库(bare repository), 即一个没有当前工作目录的仓库。因为该仓库只是一个合作媒介,所以不需要从硬盘上取出最新版本的快照;仓库里存放的仅仅是 Git 的数据。简单地说,裸仓库就是你工作目录中 .git 子目录内的内容。

在 /opt/git/aurora 下创建一个叫 aurora.git 的裸仓库:

1

2

3

mkdir /opt/git/aurora

cd /opt/git/aurora

git init --bare aurora.git //这里 git init 是初始化空仓库的意思,而参数 --bare 是代表创建裸仓库,这个参数一定记得带上

三、服务器上的裸仓库克隆

先确保本地是否安装 git

1

2

cd /home/www

git clone git-server:/opt/git/aurora/aurora.git aurora //其中的git-server即你服务器的公网IP地址

在这里如果没有配置公钥的话,会提示输入密码,这样每次就比较麻烦了,所以这里补充一下配置公钥:

配置公钥

1.服务器创建一个用户

1

adduser git //管理员帐户不需要加sudo

2.在服务器 git 用户文件夹配置信息

在git用户文件夹中,创建.ssh 文件夹,在.ssh 中 touch authorized_keys 文件

1

2

mkdir .ssh

touch .ssh/authorized_keys

3.用户生成 key

在客户端生成两个文件,执行如下命令,根据提示输入默认文件名,执行下去就好

1

ssh-keygen -t rsa

如图:

1dd9f258d9d1f768c5df1d86d0b1467f.png

这我是直接将秘钥文件生成在了当前用户目录下的.ssh目录下,也可以在外面生成之后在复制进来。

注意到里面多了一个 config 文件,这是用来配置远程服务器信息的。

1

2

3

4

5

host git-server

user git

hostname 114.67.141.xxx

port 22

identityfile ~/.ssh/aurora

注意除第一行,其余要缩进一个 tab

这里的 git 替换为自己之前创建 key 时输入的用户名

hostname 后面替换为你的服务器 IP 地址

4.将公钥追加到服务器git用户下的 authorized_keys 文件中

1

2

cd /home/git/.ssh

vim authorized_keys

将公钥的内容追加到此文件中

8bc81119e18a9cf12547126add3c028e.png

5.重新 Clone 远程的代码仓库到本地

1

2

cd /home/www

git clone git-server:/opt/git/aurora/aurora.git aurora

530321f114ac723d9288a2d581753145.png

git-server:表示我们在 config 文件配置的服务器 IP 地址,直接写 “git-server” 即可,当然,你也可以修改 config 文件里的名字

/opt/git/aurora/aurora.git:这个是远程服务器的仓库地址,按照实际情况自行修改

这样,会在客户端/home/www下创建一个名为 aurora 的文件夹(.git 会被省略)。

我们可以做一个测试,在/home/www/aurora 文件夹中添加一个文件,并提交。

推送到远程:

1

git push git-server:/opt/git/aurora/aurora.git master

015f2db0e1e6a7cc1e4f4760f1f4abbd.png

实现自动同步到站点目录(www/aurora)

刚才我们往远程仓库推送了 readme.txt 件,虽然提示推送成功,但是我们现在在服务器端还看不到效果,如果服务器能够每次在我们上传代码后就将代码直接同步到服务器代码目录就好了。

自动同步功能用到的是 git 的钩子功能:

服务器端:进入裸仓库:/opt/git/aurora/aurora.git

1

cd /opt/git/aurora/aurora.git

创建 post-receive 文件

1

2

cd hooks

vim post-receive

在里面添加如下内容

1

2

git --work-tree=/home/www/aurora checkout -f

保存成功,退出,将该文件用户及用户组都设置成 git。由于该文件其实就是一个 shell 文件,我们还应该为其设置可执行权限(同时将/home/www/aurora 目录用户及用户组也设置为 git,不然客户端会提示没有上传权限)

1

2

chown git:git post-receive

chmod +x post-receive

可以看到,之前提交的文件已经可以看到了

说明

1.客户端中 ssh 登录,会默认读取用户目录下.ssh 文件夹的 config 文件 ssh 配置信息。

2.不论客户端还是服务器端,生成的公钥.pub 应拷贝到服务器上,私 key 自己使用。私钥一旦泄漏,任何人都可以通过该私钥提交代码。

备注:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值