一、准备好安装包:
①apr-1.4.5.tar.gz 下载地址:http://apr.apache.org/
②apr-util-1.4.1.tar.gz
③subversion-1.6.17.tar.gz 下载地址: http://subversion.tigris.org/
④subversion-deps-1.6.17.tar.gz
⑤httpd-2.2.22.tar.gz 下载地址:http://httpd.apache.org/
二、开始安装:
将上面所有要的安装包放到/home目录下,然后进入该目录
1.安装apr
tar zxvf apr-1.4.5.tar.gz #解压包 cd apr-1.3.6 ./configure make make install
2、安装apr-uti
tar zxvf apr-util-1.4.1.tar.gz cd apr-util-1.4.1.tar.gz ./configure --with-apr=/usr/local/apr make make install
3、安装 apache
tar zxvf httpd-2.2.22.tar.gz cd httpd-2.2.22 ./configure --prefix=/usr/local/apache2 --enable-so --enable-dav --enable-dav=shared --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr make make install
4、安装subversion
tar zxvf subversion-1.6.17.tar.gz tar zxvf subversion-deps-1.6.17.tar.gz cd subversion-1.6.17 ./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion make make install
注意:
在./configure的时候可能会报如下错误信息:
1.configure: error: no XML parser was found: expat or libxml 2.x required
原因是缺少libxml2库,安装libxml2库就可以解决:
apt-get install libxml2 libxml2-dev expat
2.configure: error: We require OpenSSL; try --with-openssl
原因是没有安装openssl,安装openssl就可以解决:
sudo apt-get install openssl
sudo apt-get install libssl-dev
其他可能出现的错误信息:
make: *** [subversion/svn /svn ] 错误 1
原因是缺少expat开发库,安装即可:
apt-get install libexpat-dev
至此,安装基本完毕,再配置下就可以使用了。
三、在apache中配置SVN
1.确认是否安装成功 :
到/usr/local/apache2/modules目录下查看是否存在以下四个文件:
httpd.exp、mod_authz_svn.so、mod_dav.so、mod_dav_svn.so
打开/usr/local/apache2/conf/httpd.conf文件,查看是否存在如下三句话,如不存在则手动添加:
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
2.创建库文件所在的目录
mkdir /home/svn
3.进入subversion的bin目录
cd /usr/local/subversion/bin
4.创建仓库"test"
./svnadmin create /home/svn/test
5.建立本地访问控制文件
mkdir /home/svn/conf /usr/local/apache2/bin/htpasswd -c /home/svn/conf/passwd.conf username
然后输入密码即可,默认是MD5加密的。
第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码,完成对用户的增加。
/usr/local/apache2/bin/htpasswd /home/svn/conf/passwd.conf bao
再添加一个测试用户。
6.建立本地项目控制文件
touch /home/svn/conf/authz.conf
本例authz.conf内容为:
[test:/] //这表示,仓库test的根目录下的访问权限 username = rw //test仓库username用户具有读和写权限 #bao = r //test仓库bao用户具有读权限 [/] //这个表示在所有仓库的根目录下 * = r //这个表示对所有的用户都具有读权限 #[groups] //这个表示群组设置 #svn1-developers = username , bao //这个表示某群组里的成员 #svn2-developers = username #[svn1:/] #@svn1-developers = rw //如果在前面加上@符号,则表示这是个群组权限设置
注意:配置authz.conf时最好去掉后面的注释,防止出现问题。
7.定义apache访问svn配置
编辑/usr/local/apache2/conf/httpd.conf文件,在最下方添加如下信息
<Location /svn> DAV svn #svn父目录 SVNParentPath /home/svn #权限配置文件 AuthzSVNAccessFile /home/svn/conf/authz.conf #连接类型设置 AuthType Basic #连接框提示 AuthName "Subversion repository" #用户配置文件 AuthUserFile /home/svn/conf/passwd.conf #采用何种认证 Require valid-user </Location>
至此,整个安装过程完成了!
四、测试连接
1.启动apache
/usr/local/apache2/bin/apachectl start
2.打开浏览器,输入http://localhost/svn/test
使用刚才创建的权限用户名与密码登录即可访问
注意:在你上传文件的时候可能会有如下权限不足的提示
Permission denied
svn: Commit failed (details follow):
svn: Can't create directory '/home/svn/db/transactions/0-1.txn': Permission denied
这是因为apache在线程用户没有权限访问svn的仓库,两者分别属于不同的用户者
本例apache属于daemon拥有者,而svn仓库属于svn拥有者
解决方法:
chown -R daemon /home/svn
chmod -R 755 /home/svn
重启下apache:
/usr/local/apache2.2.9/bin/apachectl restart
备注:如果需要导入Ldap的模块则需要先安装OpenLdap工程,apache配置如下:
./configure --prefix=/usr/local/apache2 --enable-so --enable-authnz-ldap=shared --enable-ldap=shared --enable-mods-shared=all --with-ldap --with-ldap-lib=/usr/local/openldap/lib --with-ldap-include=/usr/local/openldap/include/
apache httpd.conf需要导入模块
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
LoadModule authz_user_module modules/mod_authz_user.so
ldap 在httpd.conf中的配置,在httpd.conf最下方添加
<Location /svn/> DAV svn SVNParentPath /home/svn/ AuthBasicProvider ldap AuthzLDAPAuthoritative on AuthName "ssSubversion Repository" AuthLDAPBindDN "[email protected]" AuthLDAPBindPassword password AuthLDAPURL ldap://192.168.30.25:389/DC=itrus,DC=ac,DC=com?sAMAccountName?sub?(objectClass=*) AuthType Basic # Require valid-user Require valid-user </Location>