创建基于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 ./(命令:在当前文件夹下创建版本控制库)
查看文件夹内容是否包含 conf、dav、db、hooks、locks文件夹以及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_USER和APACHE_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呢,设置好能用就行了。
没必要都研究一遍,希望此文可以为你节省一点时间。