源码编译安装SVN

一,下载源码包

yum install gcc gcc-++ make pcre-develzlib-devel openssl openssl-devel pcre pcre-devel wget zip unzip -y

wget http://downloads.sourceforge.net/project/scons/scons/2.3.0/scons-2.3.0-1.noarch.rpm

wget http://apache.fayea.com/apache-mirror/subversion/subversion-1.8.9.tar.gz

wget http://mirror.bit.edu.cn/apache//apr/apr-1.5.1.tar.gz

wget http://mirror.bit.edu.cn/apache//apr/apr-util-1.5.3.tar.gz

wget http://cznic.dl.sourceforge.net/project/serf.mirror/serf-1.3.3.zip

wget http://www.sqlite.org/2014/sqlite-autoconf-3080500.tar.gz

wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.9.tar.gz

二,编译安装

安装scons
# rpm -ivh scons-2.3.0-1.noarch.rpm

编译apr和apr-util
# tar xf apr-1.5.1.tar.gz

# ./configure --prefix=/usr/local/apr
报错信息:
rm: cannot remove `libtoolT': No such file or directory
解决:注释下面一行,本行在30145
#    $RM "$cfgfile"

# make && make install

# tar xf apr-util-1.5.3.tar.gz

# cd apr-util-1.5.3

# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

# make && make install

编译sqlite(默认路径就行)

# tar xf sqlite-autoconf-3080500.tar.gz

# cd sqlite-autoconf-3080500

# ./configure

# make && make install

编译serf
# unzip serf-1.3.3.zip

# cd serf-1.3.3

# scons APR=/usr/local/apr APU=/usr/local/apr-util OPENSSL=/usr/bin 
PREFIX=/usr/local/serf

# scons install

编译httpd
# tar xf httpd-2.4.9.tar.gz

# cd httpd-2.4.9

# ./configure --prefix=/usr/local/apache --enable-dav --enable-so-nable-rewrite --enable-maintainer-mode --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

# make && make install

# echo "PATH=$PATH/:/usr/local/apache/bin" >> /etc/profile

# source /etc/profile

编译subversion
# tar xf subversion-1.8.9.tar.gz

# cd subversion-1.8.9

# ./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-openssl --with-serf=/usr/local/serf

# make && make install

# cp serf-1.3.3/libserf-1.so.1 /usr/local/subversion/lib/

# echo "PATH=$PATH/:/usr/local/subversion/bin" >>/etc/profile

# source /etc/profile

三,修改配置

SVN配置

创建版本库(注意:如果这里不写--pre-1.6-compatible,更新svn的时候会报post commit FS processing had error: Couldn’t open rep-cache database)
# svnadmin create --pre-1.6-compatible /usr/svn/repo

创建项目名称
# mkdir -p /tmp/repo/test{1,2}

导入项目名称
# svn import /tmp/repo file:///usr/svn/repo -m "test"

查看项目名称
# svn list file:///usr/svn/repo

创建访问svn的用户密码
# vim /usr/svn/repo/conf/passwd
test1 = test1_pwd
test2 = test2_pwd

创建用户认证及访问项目的权限
# vim /usr/svn/repo/conf/authz
[group]
g1 = test1
g2 = test2

[repo:/]
g1 = rw
g2 = r
* =

[repo:/test1]
g1 = rw
g2 = r
* =

[repo:/test2]
g1 = r
g2 = rw
* =

创建脚本对passwd文件生成apache用户认证的文件
# vim /usr/svn/repo/conf/PtoWP.pl
#!/usr/bin/perl

use warnings;
use strict;

#open the svn passwd file
open (FILE, "passwd") or die ("Cannot open the passwd file!!!\n");

#clear the apache passwd file
open (OUT_FILE, ">webpasswd") or die ("Cannot open the webpasswd file!!!\n");
close (OUT_FILE);

#begin
foreach (<FILE>) {
if($_ =~ m/^[^#].*=/) {
$_ =~ s/=//;
`htpasswd -b webpasswd $_`;
}
}

# chmod +x /usr/svn/repo/conf/PtoWP.pl

# /usr/svn/repo/conf/PtoWP.pl
执行脚本后可以生成名为webpasswd文件

修改配置文件
# vim /usr/svn/repo/conf/svnserve.conf
anon-access = none
auth-access = write
password-db = /usr/svn/repo/conf/passwd
authz-db = /usr/svn/repo/conf/authz

创建用户
# useradd svn

设置目录权限
# chown svn. /usr/svn -R

启动服务
# svnserve -d -r /usr/svn



Apache配置

so文件复制
# cp /usr/local/subversion/libexec/mod_authz_svn.so /usr/local/apache/modules/mod_authz_svn.so

# cp /usr/local/subversion/libexec/mod_dav_svn.so /usr/local/apache/modules/mod_dav_svn.so

配置文件修改
# vi /usr/local/apache/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
顺序不能搞错,不然会报错

User svn
Group svn

#svn
<Location /svn/>
DAV svn
SVNParentPath /usr/svn
AuthType Basic
AuthName "Subversion repository"
#密码存储文件
AuthUserFile /usr/svn/repo/conf/webpasswd
Require valid-user
#用户访问目录的权限文件
AuthzSVNAccessFile /usr/svn/repo/conf/authz
</Location>

启动服务
# apachectl -t

# apachectl -k start

测试

http://IP/svn/repo/test1


你可能感兴趣的:(SVN,源码编译)