svn是Subversion的简称,是一个开放源代码的版本控制系统。
svn有两种运行方式:1、独立服务器(svn://xxx.xxx/xxx) 2、借助apache(http://svn.xxx.xxx/xxx)
svn存储版本数据也有两种方式:1、BDB(事务安全型表类型) 2、FSFS(一种不需要数据库存储系统)
因为BDB方式在服务中断时,可能锁住数据,这里我们选择独立服务器和FSFS方式安装svn。

一、下载安装Subversion必要的源码文件

安装svn需要apr,apr-util,zlib,serf,openssl的支持,serf的编译安装又需要scons
所以这里我们用yum来安装zlib和openssl,源码编译apr,apr-util,serf,scons

subversion源码包

http://mirrors.cnnic.cn/apache/subversion/subversion-1.9.5.tar.gz

apr源码包

http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz

apr-util源码包

http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.gz

serf源码包

https://www.apache.org/dist/serf/serf-1.3.9.tar.bz2

scons源码包

https://sourceforge.net/projects/scons/files/scons/2.5.1/

sqlite-amalgamation源码包

http://www.sqlite.org/2017/sqlite-amalgamation-3160200.zip

二、安装必要依赖

> yum -y install zlib zlib-devel openssl openssl-devel

三、安装apr

> tar xf apr-1.5.2.tar.gz
> cd apr-1.5.2
> ./configure --prefix=/data/apr
> make && make install

四、安装apr-util

> tar xf apr-util-1.5.4.tar.gz
> cd apr-util-1.5.4
> ./configure --prefix=/data/apr-util \
--with-apr=/data/apr
> make && make install

五、安装scons

> yum -y install python
> tar xf scons-2.5.1.tar.gz
> cd scons-2.5.1
> python setup.py install --prefix=/data/scons

六、安装serf

> tar xf serf-1.3.9.tar.bz2
> cd serf-1.3.9
> /data/scons/bin/scons PREFIX=/data/serf APR=/data/apr APU=/data/apr-util
> /data/scons/bin/scons install
> cp /data/serf/lib/libserf-1.so* /usr/local/lib/

七、安装svn

> tar xf subversion-1.9.5.tar.gz
> mkdir /data/subversion-1.9.5/sqlite-amalgamation
> unzip sqlite-amalgamation-3160200.zip -d /data/subversion-1.9.5/
> cd subversion-1.9.5
> mv sqlite-amalgamation-3160200 sqlite-amalgamation
> ./configure --prefix=/data/svn \
--with-apr=/data/apr \
--with-apr-util=/data/apr-util \
--with-serf=/data/serf \
--enable-mod-activation
> make && make install

八、添加环境变量

> echo "export PATH=/data/svn/bin:$PATH" >> /etc/profile
> source /etc/profile

九、查看信息

> svn help
> svnserve --version
> svn --version

如果出现如下信息

svn: error while loading shared libraries: libserf-1.so.1: cannot open shared object file: No such file or director
> cd /etc/ld.so.conf.d/
> vi user-libs.conf
把我们拷贝serf的文件的目录加上
/usr/local/lib
> ldconfig

十、创建svn仓库

> mkdir -p /data/repos
> svnadmin create /data/repos
> cd /data/repos
> ll

目录结构如下:

drwxr-xr-x. 2 root root   72 1月  15 06:58 conf
drwxr-sr-x. 6 root root 4096 1月 15 06:58 db
-r--r--r--. 1 root root 2 1月 15 06:58 format
drwxr-xr-x. 2 root root 4096 1月 15 06:58 hooks
drwxr-xr-x. 2 root root 39 1月 15 06:58 locks
-rw-r--r--. 1 root root 246 1月 15 06:58 README.txt

十一、svn配置路径

> cd /data/repos/conf
> ll

文件如下:

权限配置文件 authz
用户名口令文件 passwd
svn服务配置文件 svnserve.conf
> vi authz
# /表示仓库根目录,用户名=权限
[/]
test = rw
> vi passwd
[users]
test = 123456
> vi svnserve.conf
[general]
#禁止匿名访问
anon-access = none
#授权用户写权限
auth-access = write
#用户密码文件
password-db = passwd
#授权登录文件
authz-db = authz
#每个svn项目认证名,建议写项目名
realm = repos

十二、启动关闭svn服务
一台机器可以启动多个svn服务,需修改不同端口号。

> svnserve -d -r /data/repos --listen-port 3690
> ps -ef|grep svn
> netstat -ln|grep 3690
> killall svnserve

十三、设置svn服务开机启动
方法一:
修改/etc/rc.d/rc.local文件,添加如下命令

/data/svn/bin/svnserve -d -r /data/repos --listen-port 3690

方法二:
在/etc/init.d/目录下创建svn文件并设置权限755,代码如下

#!/bin/bash
# centos下可以用如下命令管理svn: service svn start(restart/stop)
SVN_HOME=/data/repos
if [ ! -f "/data/svn/bin/svnserve" ]
then
echo "svnserver startup: cannot start"
exit
fi
case "$1" in
start)
echo "Starting svnserve..."
/data/svn/bin/svnserve -d --listen-port 3690 -r $SVN_HOME
echo "Finished!"
;;
stop)
echo "Stoping svnserve..."
killall svnserve
echo "Finished!"
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: svn { start | stop | restart } "
exit 1
esac

十四、实现svn代码仓库与web线上同步

svn代码仓库目录/data/repos/www1
web线上目录/data/wwwroot/www1

1、首先checkout一份

> svn co svn://192.168.1.233/www1 /data/wwwroot/www1

2、修改目录权限

> chmod -R 766 /data/www/www1

3、建立同步脚本

> cd /data/repos/www1/hooks
> cp post-commit.tmpl post-commit
> vi post-commit

添加如下代码

export LANG=en_US.UTF-8
SVN=/data/svn/bin/svn
WEB=/data/wwwroot/www1
$SVN update $WEB --username test --password 123456
chown -R 766 $WEB
> chmod 755 post-commit

centos7源码编译安装Subversion 1.9.5的更多相关文章

  1. Centos7源码编译安装PHP7.2(生产环境)

    安装PHP依赖包,否则在编译的过程中可能会出现各种报错 # Centos 安装epel-release源并将系统包更新到最新版本 $ yum install epel-release-y $ yum ...

  2. centos7源码编译安装lamp/lnmp

    centos7源码编译安装lamp/lnmp 进程:是包工头(相当于是个门,只管开门关门,不管门内的事儿) 线程:是各种工种(cpu调度的是线程) 进程 是一件事情, 线程 是 同一个时间范围内 同时 ...

  3. Centos7.X 源码编译安装subversion svn1.8.x

    说明:SVN(subversion)的运行方式有两种:一种是基于Apache的http.https网页访问形式:还有一种是基于svnserve的独立服务器模式.SVN的数据存储方式也有两种:一种是在B ...

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

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

  5. centos7 源码编译安装TensorFlow CPU 版本

    一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. ...

  6. Centos7源码编译安装mysql8

    前面介绍了很多关于mysql的文章,下面主要介绍一下mysql8的源码编译安装 一 基本环境 [root@CentOS-7-x86-64-Minimal-1810 ~]# cd /usr/local/ ...

  7. CentOS7 源码编译安装Nginx

    源码编译安装nginx     1.下载nginx源码包(这里以nginx-1.18.0为例) wget http://nginx.org/download/nginx-1.18.0.tar.gz 2 ...

  8. centos7 源码编译安装 php

    准备工作 下载 PHP 源码包并解压 $ wget https://www.php.net/distributions/php-7.2.19.tar.bz2 $ yum -y install bzip ...

  9. centos7 源码编译安装 nginx

    安装步骤 下载 nginx 源码包 官网 $ wget http://nginx.org/download/nginx-1.16.0.tar.gz 解压 nginx 压缩包 $ tar -zxvf n ...

随机推荐

  1. GPU对数据的操作不可累加

    我想当然的认为GPU处理数据时可以共同访问内存,所以对数据的操作是累加的. 事实证明:虽然GPU多个核可以访问同一块内存,但彼此之间没有依赖关系,它们对这块内存的作用无法累加. 先看代码: #incl ...

  2. 【转载】51单片机data,bdata,idata,xdata使用注意事项

    "51单片机编程在不同内存空间data xdata bdata定义变量的注意事项": 关键词:51 单片机 编程 不同 内存空间 data xdatabdata 定义 变量 注意事 ...

  3. 有向图的强联通tarjan算法(判断是否为强联通模板)(hdu1269)

    hdu1269 迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tot ...

  4. 利用javascript判断文件是否存在

    1 判断本地文件是否存在 var fso,s=filespec; // filespec="C:/path/myfile.txt" fso=new ActiveXObject(&q ...

  5. HDU 5512 - Pagodas - [gcd解决博弈]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5512 Time Limit: 2000/1000 MS (Java/Others) Mem ...

  6. 11.20 HTML及CSS

    <div>用于分组HTML元素的块级元素HTML表单,用于收集不同类型的用户输入<input type='radio'>:定义了表单的单选框按钮<input type=' ...

  7. version `GLIBC_2.14' not found问题

    先对比下源码编译.RPM 包和 YUM 三种安装方法的优劣: 源码编译:可以自行指定编译参数,自由度高,略显麻烦.但是如果不安装最新版本,BUGs 和 CVEs 是不会被修复的,和咸鱼没什么差别: R ...

  8. 新购买的vps应该做的几件事情

    1. 修改root密码      passwd   root 2.新建用户     useradd  vinentguo 3.配置免密码登陆 .使用新建用户登陆vps. mkdir ~/.ssh/ch ...

  9. 转:数据库范式(1NF 2NF 3NF BCNF)

    数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给 ...

  10. 浅谈CSRF攻击方式(转)

    add by zhj: 在看Django开发的应用时,看到了CSRF,然后搜到了这篇文章,讲的不错.其实CSRF 攻击也蛮简单的.当你登陆网站A后,会在本地存有cookie,在cookie没有过期的情 ...