1.本文需要两个文件,httpd和subversion
httpd是web服务器,用来通过web访问subversion,这里是官方网站,这里是它的下载网页
2.编译安装httpd,subversion
## httpd
./configure --prefix=/usr/local/httpd-2.2.17 \
--with-mpm=prefork \
--enable-dav \
--enable-so \
--enable-maintainer-mode \
--enable-mods-shared=all \
--enable-deflate=shared
make && make install
httpd我们安装完成现在来看看svn的编译吧!
##svn
./configure --prefix=/usr/local/subversion \
--with-apxs=/usr/local/httpd-svn/bin/apxs \
--with-ssl \
--enable-maintainer-mode
make && make install
安装完后查看/usr/local/http-2.2.17/modules/mod_dav_svn.so是否存在
如果少一些auth mod的话可以用以下方式动态加载进去
源码包 cd /opt/src/httpd-2.2.17/modules/aaa
/usr/local/httpd/bin/apxs -i -a -c mod_authn_file.c 动态加载authn_file
svn配置所需要的mod有
LoadModule authn_dbd_module modules/mod_authn_dbd.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule dbd_module modules/mod_dbd.so
LoadModule substitute_module modules/mod_substitute.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule log_forensic_module modules/mod_log_forensic.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule ident_module modules/mod_ident.so
LoadModule version_module modules/mod_version.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dir_module modules/mod_dir.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule authn_file_module modules/mod_authn_file.so
3.svn配置
//创建库文件所在的目录 (svnroot用户进行下面的操作)
mkdir /home/svnroot/repository 创建库文件所在的目录
chmod 700 /home/svnroot/repository 让其它用户没有权限
//创建仓库"home_site"
svnadmin create /home/svnroot/repository/home_site 创建仓库home_site
cd /home/svnroot/repository/home_site 看看是不是多了些文件,如果是则说明Subversion安装成功了
svn import /home/www/guide file:///home/www/svnroot/repository/home_site -m "20110222" 提交后的修订版为20110222
4.apache配置
DocumentRoot /home/www
ServerName svn.home.corp.anjuke.com
DAV svn
SVNListParentPath on
SVNParentPath /home/www/svnroot/repository/ //svn父目录
AuthzSVNAccessFile /home/www/svnroot/repository/authz.conf //svn权限配置文件
AuthType Basic //连接类型设置
AuthName "Subversion repository" //连接框提示
AuthUserFile /home/www/svnroot/repository/authfile //用户配置文件
Satisfy Any
Require valid-user //采用何种认证
//其中authfile是通过"htpasswd –c /home/svnroot/repository/authfile username password"来创建的
//"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它,
//则只能第一个用户可以访问新建库
增加用户
htpasswd [-c] /home/svnroot/repository/authfile wooin
//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加
htpasswd authfile 用户名(加入新的用户)
vi /home/svnroot/repository/authz.conf
[test:/] //这表示,仓库test的根目录下的访问权限
wooin = rw //test仓库wooin用户具有读和写权限
bao = r //test仓库bao用户具有读权限
[test2:/] //test2仓库根目录下的访问权限
wooin = r //wooin用户在test2仓库根目录下只有读权限
bao = //bao用户在 test2仓库根目录下无任何权限
[/] //这个表示在所有仓库的根目录下
* = r //这个表示对所有的用户都具有读权限
#[groups] //这个表示群组设置
#svn1-developers = wooin, bao //这个表示某群组里的成员
#svn2-developers = wooin
#[svn1:/]
#@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置