不去在乎结果,热情地付出过,就好了.

编译Subversion模块,搭建基于apache的SVN服务器

如果要协同工作,代码版本的控制就显得非常重要,

是一个不错的选择.

本文针对使用自己编译apache作为网页服务器软件,且有在线浏览项目的的情况,

以下所有均在网页服务器可以正常运作的情况下进行,

没有apache的请先编译安装apache,本文不适于apt-get安装的apache.

对于apt-get安装的apache,网上方法较多,在此不谈.

声明:文中的代码不能直接使用,请根据自身情况作出修改!

下面开始,

首先至Subversion下载页面,下载最新的版本,格式由于本机是debian,故选择.tar.gz

存至所需位置,例如/usr/local/src,

也可在命令行中输入:

wget -c http://labs.renren.com/apache-mirror/subversion/subversion-1.7.1.tar.gz /usr/local/src

(选择人人源,-c表示续传,至2011.12.03最新版为1.7.1)

下载好后执行命令解包:

tar -zxvf subversion-1.7.1.tar.gz -C /usr/local/src

(.tar.gz使用-z,.tar.bz2使用-j)

进入源码目录然后运行命令进行编译:<

./configure –prefix=/usr/local/subversion –with-apxs=/usr/local/apache2/bin/apxs –with-ssl –enable-maintainer-mode –enable-dav –enable-dav-fs –enable-dav-lock

结果提示错误configure: error: Subversion requires SQLite

到网上查了一下,新版的Subversion是要求SQLite来存数据的,

为此网上还有一个系统管理员的咆哮,感觉挺搞笑的,地址在这

解决办法:

SQLite下载页面去下一个回来,或者

wget -c http://www.sqlite.org/sqlite-autoconf-3070900.tar.gz

然后解包

tar -xvzf sqlite-autoconf-3070900.tar.gz -C /usr/local/src/

把里面的sqlite3.c复制到subversion的sqlite-amalgamation目录下,没有的自己mkdir

mkdir sqlite-amalgamation

cp ../sqlite-autoconf-3070900/sqlite3.c sqlite-amalgamation/

重新运行编译命令:

./configure –prefix=/usr/local/subversion –with-apxs=/usr/local/apache2/bin/apxs –with-ssl –enable-maintainer-mode –enable-dav –enable-dav-fs –enable-dav-lock

如果最后出现下面WARNING,我们直接忽略即可,因为不使用BDB存储.

configure: WARNING: we have configured without BDB filesystem support

You don’t seem to have Berkeley DB version 4.0.14 or newer
installed and linked to APR-UTIL. We have created Makefiles which
will build without the Berkeley DB back-end; your repositories will
use FSFS as the default back-end. You can find the latest version of
Berkeley DB here:

http://www.sleepycat.com/download/index.shtml

下面安装命令:

make && make install

安装完毕测试是否安装成功:

/usr/local/svn/bin/svnserve –version

如果出现如下提示则说明安装成功:

svnserve, version 1.7.1 (r1186859)
compiled Dec 3 2011, 08:07:10

Copyright (C) 2011 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository back-end (FS) modules are available:

* fs_fs : Module for working with a plain file (FSFS) repository.

 

下面配置svn服务器,

首先生成一个项目的目录(自定):

mkdir /var/www/html/svn/project1

然后生成项目的配置文件:

svnadmin create /var/www/html/svn/project1

修改配置:

vi /var/www/html/svn/project1/conf/svnserve.conf

将其中的如下4项去掉注释并修改:

anon-access = none
auth-access = write
password-db = passwd
authz-db = authz

注意:对用户配置文件的修改立即生效,不必重启svn.

然后设置项目的帐号密码:

vim /var/www/html/svn/project1/conf/passwd

在下面添加用户和密码,每行一组 username = password 保存.

待续…

脑袋晕了,太多问题了,刚刚检查了一下apache载入的模块,发现根本没有svn,

手动把

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

写入httpd.conf立马报错:undefined symbol: dav_register_provider

网上说是apache当初编译的时候没启用davweb支持,而这个是svn必需的,

只好重新编译apache……

./configure –prefix=/usr/local/apache2 –enable-dav –enable-so –enable-maintainer-mode –enable-rewrite

然后make && make install

在按回车的瞬间意识到,我没备份!!!

试了一下网站果然上不去了,赶紧看配置文件,还好都在……

结果又出问题了:module rewrite_module is built-in and can’t be loaded

rewrite模块是我后来单独编译的,apache的原始安装是没有的,

就多了一句:LoadModule rewrite_module modules/mod_rewrite.so

在上网查,原来是重新编译的时候,rewrite已经内嵌了,就不用再载入rewrite模块,

加#注释掉/apachectl start,好了.

他妹子的,我再休息一下….

既然重新编译了apache,Subversion还是也重新编译一下吧,

方法上面有,

然后再httpd.conf最后加上:

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /var/www/html/svn/project1  //svn父目录
AuthzSVNAccessFile /svn/porject1/conf/passwd //权限配置文件
AuthType Basic //连接类型设置
AuthName “Subversion.zoneyump” //连接框提示
AuthUserFile /svn/porject1/conf/authz //用户配置文件
Require valid-user //采用何种认证
</Location>

重启apache然后登录http://域名/svn,

出现了用户密码的登录框,

输入用户密码可以登录进去,不过是500错误,

应该是没有权限,接下来设置……

待续…

果然文章一断就续不起来了,这篇文章实在写不下去了,

准备再次投入到svn的时候,发现了git,决定一试,

至于svn权限设置网上有很多,就不折腾了.

打赏

Add comment

17 − 8 =

不去在乎结果,热情地付出过,就好了.
某一天,你所坚持的,和承担过的一切,会有回应。它们并非失去踪迹,只是需要时间抵达。这和星光落入眼睛里,是一样的道理。

近期文章

近期评论