jlo86 发表于 2016-1-20 09:41:07

subversion1.6.12+httpd2.2.16编译安装并整合

一、关于mod_dav_svn模块
由于Subversion需要版本化的控制,因此标准的HTTP协议不能满足需求。要让Apache与Subversion协同工作,就要使用WebDAV(Web-based Distributed Authoring and Versiong)Web分布式创作和版本控制协议。WebDAV是HTTP 1.1的扩展,关于WebDAV的规范和工作原理,可以参考IETF RFC 2518。
    mod_dav_san模块就是作为Subversion与Apache之间的接口,通过它,Apache就可以访问版本库,并且可以让客户端也使用HTTP的扩展协议WebDAV/DeltaV进行访问。
实验环境:CentOS6.5-x86-64-minimal
所需软件包:
apr-1.2.12.tar.gz
apr-util-1.2.12.tar.gz
httpd-2.2.16.tar.gz
neon-0.30.1.tar.gz
subversion-1.6.12.tar.gz
subversion-deps-1.6.12.tar.gz

本次实验关闭防火墙及selinux、yum安装过Development tools包

1、编译安装apr、apr-util
# pwd
/usr/local/src
tar zxvf apr-1.2.12.tar.gz
cd apr-1.2.12
# ./configure
# make && make install
# cd ..
# tar zxvf apr-util-1.2.12.tar.gz
# cd apr-util-1.2.12
# ./configure --with-apr=/usr/local/apr
# make && make install
# cd ..
tar zxvf httpd-2.2.16.tar.gz
2、编译安装httpd
cd httpd-2.2.16
# ./configure --prefix=/usr/local/apache --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --enable-so --enable-dav --enable-mainta--enable-iner-mode --enable-rewrite
# make && make install
# ps aux |grep httpd
# /usr/local/apache/bin/apachectl start
3、编译安装subversion
# cd ..
# tar zxvf subversion-1.6.12.tar.gz
# tar zxvf subversion-deps-1.6.12.tar.gz //两个包解压到一个目录
# cd subversion-1.6.12
# ./configure --prefix=/usr/local/svn --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-ssl --with-zlib=/usr/share/doc/zlib-1.2.3 --enable-maintainer-mode
1> configure: error: could not find library containing RSA_new
解决方法:   #yum install openssl-devel
2> configure: error: no XML parser was found: expat or libxml 2.x required
解决方法:   #   yum install expat-devel
# make && make install
3> make的时候出现 undefined reference to `SSL_SESSION_cmp’
安装subversion.1.6.11时,如果对应的neon版本为 neon-0.25.5.tar.gz,就会出现这个错误,根据网上的资料得知,在neon的高版本上已经修复这个错误,于是到其官方网站http://www.webdav.org/neon/下载最新版的neon-0.29.3,将其解压到subversion的源码目录中,并改名为neon,再次编译,成功!
# /usr/local/svn/bin/svnserve --version

# /usr/local/apache/bin/apachectl -M

# cd /usr/local/svn/bin
4、建立版本仓库
# mkdir /svn    //为了好区分目录、创建了一个svn的目录
# svnadmin create /svn/repos    //创建一个仓库名字为repos
# ll /svn/repos/   //如果多了一些文件则说明版本库已经创建好

导入项目文件到版本库
#把路径/test下的测试项目文件导入到你创建的/svn/repos仓库中去,提交后的修订版为1
#建立/test/1到5个测试文件
# mkdir /test
# touch /test/1 2 3 4 5
# svn import /test/ file:///svn/repos -m "testzhushi" 图44

5、创建用户账号并分配权限
#创建svn账户user1 -c 表示创建文件 第二个用户取消-c 否则覆盖之前的用户 文件名自定义
# /usr/local/apache/bin/htpasswd -c /svn/passwd user1
# /usr/local/apache/bin/htpasswd/svn/passwd user2

#创建svn权限配置文件 文件名自定义
# vim /svn/authz
----------------------------------------------------------

admin = user1,user2
user = user3,user4

[/]
* = rw    //全部用户在仓库的根目录具有读写权限
@admin = rw    //admin组在仓库的根目录具有读写权限

    //定义仓库下repos目录的权限
user3 = rw    user3具有读写权限
@user = w
----------------------------------------------------------
6、配置apache支持svn
# vim /usr/local/apache/conf/httpd.conf
----------------------------------------------------------
<Location /repos>    //指定访问svn仓库的路径
      DAV svn    //定义标签
      SVNPath /svn/repos    //仓库的真实路径
      AuthType Basic    //认证方式为基本认证
      AuthName "Hello welcome to here"    //访问提示语
      AuthUserFile /svn/passwd    //用户文件位置
      AuthzSVNAccessFile /svn/authz    //权限文件位置
      Require valid-user    //设置需要认证才能访问
</Location>
----------------------------------------------------------
7、为svn目录分配适合的权限、启动并测试
#源码编译的httpd默认用户为daemon、yum的默认为apache、为了安全可以自行更改
# chown -R daemon:daemon /svn/
# chmod -R 700 /svn
#/usr/local/svn/bin/svnserve -d -r /svn/repos
#/usr/local/apache/bin/apachetcl restart

# ps aux |grep svn
root   1291740.00.0 138860   632 ?      Ss   04:54   0:00 /usr/local/svn/bin/svnserve -d -r /svn/repos/
root   1292120.00.0 103248   884 pts/1    S+   05:14   0:00 grep svn





页: [1]
查看完整版本: subversion1.6.12+httpd2.2.16编译安装并整合