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

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


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


一、关闭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.6.2.tar.gz

https://dist.apache.org/repos/dist/release/apr/apr-util-1.6.0.tar.gz

https://sourceforge.net/projects/scons/files/scons/2.5.1/scons-2.5.1.tar.gz

https://www.openssl.org/source/openssl-1.1.0f.tar.gz

https://fossies.org/linux/www/serf-1.3.9.tar.gz

http://www.apache.org/dist/subversion/subversion-1.9.7.tar.gz

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


五、安装SVN
1、安装apr
./configure --prefix=/home/programs/apr #配置
make #编译
make install #安装


2、安装apr-util
./configure  --prefix=/home/programs/apr-util --with-apr=/home/programs/apr

make && make install


3、安装scons
cd scons-2.5.1
python setup.py install #配置安装


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


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


6、安装svn
cd /home/download
tar zxvf subversion-1.9.7.tar.gz
mkdir /home/download/subversion-1.9.7/sqlite-amalgamation #创建sqlite-amalgamation目录
unzip sqlite-amalgamation-3200100.zip -d /home/download/subversion-1.9.7/sqlite-amalgamation/
#解压sqlite-amalgamation软件包到sqlite-amalgamation目录
./configure --prefix=/home/programs/svn --with-apr=/home/programs/apr/bin/apr-1-config --with-apr-util=/home/programs/apr-util/bin/apu-1-config --with-serf=/home/programs/serf --with-openssl=/home/programs/openssl --enable-mod-activation #配置
make #编译
make install #安装
vi /etc/profile #添加系统环境变量,添加到最后一行
export PATH=$PATH:/home/programs/svn/bin
:wq! #保存退出
source /etc/profile #使配置立刻生效

# whereis libserf-1.so.1
libserf-1.so: /usr/local/lib/libserf-1.so /usr/local/lib/libserf-1.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 /home/programs/svn/repo #创建目录
svnadmin create /home/programs/svn/repo #创建svn代码库
#上面的命令执行完成之后,会自动建立svn库,在/home/programs/svn/repo文件夹含了conf,db,format,hooks,locks,README.txt等文件。
#说明svn代码库创建成功。


2、配置svn代码库
vi /home/programs/svn/repo/conf/svnserve.conf #配置全局文件,在最后添加以下代码

1
2
3
4
5
6
[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 #配置用户密码

1
2
3
4
5
6
[users]
# harry = harryssecret
# sally = sallyssecret
osyunwei=123456
test=123456
test2=123456

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

1
2
3
4
5
6
[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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/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

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/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

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

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值