首先做下语境定义,以下的所有说明,均基于以下设定:
客户端:开发人员用来编辑修改程序的电脑,可以是windows也可以是Linux、MacOS等
SVN端:提供SVN服务的电脑,通常简称为SVN服务器
Web服务器:提供Web SVN服务的电脑,在本文中和SVN端共用一台电脑。
这三者之间的关系:开发人员在客户端,用TortoiseSVN等单独的SVN客户端,或者内嵌SVN功能的IDE,如Zend Studio,将自己编写的代码同步到SVN端,这一步,一般来说,开发人员只需拿到属于自己的用户名密码、属于自己的项目就好了,不用多说;但是SVN端对这些数据都是二进制文件的方式保存成数据库,无法直接用肉眼查看,所以我打算在这台服务器上建立Web服务器,将数据从SVN端同步到Web服务器,这样就可以成为一个测试服务器,开发人员写完代码,SVN同步一下,就可以在Web服务器上看到效果。
服务器配置:
硬件:普通Intel CPU的PC机
操作系统:FreeBSD 64-bit
主要软件:Nginx、MySQL、PHP、Subversion(独立版,因为没装Apache)
SVN库保存目录设定:/var/svn
xy280库的保存目录:/var/svn/xy280
Web服务的Document Root:/var/vhosts/
xy280项目对应的目录:/var/vhosts/test.xxx.com
cd /var/vhosts/test.xxx.com
(注意,本项目在公网上是保存在二级目录下的,所以要先进入顶级目录,这样从SVN端同步到Web服务器时,就可以正好将带出的目录作为二级目录,如果项目保存在顶级目录下的话,这里就要进入Document Root)
svn co file:///var/svn/xy280
这一步就是将SVN库中的数据拷贝到Web服务器上的对应目录
进入xy280库目录下的hooks目录,将post-commit.tmpl拷贝为post-commit,去除所有原有未被注释的语句,输入以下
SVN=/usr/local/bin/svn WEB=/var/vhosts/xytest.xxx.com/xy280
CHOWN=/usr/sbin/chown
CHMOD=/bin/chmod
cd /var/vhosts/xytest.xxx.com/xy280
$SVN cleanup
cd /var/svn/xy280/hooks
$SVN update –username aaa –password bbb $WEB //这里的用户名密码无论是字母数字,均无需加双引号
$CHOWN -R svn:svn /var/vhosts/xytest.xxx.com/xy280
$CHMOD -R 757 /var/vhosts/xytest.xxx.com/xy280/.svn |
退出后chmod +x post-commit,给该文件加上执行权限,chown svn:svn post-commit,使之属于SVN用户,SVN组,拥有足够权限以便被执行
进入/usr/local/etc/nginx,修改nginx.conf
将原来user www www;修改为user svn svn;这一修改的目的是保证SVN和Nginx使用同样的用户名和组,从而最大限度地避免权限不够的问题
在another server这一块给你的域名做设置,基本类似于此:
server { listen 80;
server_name xytest.xxx.com;
root /var/vhosts/xytest.xxx.com;
index index.php;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
access_log /var/log/access_xytest.xxx.com.log main;
} |
这样基本上就可以达到我们的目的了