#下边为仓库的创建,钩子文件内容,如何实现自动部署站点钩子文件至关重要
#创建一个空文件夹
mkdir demo.git
#切换至创建的文件夹下
cd demo.git
#初始化git仓库
git init --bare
#执行命令返回信息
Initialized empty Git repository in /mnt/git/demo.git/ #即为成功
#切换至刚才创建的目录中会发现已经生成了对应的git相关文件夹和文件
drwxr-xr-x 2 root root 4096 Dec 8 13:50 branches
-rw-r--r-- 1 root root 66 Dec 8 13:50 config
-rw-r--r-- 1 root root 73 Dec 8 13:50 description
-rw-r--r-- 1 root root 23 Dec 8 13:50 HEAD
drwxr-xr-x 2 root root 4096 Dec 8 13:50 hooks
drwxr-xr-x 2 root root 4096 Dec 8 13:50 info
drwxr-xr-x 4 root root 4096 Dec 8 13:50 objects
drwxr-xr-x 4 root root 4096 Dec 8 13:50 refs
#vim编辑config文件
vim config
#文件内容如下
[core]
repositoryformatversion = 0
filemode = true
bare = true
#将文件中的filemode值设置为false
#(注意:filemode git文件提交时是否包含文件的rwx权限,一般设置为false,详细可查度娘)
#编辑结束保存退出
#创建站点目录
mkdir webDemo
#并将要使用的域名解析到该站点即可
#重点:站点目录需要赋予可读可写权限,不然一会配置git钩子文件自动部署会出现问题
#回到刚才创建的git仓库下,根据当前情况而言(权限问题一定要注重,稍有不慎将引火上身)
#如若测试,将git仓库下的内容设置权限命令
chmod -R 777
#创建钩子文件实现自动化部署
#进入仓库目录下的 hooks文件夹下(如若想深入了解git目录下的文件以及文件夹的具体含义,私下学习,本次不说)
cd demo.git/hooks
#钩子的重点来了
#创建并编辑文件
vim post-receive
#这是目前我使用的钩子文件内容,可根据你自己的情况修改对应的目录信息
--开始
#!/bin/bash
while read oldrev newrev ref
do
if [[ $ref =~ .*/master$ ]];
then
echo "this is DEMO master"
git --work-tree=/mnt/demo/web checkout -f master
fi
if [[ $ref =~ .*/dev$ ]];
then
echo "this is DEMO dev"
git --work-tree=/mnt/dev-demo/web checkout -f dev
fi
done
--结束
#上述内容大致为将不同版本的信息自动部署入不同的站点目录中
#创建用户 分配用户组 分配git仓库文件夹所属用户和用户组皆为简单部分,多练多学,祝你早日成功