创建基于HTTP协议的SVN版本控制服务(Apache)

说明:本文没有讨论什么技术问题,仅仅是自己在使用SVN进行版本控制时的创建过程,或许有人对此不太熟悉,希望对这个感兴趣的有帮助。

虽说现在好多人都已经使用Git作为版本控制,Git在分支管理和性能上着实不错,但是要是办公环境里依然使用SVN,这个可能对新手快速上手就有些用处了。

准备:

操作系统:Debian 6

Web服务器:Apache2

SVN服务端:Subversion

SVN工具:Subversion-tools(可选)

支持SVN的Apache模块:libapache2-svn

1.安装软件:

sudo apt-get install apache2 subversion subversion-tools libapache2-svn

2.检查Apache是否安装好:

浏览器输入:http://localhost:80/ 是否有 It Works显示

3.检查Subversion是否安装成功:

终端进入一个新建的文件夹,运行明令:svnadmin create ./(命令:在当前文件夹下创建版本控制库)

查看文件夹内容是否包含 confdavdbhookslocks文件夹以及format、README.txt文件。

4.检查libapache-svn是否安装成功:

进入/etc/apache2/mods-availables文件夹,查看是否包含dav.load dav_svn.conf dav_svn.load文件。

5.创建版本控制库:

如上(3)中的命令,我们这样就可以创建一个版本库。本文中我们在/home/meego/repo/文件夹创建。

6.配置Apache服务,使用Apache访问版本控制库。

6.1进入/etc/apache2/(Apache2配置文件所在的文件夹),首先检查dav模块以及dav_svn模块是否已经启动。

Debian中管理Apache模块是否启动的方式是:模块是否存在与/etc/apache2/mods-enabled/文件夹中,所以只需在

/etc/apache2/mods-enabled中检查dav.load dav_svn.conf dav_svn.load这三个文件是否存在就可以。

如果不存在:将其从mods-availables中拷贝过来,或是创建链接。

创建链接命令:

sudo ln -s /etc/apache2/mods-availables/dav.load /etc/apache2/mods-enabled/dav.load;

sudo ln -s /etc/apache2/mods-availables/dav_svn.load /etc/apache2/mods-enabled/dav_svn.load;

sudo ln -s /etc/apache2/mods-availables/dav_svn.conf /etc/apache2/mods-enabled/dav_svn.conf;

6.2创建Apache站点

编辑/etc/apache2/mods-enabled/dav_svn.conf文件:

<Location /svn>
DAV svn

SVNPath /home/meego/repo

AuthType Basic
AuthName "Meego SVN Repo"
AuthUserFile /etc/apache2/dav_svn.passwd

AuthzSVNAccessFile /etc/apache2/dav_svn.authz

Require valid-user
</Location>

注意上面的SVNPath要设置成你创建的版本库所在的文件夹。

6.3创建SVN用户、密码、SVN权限设置:

上面的站点文件中AuthUserFile即为SVN用户密码文件,其中密码使用MD5加密,这个文件的生成需要一个命令htpasswd。

htpasswd具体使用,可man一下。

现在创建一个用户:xuem(本文中使用的用户名)

htpasswd -c /etc/apache2/dav_svn.passwd xuem

注意:上面的xuem修改成你自己要创建的用户名。

执行命令后,输入用户密码即可。可以打开dav_svn.passwd文件看一下。

-c 参数表示创建新的dav_svn.passwd,所以创建第2个用户的时候,就不要加此参数。

上面站点配置中dav_svn.authz文件,就是SVN的权限设置,可以手动创建一个。

内容设置跟Subversion中conf文件下的authz文件配置方法一样:

[groups]
admin = xuem

[/]
* = r
@admin = rw

对于Authz文件的详细设置可以参考Subversion的文档。

7.配置完毕。

现在你可以在浏览器中输入:http://localhost:80/svn来访问你的版本库文件。

8.如果访问不成功:

8.1出现403错误:

这种错误主要是你的目录权限以及你的Apache运行用户的权限问题。再此说明Apache2运行用户要有你的版本控制库所在的文件夹的权限。

Debian下的Apache2运行用户是www-data.可以在/etc/apache2/envvars中设置:

分别是APACHE_RUN_USERAPACHE_RUN_GROUP项。

这里你可以设置成你创建版本控制库的用户。

或是将你的版本库的权限赋给www-data用户:

方法是终端运行:

sudo chown -R www-data:www-data /home/meego/repo

注意上面的路径改成你的版本库所在的路径。

8.2出现errorcode='x'的错误:

这样的错误多数在于站点设置中设置的SVNPath不对,或是你设置了SVNParentPath而不是SVNPath

SVNParentPath用于支持多个版本库的情况,如果只有一个版本库,只需设置SVNPath就足够了。

9.如果你还没有设置好,可以查看一下Apache的错误日志。

也可以留言,大家一起谈论。这些都不是技术上的问题,花太多的时间研究这个还不如去泡MM呢,设置好能用就行了。

没必要都研究一遍,希望此文可以为你节省一点时间。

XueM:www.cnblogs.com/daydayfree


posted @ 2011-09-29 23:47  XueM  Views(12429)  Comments(6Edit  收藏  举报