线上服务器搭建GIT服务器,实现本地代码上传并同步到服务器
前言
最近搞了个服务器,来放一些自己的小东西(代码)。想想ftp太麻烦(lower),于是选择了在服务器上搭建一个Git,用来同步代码,特此做一个备忘录(注:我的服务器是centos 7,lnmp环境)。
一、在服务器安装Git
1 |
|
在安装完之后你可以运行git进行测试,看看是否安装成功(就不贴图了)。
二、在服务器上创建裸版本库
ps:远程仓库通常只是一个裸仓库(bare repository), 即一个没有当前工作目录的仓库。因为该仓库只是一个合作媒介,所以不需要从硬盘上取出最新版本的快照;仓库里存放的仅仅是 Git 的数据。简单地说,裸仓库就是你工作目录中 .git 子目录内的内容。
在 /opt/git/aurora 下创建一个叫 aurora.git的裸仓库:
1 |
|
三、服务器上的裸仓库克隆
先确保本地是否安装git
1 |
|
在这里如果没有配置公钥的话,会提示输入密码,这样每次就比较麻烦了,所以这里补充一下配置公钥:
配置公钥
1.服务器创建一个用户
1 |
|
2.在服务器 git 用户文件夹配置信息
在git
用户文件夹中,创建.ssh文件夹,在.ssh中touch authorized_keys文件
1 |
|
3.用户生成key
在客户端生成两个文件,执行如下命令,根据提示输入默认文件名,执行下去就好
1 |
|
如图:
这我是直接将秘钥文件生成在了当前用户目录下的.ssh
目录下,也可以在外面生成之后在复制进来。
注意到里面多了一个config文件,这是用来配置远程服务器信息的。
1 |
|
- 注意除第一行,其余要缩进一个tab
- 这里的git替换为自己之前创建key时输入的用户名
- hostname 后面替换为你的服务器IP地址
4.将公钥追加到服务器git
用户下的authorized_keys文件中
1 |
|
将公钥的内容追加到此文件中
5.重新Clone远程的代码仓库到本地
1 |
|
- git-server:表示我们在config文件配置的服务器IP地址,直接写“git-server”即可,当然,你也可以修改config文件里的名字
- /opt/git/aurora/aurora.git:这个是远程服务器的仓库地址,按照实际情况自行修改
这样,会在客户端/home/www
下创建一个名为aurora的文件夹(.git会被省略)。
我们可以做一个测试,在/home/www/aurora文件夹中添加一个文件,并提交。
推送到远程:
1 |
|
实现自动同步到站点目录(www/aurora)
刚才我们往远程仓库推送了readme.txt件,虽然提示推送成功,但是我们现在在服务器端还看不到效果,如果服务器能够每次在我们上传代码后就将代码直接同步到服务器代码目录就好了。
自动同步功能用到的是 git 的钩子功能:
服务器端:进入裸仓库:/opt/git/aurora/aurora.git
1 |
|
创建post-receive文件
1 |
|
在里面添加如下内容
1 |
|
保存成功,退出,将该文件用户及用户组都设置成git。由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限(同时将/home/www/aurora目录用户及用户组也设置为git,不然客户端会提示没有上传权限)
1 |
|
可以看到,之前提交的文件已经可以看到了
说明
1.客户端中ssh登录,会默认读取用户目录下.ssh文件夹的config文件ssh配置信息。
2.不论客户端还是服务器端,生成的公钥.pub应拷贝到服务器上,私key自己使用。私钥一旦泄漏,任何人都可以通过该私钥提交代码。
备注:
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!