本文记录通过git来自动部署php代码的操作步骤。
试验环境:
* ubuntu server 14.04
# 一、创建服务器端仓库
服务器上需要配置两个仓库,一个用于代码中转的**远程仓库**,一个用于http访问的**本地仓库**。
**这里的「远程仓库」并不等同于托管代码的「中央仓库」**,这两个仓库都是为了自动同步代码并部署网站而存在。
* 在代码部署目录中建立git仓库(假设为 /home/bl/www,用于http访问)
~~~
cd ~
mkdir www
cd www
git init
git config --global user.email "user@163.com"
git config --global user.name "User"
touch Readme.txt
git add .
git commit -a -m "first commit"
~~~
* 建立中转的远程仓库(假设是 /home/bl/repos)执行
~~~
mkdir -p ~/repos/project.git
cd ~/repos/project.git
git init --bare
~~~
* 向中转的仓库推送
~~~
cd ~/www
git remote add origin ~/repos/project.git
git push origin master
~~~
* 修改.git目录的权限
~~~
cd ~/www
chmod 700 -R .git
~~~
* * * * *
# 二、服务器配置 Git Hook
`cd ~/repos/project.git/hooks`
建立 post-receive 文件,内容如下:
~~~
#!/bin/sh
unset GIT_DIR
NowPath=`pwd`
DeployPath="~/www/"
cd $DeployPath
git pull origin master
cd $NowPath
exit 0
~~~
**`chmod a+x post-receive `**
设置可执行权限后,服务器端的配置就基本完成了。
* * * * *
# 三、客户端配置开发
~~~
cd ~
git clone user@192.168.1.77:/home/bl/repos/project.git php_test
cd php_test/
~~~
修改a.txt文件
~~~
git ci -a -m "test remote"
git push origin master
~~~
现在查看远端的~/www/目录下的a.txt应该同步修改了(如果a.txt没同步变化请检查post-receive的执行权限)
# 四、设置免密码登陆
* 生成 SSH 密钥(如果本地已经生成可以跳过此步)
`ssh-keygen -t rsa`
* 将客户端上的公钥复制到SSH服务端
`ssh-copy-id user@ip_address`