Linux下Apache与SVN整合安装
在日常的开发中,我们常常是在内网搭建SVN服务器,但有时通过联网访问SVN并提交内容到SVN上也是一个很普遍的需求,比如一些开源系统常常是这么干的,你要得到它们的源码,往往就是通过SVN来得到的。
但通过Apache和SVN搭建联网的SVN环境却并不是一件很轻松的事,尤其对初次安装的人来讲,子猴在这方面也颇费了一些周折,下面我将根据自己的安装经验来讲讲如何搭建这样的一个环境。
1、 安装Apache
Apache是一款老牌的Web服务器了,在这里之所以只选择它,是因为搭建联网的SVN貌似只有它才能支持,连目前大名鼎鼎的Nginx对此也无能无力!
Apache的下载地址是:
我使用的版本是2.2.17,建议最好下载源码进行安装,有人可能问了,为啥最好用源码进行安装呢?因为源码我们在编译的过程中可以随意的加入我们想要的编译参数,而二进制安装文件都已经是定好了的,所以源码安装更加灵活。
在安装Apache的过程中需要注意的是,如果你仅仅是安装Apache软件本身,你想怎么编译都行,但我们这里是与SVN一起来使用的,所以有些参数是不能没有的,如下:
./configure –prefix=/usr/local/apache –enable-so –enable-dav
make
make install
其中–enable-dav是不能缺少的。
WebDAV英文全称:Web-based Distributed Authoring and Versioning(基于Web的分布式授权和版本记录),是HTTP协议的一个扩展,Subversion利用了WebDAV的网络协议。关于WebDAV的更多信息,可以参见其官方网站:
2、 安装SVN
下载地址:http://subversion.tigris.org/
下载源码解压,进行如下安装:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | ./configure --with-apxs=/usr/local/apache2.2.17/bin/apxs --prefix=/usr/local/subversion-1.6.16 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-openssl=/usr/local/ssl --with-libs=/usr/local/ssl --with-ssl --with-zlib=/usr/local/zlib-1.2.5 --with-serf=/usr/local/serf --enable-maintainer-mode |
这里依赖的一些包比较多,如果在安装的过程中报一些错误,很可能就是因为其他依赖的包还没安装所致。
这里要特别注意的是:
–with-apxs=/usr/local/apache2.2.17/bin/apxs,这里SVN用到了Apache的apxs,如果缺少这个是不能联网的。
然后是编译、安装
make
make install
如果安装无误,运行svn help会输出如下信息:
3、 创建SVN仓库
mkdir –p /home/svnroot/repository
作为SVN的存储根目录,现在我们创建一个工程pro1:
svnadmin create pro1,创建完后在目录pro1下面会有如下的一些目录和文件:
hooks、locks、README.TXT等等
然后我们再新建一些SVN 工程所必备的目录:
mkdir trunk
mkdir tags
mkdir branches
4、 创建验证所需Apache用户
此用户即是访问SVN的用户,进入到Apache的bin目录,运行:
./htpasswd -cm /home/svnroot/repository/authfile test
增加一个新用户test,随后再输入密码。
在/home/svnroot/repository/authfile中可以看到有如下内容:
test:$apr1$JBCioPZK$VHKGiIW.iLopCepEw9YJE/
顺便说一句的是,你如果要在authfile中继续添加用户,则只用./htpasswd –m即可。
5、 Apache配置
进入到apache的conf目录中,编辑httpd.conf
首先检查是否有如下两行:
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
我这里没有测试是否在安装Apache的过程中会自动多出这两行来,但如果没有这两行的话,你就自己加上去,就加到#LoadModule foo_module modules/mod_foo.so的下方即可。
然后在httpd.conf的下方加入:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | SSLRandomSeed startup builtin SSLRandomSeed connect builtin //设置要访问的SVN根目录,这里是svn DAV svn SVNListParentPath On ##SVN根目录,也就是存储仓库根目录 SVNParentPath /home/svnroot/repository ##下面这个是SVN的验证文件,但经过测试,是可以去掉的 #AuthzSVNAccessFile /home/svnroot/repository/authz.conf ##验证类型,弹出一个登陆窗口 AuthType Basic ##验证提示名 AuthName "SVN REPOS" ##SVN验证文件,里面存放的是用户名及对应的编码内容 AuthUserFile /home/svnroot/repository/authfile ##这行经过测试是无用的 #AuthUserFile /usr/local/subversion-1.6.16/svn_passwdfile ##Apache验证访问文件 AuthzSVNAccessFile /usr/local/subversion-1.6.16/svn_accessfile ##表示需要验证的用户才能访问 Require valid-user |
设置完后,别忘记了重启一下Apache服务:
./apachectl restart
6、 配置文件说明
/usr/local/subversion-1.6.16/svn_accessfile
里面的内容设置为:
##表示根目录下没有任何用户能够访问
[/]
#test=rw
##工程pro1可以由用户test访问,权限为读和写
[pro1:/]
test = rw
7、 联网访问
输入http://www.zihou.com/svn/pro1/,弹出如下窗口:
嗯,不错,成功了一大半!如果要完成成功的话还得看我们刚才设置的用户名及密码是否可以正常登录,用刚才创建的test用户登录看看:
Very Good!完全成功!
如无转载说明,则均为本站原创文章,转载请注明:来源:子猴博客



