为什么写下这篇文章
首先,关于我为什么要使用svn而不是git或者ftp,这篇关于svn的使用文章已经有详细的解释
为什么我要实现远程自动部署呢?
因为,我的svn server
和web server
不在同一个主机上,每次修改了代码执行了svn commit
都要用xshell连接上服务器执行svn up
操作,很麻烦,所以就想搞一个远程自动部署
同服务器自动部署
同服务器说明
svn目录:/var/www/svn/test_yiranzai_cn
(A服务器)
web project目录:/var/www/html/test_yiranzai_cn
(A服务器)
配置自动部署
新建post-commit
1 | cd /var/www/svn/test_yiranzai_cn/hooks/ |
赋予权限
1 | chmod +x post-commit |
测试
测试的话,我这里是在本地修改版本库,点commit,然后再看web project上的数据是否更新来测试。
远程服务器自动部署
远程服务器说明
svn目录:/var/www/svn/test_yiranzai_cn
(A服务器)
web project目录:/var/www/html/test_yiranzai_cn
(B服务器)
web project for shell:/var/www/html/shell_yiranzai_cn
(B服务器)
看完上面的同服务器部署,你是否想到远程服务器部署的方法?
这里我的想法是,在B服务器上另外部署一个web project for shell,利用世界上最好的语言PHP去执行svn up
操作,然后在post-commit
中配置curl
访问这个web project for shell
OK,说干就干
新建用于执行shell命令的web项目
这里怎么创建web项目我就不多说了,配置了一个shell.yiranzai.top
指向该web项目
创建执行shell命令的文件
1 | cd /var/www/html/shell_yiranzai_cn/ |
配置post-commit
新建post-commit
1 | cd /var/www/svn/test_yiranzai_cn/hooks/ |
赋予权限
1 | chmod +x post-commit |
测试
测试的话,我这里是在本地修改版本库,点commit,然后再看web project上的数据是否更新来测试
完
—End—