Apache+subversion配置

Apache+subversion配置过程。

一、工具准备

Apache Web服务器:httpd-2.0.61.tar.gz
Subversion
源码包及依赖包:subversion-1.4.3.tar.gz ,subversion-deps-1.4.3.tar.gz

都放到/home/project1下。

 

二,安装Apache

Apache的安装要记得打开dav模块和动态模块选项。安装安装命令如下:

tar –zxvf httpd-2.0.61.tar.gz

cd httpd-2.0.61

./configure –enable-dav –enable-so 

(这样是默认安装到/usr/local/apache2里面,和

./configure –-prefix=/usr/local/apache2 –enable-dav –enable-so 效果一样)

make

make install

 

三、安装Subversion

SVN的安装一定要注意:

1,svn依赖的APR的版本要正确。如果apache2.0.x,对应的APR版本应为0.9.xApache2.2.x,对应的APR版本应为1.2.x 由于subversion-deps包里的APR0.9.x的,因此编译svn时要删除从deps里解压出来的apr, apr-util,改而使用apache 2.2里提供的。

2,如果apache不是安装在默认路径,configure必須加上--with-apxs选项,如:./configure --with-apxs=/home/apache2/bin/apxs(你的apahce的安装路径里面的apxs,但最好还是 加上吧)。

 

安装命令:

tar –zxvf subversion-1.4.3.tar.gz

tar –zxvf subversion-deps-1.4.3.tar.gz

# subversion-deps的文件也会解压到subversion-1.4.3目录中

cd subversion-1.4.3

./configure –prefix=/usr/local/subversion –with-apxs=/home/apache2/bin/apxs

make

make install

(这边我的apache版本里的APRsubversion-deps包里的APR是一样的所以不要修改)

 

若使用apache2.2.x(例如httpd-2.2.4)安装命令如下:

tar –zxvf subversion-1.4.3.tar.gz
tar –zxvf  subversion-deps-1.4.3.tar.gz
# subversion-deps
的文件也会解压到subversion-1.4.3目录中
cd subversion-1.4.3
rm -rf apr
rm -rf apr-util
ln -s /home/tmp/httpd-2.2.4/srclib/apr apr
ln -s /home/tmp/httpd-2.2.4/srclib/apr-util apr-util
./configure –prefix=/usr/local/subversion –with-apxs=/home/apache2/bin/apxs

make

make install

 

安装完成后,查看是否存在文件$APACHE_HOME/modules/mod_dav_svn.so(默认 /usr/local/apache2/modules/mod_dav_svn.so)

 

四、在apache中配置svn

创建svn库:

cd /home/project1

svnadmin create project1  #建立仓库

svnadmin create project2  

chown nobody:nobody –R project1

chown nobody:nobody –R project1    #(修改访问权限,设为nobody(apache默认用户)可读写的,不同的apache版本的默认用户不一样,可去apache的配置文档httpd.conf里查看)

 

cd /home/project1

touch svn-access-file     #存储用户访问权限文档

touch svn-auth-file        #存储用户名,密码文档

 

 

vim /usr/local/apache2/conf/httpd.conf   #修改apache配置

查看是否导入SVN模块,若没导入加上

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

然后配置仓库(在末尾添加即可)

<Location /subversion>
    DAV svn
    SVNParentPath /home/project1

AuthzSVNAccessFile  /home/project1/svn-access-file
    AuthType Basic

AuthName "Subversion repository"
    AuthUserFile /home/project1/svn-auth-file
    Require valid-user
  
</Location>

说明:

我的目录结构/home/project1/project1(后面一个project1是仓库)
    a)
第一行:<Location /subversion>表示project1仓库位于/subversion虚拟目录下面(Location的作用有点类似Alias的作用)。当然你可以的目录,比如<Location /src>。那么这样配置一般您将可以通过浏览器http://localhost/subversion进行浏览(如果权限足够的话)

    b)
第二行:DAV svn表示dav启用svn支持。如果您想更详细了解dav是啥去baidu或者google一下,网上资料蛮多的。
    c)
第三行:SVNParentPath表示使用SVN方式 .SVN支持两种对项目的管理方式,一种是SVNParentPath,另一种是SVNPath。使用SVNParentPath这种方式添加一个新项目是不需要重启 apache的,而另一种方式则需要。对于一个实际使用的服务器来说,是否需要常常重启是一件很重要的事情了。
    d)
第四行:AuthzSVNAccessFile /home/project1/svn-access-file。表示用户权限文件是/home/project1/svn-access-file (权限文件的写法,我在后面再说)。文件可以位于任意其他位置。
    e)
第五至八行:这个是apache的配置,使用使用apache的用户文件作为身份验证,需且要求有效用户才可以访问。其实在配置文件注释中已经说明了怎么样使用 htpasswd进行用户管理的方式。在此需要注意的是第四行的配置与此处的配置,在svn-access-file权限文件中,只配置哪个用户是什么样的权限,而判断是否已经通过密码验证却是由apache的用户管理实现的。也就是说,比如我有一个用户qsg,那么判断这个用户的密码是否正确是由此处完成的,而判断此用户对哪些项目有什么样的权限则是由svn-access-file文件完成的。

 

修改svn-access-file文件

cd /home/project1

vim svn-access-file

添加下面(我有两个仓库):

[groups]

admin=king

team1=

team2=

[/]

*=r

@admin=rw

[project1:/]

@team1=rw

[project2:/]

@team2=rw

#权限分配说明
   [project1:/] //
这表示,仓库project1的根目录下的访问权限
   @team1= rw //project1
仓库team1用户组具有读和写权限,如果在前面加上@符号,则表示这是个群组权限设置
   bao = r //project1
仓库bao用户具有读权限
   [project2:/] //project2
仓库根目录下的访问权限

@team2=rw //project2仓库team2用户组具有读和写权限
   wooin = r //wooin
用户在test2仓库根目录下只有读权限
   bao = //bao
用户在 test2仓库根目录下无任何权限
   [/] //
这个表示在所有仓库的根目录下
   * = r //
这个表示对所有的用户都具有读权限

@admin=rw//这个表示对admin组具有读权限
   #[groups] //
这个表示群组设置(添加组成员)

admin=king

team1=developer1,developer2

team2=developer3,developer4

添加用户,密码。

htpasswd –c /home/project1/svn-auth-file king(第一次添加 -c是创建密码文件)

会提示输入密码,两次输入后就OK了。

(注意再次添加的时候用 htpasswd –m /home/project1/svn-auth-file otheruser

 

重启服务器;

/usr/local/apache2/bin/apachectl restart

(如果没错误,就大功告成了)

实验一下,

links http://localhost/subversion/project1

会提示输入用户名密码。

能进去就OK了。

如果发生连http://localhost/都上不了,看 你的防火墙设置,修改一下就OK

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值