当前位置: 首页 > news >正文

centos7源码编译安装Subversion 1.9.5

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

 

转载于:https://www.cnblogs.com/jkko123/p/6358461.html

相关文章:

  • 数据分析入门--https://cn.udacity.com/
  • 基于组件的设计工作流与界面抽象
  • HDU 3783 ZOJ
  • Java 9进入第一轮问题修复阶段
  • N的倍数
  • shell脚本,根据字符串获取行号的
  • Linux script(录制) 命令
  • Golang升级到1.7后,之前正确的函数出现错误,分析原因及解决办法
  • 更新image的方法
  • Docker学习笔记 - Docker容器与外部网络的连接
  • proxy是什么
  • RIP路由配置实例V2
  • 前端开源项目周报0207
  • Codeforces Round #396 (Div. 2) D. Mahmoud and a Dictionary 并查集
  • 为你的网络传输加把锁(OpenSSL)
  • __proto__ 和 prototype的关系
  • css属性的继承、初识值、计算值、当前值、应用值
  • java正则表式的使用
  • Laravel核心解读--Facades
  • vue的全局变量和全局拦截请求器
  • 两列自适应布局方案整理
  • 三栏布局总结
  • 我的业余项目总结
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • gunicorn工作原理
  • hi-nginx-1.3.4编译安装
  • 阿里云重庆大学大数据训练营落地分享
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (算法)Travel Information Center
  • (转)树状数组
  • (转载)虚函数剖析
  • .gitignore文件---让git自动忽略指定文件
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net core 依赖注入的基本用发
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET建议使用的大小写命名原则
  • .net中应用SQL缓存(实例使用)
  • ??javascript里的变量问题
  • @SentinelResource详解
  • @在php中起什么作用?
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • []指针
  • [《百万宝贝》观后]To be or not to be?
  • [Android]常见的数据传递方式
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [CDOJ 1343] 卿学姐失恋了
  • [Git 1]基本操作与协同开发
  • [hdu 2896] 病毒侵袭 [ac自动机][病毒特征码匹配]
  • [IE编程] IE 是如何决定Accept-Language 属性的
  • [Jquery] 实现温度计动画效果
  • [jQuery]使用jQuery.Validate进行客户端验证(中级篇-上)——不使用微软验证控件的理由...
  • [Linux]进程间通信(进程间通信介绍 | 匿名管道 | 命名管道)
  • [NBIoT]NBIoT相关知识