ubuntu下搭建 apache + subversion 服务器
一、准备好安装包:
①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.gzcd apr-util-1.4.1.tar.gz./configure --with-apr=/usr/local/aprmakemake install
?3、安装 apache
tar zxvf httpd-2.2.22.tar.gzcd 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/aprmakemake install
?4、安装subversion
tar zxvf subversion-1.6.17.tar.gztar 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 makemake 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/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 "utsadmin@itrus.ac.com" 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>