注,如果遇上权限不够,在命令前加上 sudo
!!!
步骤一,创建服务器 git 用户
- 如果服务器未安装git,可使用以下命令安装
apt-get install git
。 git --version
输出git版本号用来验证是否安装成功 - 创建git用户
adduser git
步骤二,配置服务器git环境
su git
使用git用户,执行以下命令cd ~/.ssh
,如果提示不存在该文件夹,说明没有生成密钥,执行 ssh-keygen -t rsa
,一直enter,最后就能生成密钥。- 此时再次执行
cd ~/.ssh
,编辑当前目录下面的 authorized_keys 文件。将本地的公钥(本地,非git服务器,cat .ssh/id_rsa.pub
可查看公钥)写进authorized_keys 文件,多个本地需分行,即一行一条公钥
步骤二.一,root权限下,更改环境配置
- 打开文件/etc/ssh/sshd_config
cd /etc/ssh/sshd_config
。 - 1⃣️RSAAuthentication yes #开启RSA认证功能
- 2⃣️PubkeyAuthentication yes #开启公匙认证
- 3⃣️StricModes no #据说不改会强制要求登录用户和文件拥有者用户相同
- 将上面1,2,3这三个点前面的注释去掉即可
- 注意:关于第一点,centos7.4以上是没有的,不用在意,修改2,3两点就好
步骤三,初始化服务器git仓库
- 将git仓库放置于 /srv 文件夹下面。
cd /srv
进入srv目录,git init --bare 库名.git
这是创建一个裸仓库,没有工作区,因为服务器上的git仓库纯粹是为了共享,不让用户直接登录到服务器上去改工作区,并且服务器上德维尔Git仓库通常以**.git**结尾。将仓库所有者改为 git chown -R git:git 库名.git
步骤四,禁用服务器git用户shell登录
- 出于安全考虑,我们不允许git用户登录shell。通过编辑**/etc/passwd**文件完成。将
git:x:1001:1001:,,,:/home/git:/bin/bash
改为 git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
步骤五,本地git项目操作
- git项目下执行
git remote add origin(短名,可用其他) git@服务器ID:/srv/库名.git
,设定推送的git服务器地址,远程分支 git push -u origin(短名,需与上面对应) master(本地master分支)
推送分支到服务器git remote show
可查看远程分支git remote show 分支名
可查看详细信息
步骤六,网站目录自动部署
- 进入网站目录之下,网站目录依据自身服务器配置,没有固定路径,一般为www目录
- 如果git服务器与项目处于同一服务器,在网站目录下执行
git clone /srv/库名.git
。此时已克隆过来。 - 注意,git用户应该要有能操作该文件夹所有内容的权限
- 自动部署 hook 脚本。进入服务器git库目录
cd /srv/库名.git
,进入 hooks 目录cd hooks
,创建上传后触发的钩子,touch post-receive
,赋予权限 chmod -R 777 post-receive
编辑内容vim post-receive
- 内容为:
#!/bin/sh
export LANG=zh_CN.UTF-8
cd /项目路径 //这个是你每次要同步的文件夹
unset GIT_DIR //这个很重要! 很多同学没有写这个就同步不了,因为git执行自动脚本的时候有执行一些自定义变量,所以我们在这里unset一下
git pull origin master
结束
- 完成上面步骤后,每次本地push,将自动更新推送到指定目录之下,完成自动更新发布