您的位置:首页 > 运维架构 > Apache

linux下配置apache2.2.10与svn1.4.5整合

2008-11-09 23:48 489 查看
=====================================================================================================
<1> 配置apache:
./configure --prefix=/opt/apache2 --enable-so --enable-mods-shared=all
./configure --prefix=/opt/apache2 --enable-so --enable-dav --enable-dav-fs --enable-mods-shared=most
./configure --prefix=/opt/apache2 --enable-so --enable-mods-shared=all
三种,任意选一种,看自己需要的模块。我选择的第二种;
make clean
make
make install
安装好后,执行/opt/apache2/bin/apachectl start启动,使用http://localhost看是否成功 .

<2>编译SVN:
使用默认的文件系统保存数据.
最终完整通过安装和测试的编译参数为:
./configure --with-apxs=/opt/apache2/bin/apxs /
--with-apr=/home/src/server/httpd-2.2.10/srclib/apr /
--with-apr-util=/home/src/server/httpd-2.2.10/srclib/apr-util/
--prefix=/opt/subversion/
--with-ssl
其中 /home/src/server/ 为 httpd-2.2.10 源代码所在文件夹,根据实际情况调整一下.

如果编译出错,提示--with-apr=/home/src/server/httpd-2.2.10/srclib/apr
--with-apr-util=/home/src/server/httpd-2.2.10/srclib/apr-util
不是合法的参数,请到apache源代码(srclib)下面自行编译apr和apr-util
./configure --prefix=/usr/local/apr
./configure --prefix=/usr/local/apr-util
make
make install

如果修改后,编译还是通不过,将编译参数修改为:
./configure --with-apxs=/opt/apache2/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config /
--with-apr-util=/usr/local/apr/bin/apu-1-config --prefix=/opt/subversion/
--with-ssl/
apr-1-config,apu-1-config 是刚才编一apr,apr-util时,在其目录下生成的。
如果还是编译不过,那就见鬼了,哈.
成功编译svn后会在 httpd.conf 中自动加上
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
两个模块,没有的话,自行加上或检测是否真的编译成功
查看svn是否安装成功:
#/opt/subversion/bin/svnadmin --version

<3> 添加一个用户,用来运行apache和svn
#groupadd svngroup
#useradd svnuser -g svngroup
#passwd svnuser

<4>之后,将用户从root权限切换到svnuser
创建库文件所在的根目录:
mkdir /home/svnuser/repository
创建仓库"test":
/opt/subversion/bin/svnuser create /home/svnuser/repository/test
//不让其他人有该目录的权限
# chmod 700 /home/svnuser/repository/

<5>修改Apache配置文件
修改apache 的User 和Group
User svngroup
Group svnuser
如果是单库不需要认证即可访问用如下配置
<Location /svn>
DAV svn
SVNPath /home/svnroot/repository/
</Location>
如果是单库需要认证的用如下配置
<Location /svn>
DAV svn
SVNPath /home/svnuser/repository/
AuthzSVNAccessFile /home/svnuser/repository/authz.conf
AuthType Basic
AuthName "Subversion.Storage"
AuthUserFile /home/svnuser/repository/authfile
Require valid-user
</Location>
如果是多库需要认证的用如下配置(我使用的是这种方式)
<Location /svn>
DAV svn
SVNParentPath /home/svnuser/repository/ //此处目录一定要是库目录的父目录
AuthzSVNAccessFile /home/svnuser/repository/authz.conf
AuthType Basic
AuthName "Subversion.zoneyump"
AuthUserFile /home/svnuser/repository/authfile
Require valid-user
</Location>
//"Require valid-user"告诉apache在authfile中所有的用户都可以访问。
如果没有,则只能第一个用户可以访问新建库.

<6>权限管理:
1 利用apache2/bin/htpasswd 生成用户配置文件(authfile):
/opt/apache2/bin/htpasswd -cm /home/svnuser/repository/authfile testuser
会提示输入密码,如果是第一次创建用户,需要用-c 参数,以后需要添加用户,则不需要-c参数。
2 权限分配
vi /home/svnuser/repository/authz.conf
格式如下:
[groups] //这个表示群组设置
project1_developers = wooin, bao //这个表示某群组里的成员
project2_developers = wooin
[project1:/]
@project1_developers = rw //如果在前面加上@符号,则表示这是个群组权限
[test:/] //这表示,仓库test的根目录下的访问权限
wooin = rw //test仓库wooin用户具有读和写权限
bao = r //test仓库bao用户具有读权限
[test2:/] //test2仓库根目录下的访问权限
wooin = r //wooin用户在test2仓库根目录下只有读权限
bao = //bao用户在 test2仓库根目录下无任何权限
[/] //这个表示在所有仓库的根目录下
* = r //这个表示对所有的用户都具有读权限
3 我自己的测试配置如下:
[groups]
admin = svnuser
[/]
@admin = rw

<7> 收尾工作
//重启apache
# /opt/apache2/bin/apachectl restart
//打开浏览器访问http://localhost/svn/test/,如果有东西显示就说明成功。
<8>几条常用svn 命令

svn update

svn add “filename”

svn commit
<9> 限制apache访问web-info目录:

<LocationMatch ".*WEB-INF.*">
Deny from all
</LocationMatch>
# # Allow direct access to WEB-INF directory under /projects and /svn
<LocationMatch "[/projects/ /svn/].*/WEB-INF.*">
Allow from all
</LocationMatch>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: