说明:
SVN(subversion)的运行方式有两种:
一种是基于Apache的http、https网页访问形式;
还有一种是基于svnserve的独立服务器模式。
SVN的数据存储方式也有两种:一种是在Berkeley DB数据库中存储数据;另一种是使用普通的文件FSFS存储数据。
由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全。
实现目的:
以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器。
具体操作:
操作系统:CentOS 6.x
服务器IP:192.168.21.134

一、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效

二、开启防火墙端口
基于svnserve的独立服务器模式,默认端口为3690
vi /etc/sysconfig/iptables #编辑防火墙配置文件
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出
service iptables restart #最后重启防火墙使配置生效

三、安装编译工具包
yum install apr* autoconf automake bison cloog-ppl compat* cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng* libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool libtool* libgomp libxml2 libxml2-devel libXpm* libtiff libtiff* libX* make mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils ppl telnet t1lib t1lib* nasm nasm* wget zlib-devel zlib unzip perl-ExtUtils-Embed
yum remove apr apr-util subversion subversion-libs #删除系统中原有的svn及依赖包

四、下载svn需要的依赖软件包
说明:安装svn需要的软件包:apr apr-util serf scons openssl
软件包存放目录:/usr/local/src
https://dist.apache.org/repos/dist/release/apr/apr-1.5.2.tar.gz
https://dist.apache.org/repos/dist/release/apr/apr-util-1.5.4.tar.gz
http://prdownloads.sourceforge.net/scons/scons-2.3.5.tar.gz
http://www.openssl.org/source/openssl-1.0.1o.tar.gz
http://fossies.org/linux/www/serf-1.3.8.tar.gz
http://www.apache.org/dist/subversion/subversion-1.8.13.tar.gz
http://www.sqlite.org/snapshot/sqlite-amalgamation-201506201411.zip

五、安装SVN
1、安装apr
cd /usr/local/src #进入软件包存放目录
tar zxvf apr-1.5.2.tar.gz #解压
cd apr-1.5.2 #进入安装目录
./configure --prefix=/usr/local/apr #配置
make #编译
make install #安装

2、安装apr-util
cd /usr/local/src
tar zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --with-apr=/usr/local/apr/bin/apr-1-config
make && make install

3、安装scons
cd /usr/local/src
tar zxvf scons-2.3.5.tar.gz
cd scons-2.3.5
python setup.py install #配置安装

4、安装openssl
cd /usr/local/src
tar zxvf openssl-1.0.1o.tar.gz
cd openssl-1.0.1o
CFLAGS=-fPIC ./config --prefix=/usr/local/openssl enable-shared
make && make install
vi /etc/profile #添加系统环境变量
export PATH=$PATH:/usr/local/openssl/bin
:wq! #保存退出
source /etc/profile #使配置生效
ln -s /usr/local/openssl/include/openssl /usr/include/openssl #添加系统软连接

5、安装serf
cd /usr/local/src
tar zxvf serf-1.3.8.tar.gz
cd serf-1.3.8
scons PREFIX=/usr/local/serf APR=/usr/local/apr/bin/apr-1-config APU=/usr/local/apr/bin/apu-1-config OPENSSL=/usr/local/openssl
scons install
cd /usr/local/serf/lib
cp libserf-1.so* /usr/local/lib/ #拷贝文件到系统目录

6、安装svn
cd /usr/local/src
tar zxvf subversion-1.8.13.tar.gz
cd subversion-1.8.13
mkdir /usr/local/src/subversion-1.8.13/sqlite-amalgamation #创建sqlite-amalgamation目录
cd /usr/local/src
unzip sqlite-amalgamation-201506201411.zip -d /usr/local/src/subversion-1.8.13/sqlite-amalgamation
#解压sqlite-amalgamation软件包到sqlite-amalgamation目录
./configure --prefix=/usr/local/svn --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr/bin/apu-1-config --with-serf=/usr/local/serf --with-openssl=/usr/local/openssl --enable-mod-activation #配置
make #编译
make install #安装
vi /etc/profile #添加系统环境变量,添加到最后一行
export PATH=$PATH:/usr/local/svn/bin
:wq! #保存退出
source /etc/profile #使配置立刻生效
whereis libexpat.so.1 #查找文件安装目录,如下:
libexpat.so: /lib/libexpat.so.0 /usr/local/lib/libexpat.so /usr/local/lib/libexpat.so.1
vi /etc/ld.so.conf #编辑加入libexpat.so.1的目录
/usr/local/lib/
:wq! #保存退出
ldconfig #使配置生效

7、测试安装是否成功:
svn help #查看svn帮助信息
svnserve --version #查看svn版本信息
svn --version

六、配置svn
1、创建svn代码库
mkdir -p /mnt/svn #创建目录
svnadmin create /mnt/svn #创建svn代码库
#上面的命令执行完成之后,会自动建立svn库,在/mnt/svn文件夹含了conf,db,format,hooks,locks,README.txt等文件。
#说明svn代码库创建成功。

2、配置svn代码库
cd /mnt/svn/conf #进入配置文件存放目录
vi /mnt/svn/conf/svnserve.conf #配置全局文件,在最后添加以下代码

[general]
anon-access=none #禁止匿名访问,设置为none。默认为read,参数:read,write,none
auth-access=write #授权用户写权限
password-db=passwd #用户账号密码文件路径,可以写绝对路径
authz-db=authz #访问控制权限文件路径,可以写绝对路径
realm=svn #每个SVN项目的认证命,会在认证提示里显示,建议写项目名称。

:wq! #保存退出
vi /mnt/svn/conf/passwd #配置用户密码

[users]
# harry = harryssecret
# sally = sallyssecret
osyunwei=123456
test=123456
test2=123456

:wq! #保存退出
vi /mnt/svn/conf/authz #配置权限控制文件,设置用户可以访问的目录

[groups]
admin = osyunwei
users = test,test2
[/]
@admin = rw
* = r

:wq! #保存退出
#[/]代表根目录下所有的资源

3、启动svn
svnserve -d -r /mnt/svn --listen-port 3690
ps -ef|grep svn|grep -v grep #查看svn进程
root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /mnt/svn
netstat -ln |grep 3690 #检查svn端口
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN
killall svnserve #关闭svn服务

4、设置svn服务开机启动
vi /etc/rc.d/init.d/svn #编辑,添加以下代码 whereis svnserve

#!/bin/sh
# chkconfig: 2345 85 85
# processname: svn
svn_port=3690
svn_home=/mnt/svn
if [ ! -f "/usr/local/svn/bin/svnserve" ]
then
echo "svnserver startup: cannot start"
exit
fi
case "$1" in
start)
echo "Starting svnserve..."
/usr/local/svn/bin/svnserve -d -r $svn_home --listen-port $svn_port
echo "Successfully!"
;;
stop)
echo "Stoping svnserve..."
killall svnserve
echo "Successfully!"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: svn { start | stop | restart } "
exit 1
esac

:wq! #保存退出
chmod +x /etc/rc.d/init.d/svn #添加执行权限
chkconfig svn on #开启自启动

5、测试svn
svn checkout svn://192.168.21.134/ --username=osyunwei --password=123456 #将文件下载到本地目录
svn update --username=osyunwei --password=123456 #更新上次修改之后的版本库

=================================================
svn提交的时候强制写注释

cd /mnt/svn/hooks
cp pre-commit.tmpl pre-commit
chmod 777  pre-commit

vi pre-commit

#!/bin/sh
REPOS="$1"
TXN="$2" SVNLOOK=/usr/local/bin/svnlook #修改为pre-commit中的提示路径,服务器安装的subversion目录 whereis svnlook LOGMSG=`$SVNLOOK log -t "$TXN" "$REPOS" | grep "[a-zA-Z0-9]" | wc -c`
if [ "$LOGMSG" -lt 5 ];
then
echo -e "注释信息不能为空且不少于5个字!" 1>&2
exit 1
fi
exit 0

=================================================

七、使用客户端连接svn服务器
系统运维  www.osyunwei.com  温馨提醒:系统运维原创内容©版权所有,转载请注明出处及原文链接
TortoiseSVN是Windows平台下SVN(subversion)的一个免费开源的客户端。
TortoiseSVN下载地址:http://tortoisesvn.net/downloads.html
目前最新版本为:TortoiseSVN 1.8.11,区分32位和64位操作系统,并且提供中文汉化包。
如下图所示:


安装完成之后,桌面-右键单击,选择TortoiseSVN-版本库浏览器
如下:

系统运维  www.osyunwei.com  温馨提醒:系统运维原创内容©版权所有,转载请注明出处及原文链接
URL输入:svn://192.168.21.134/


输入用户名:osyunwei
密码:123456
勾选:保存认证
确定

可以看到svn服务器上的内容,右键单击之后,可以选择创建文件夹等操作。
至此,Linux下源码编译安装配置SVN服务器教程完成。

Centos7.X 源码编译安装subversion svn1.8.x的更多相关文章

  1. centos 6.5源码编译安装subversion 1.8.10

    一.简介 CentOS 6.5的yum源可以安装的SVN客户端版本太低了,1.6.11,所以需要升级到1.8.10,而官网有没有找到1.8.10的安装包,只能选择源码编译安装. 二.安装步骤 参考官网 ...

  2. CentOS7.6源码编译安装PHP 7.3.8

    安装步骤 PHP官网下载链接:https://www.php.net/downloads.php 1. 使用wget命令下载源码安装包 wget https://www.php.net/distrib ...

  3. CentOS7.5源码编译安装mysql5.7.29

    #查看系统版本 [root@ctos3 ~]# cat /etc/redhat-release CentOS Linux release (Core) #下载源码包,需要注意的是mysql5.7 编译 ...

  4. centos7源码编译安装Subversion 1.9.5

    svn是Subversion的简称,是一个开放源代码的版本控制系统.svn有两种运行方式:1.独立服务器(svn://xxx.xxx/xxx) 2.借助apache(http://svn.xxx.xx ...

  5. Centos7下源码编译安装python3.6

    测试环境: 操作步骤: 1. 下载Python源码包(python3.6.0) 官网下载地址:https://www.python.org/downloads/ 搜狐下载地址:http://mirro ...

  6. centos7.2 源码编译安装php7.2.4 apache2.4.37 https证书安装

    一.php7.2.11源码安装 1.下载php7.2.11 wget http://cn2.php.net/downloads.php/php-7.2.11.tar.gz#### 2.安装依赖 yum ...

  7. Centos7.5 源码编译安装PHP

    安装依赖 yum -y install epel-release yum -y install  gcc gcc-c++ make pcre pcre-devel zlib zlib-devel op ...

  8. Centos7下源码编译安装与配置redis5.0

    1.下载redis5.0源码包 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 2.检查是否安装过之前的历史版本 rpm -qa|g ...

  9. Centos7.2源码编译安装LA(N)MP

    LAMP环境中php是作为apache的模块安装的,所以安装顺序是php放在apache的后面安装,这样便于安装php时可以在apache的模块目录生成对应的php模块. apache版本:2.4.3 ...

随机推荐

  1. userAgent收集

    UserAgent AppleWebKit,Gecko,Trident,Presto http://www.httpuseragent.org/list/ 谷歌:360? Mozilla/5.0 (W ...

  2. 【USACO 2.2】Preface Numbering (找规律)

    求 1-n 的所有罗马数字表达中,出现过的每个字母的个数. 分别对每个数的罗马表达式计算每个字母个数. 对于十进制的每一位,都是一样的规则,只是代表的字母不同. 于是我们从最后一位往前考虑,当前位由字 ...

  3. 【LintCode】判断一个字符串是否包含另一个字符串的所有字符

    问题描述: 比较两个字符串A和B,确定A中是否包含B中所有的字符.字符串A和B中的字符都是 大写字母. 样例 给出 A = "ABCD" B = "ACD",返 ...

  4. 7款应用最广泛的Linux桌面环境盘点

    转载:http://top.jobbole.com/34823/ 多样性应该是 Linux 最好的特性之一,用户可以不断尝试各种喜欢和新鲜玩法与花样,并从中找出最适合自己的应用.无论你是 Linux ...

  5. MyBatis 一级缓存与二级缓存

    MyBatis一级缓存 MyBatis一级缓存默认开启,一级缓存为Session级别的缓存,在执行以下操作时一级缓存会清空 1.执行session.clearCache(); 2.执行CUD操作 3. ...

  6. BZOJ 4144: [AMPPZ2014]Petrol

    4144: [AMPPZ2014]Petrol Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 457  Solved: 170[Submit][Sta ...

  7. codeforces 613D:Kingdom and its Cities

    Description Meanwhile, the kingdom of K is getting ready for the marriage of the King's daughter. Ho ...

  8. 前端打包/自动化构建工具:fis3

    据说这个可以进行打包,并且可以实现类似/script/test-adsf123.js或者/script/test.js?v=asdf123 先做个记号 参考:http://fis.baidu.com/

  9. Android成长日记-使用ToggleButton实现灯的开关

    案例演示 此案例实现思路:通过ToggleButton控件,ImageView控件实现 ---xml代码: <!-- textOn:true textOff:falase[s1] --> ...

  10. SPOJ GSS4 Can you answer these queries IV

    Time Limit: 500MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Description You are g ...