说明:
SVN(subversion)的运行方式有两种:
一种是基于Apache的http、https网页访问形式;
还有一种是基于svnserve的独立服务器模式。
SVN的数据存储方式也有两种:一种是在Berkeley DB数据库中存储数据;另一种是使用普通的文件FSFS存储数据。
由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全。
实现目的:
以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器。
一、关闭SELINUX
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
二、开启防火墙端口
基于svnserve的独立服务器模式,默认端口为3690
vi /etc/sysconfig/iptables #编辑防火墙配置文件
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
:wq! #保存退出
service iptables restart #最后重启防火墙使配置生效
三、安装编译工具包
yum install aprautoconf automake bison cloog-ppl compat cpp curl curl-devel fontconfig fontconfig-devel freetype freetypefreetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libjpeglibsepol-devel libselinux-devel libstdc++-devel libtool libtool libgomp libxml2 libxml2-devel libXpmlibtiff libtiff libXmake mpfr ncurses ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils ppl telnet t1lib t1libnasm nasm wget zlib-devel zlib unzip perl-ExtUtils-Embed
yum remove apr apr-util subversion subversion-libs #删除系统中原有的svn及依赖包
五、安装SVN
1、安装apr
cd /home/admin/software/svn #进入软件包存放目录
tar zxvf apr-1.6.3.tar.gz #解压
cd apr-1.6.3 #进入安装目录
./configure --prefix=/home/admin/project/apr #配置
make #编译
make install #安装
2、安装apr-util
cd /home/admin/software/svn
tar zxvf apr-util-1.6.tar.gz
cd apr-util-1.6.1
./configure --with-apr=/home/admin/project/apr/bin/apr-1-config
make
make install
3、安装scons
cd /home/admin/software/svn
tar zxvf scons-3.0.0.tar.gz
cd scons-3.0.0
python setup.py install #配置安装
4、安装openssl
cd /home/admin/software/svn
tar zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1
CFLAGS=-fPIC ./config --prefix=/home/admin/project/openssl enable-shared
make
make install
vi /etc/profile #添加系统环境变量
export PATH=$PATH:/home/admin/project/openssl/bin
:wq! #保存退出
source /etc/profile #使配置生效
ln -s /home/admin/project/openssl/include/openssl /usr/include/openssl #添加系统软连接
5、安装serf
cd /home/admin/software/svn
tar zxvf serf-1.3.9.tar.gz
cd serf-1.3.9
scons prefix=/home/admin/project/serf apr=/home/admin/projectapr/bin/apr-1-config apr-util=/home/admin/projectapr/bin/apu-1-config openssl=/home/admin/project/openssl
scons install
cd /home/admin/project/serf/lib
cp libserf-1.so* /home/admin/project/lib/ #拷贝文件到系统目录
6、安装svn
cd /home/admin/software/svn
tar zxvf subversion-1.10.0.tar.gz
cd subversion-1.10.0
mkdir /home/admin/software/svn/subversion-1.8.13/sqlite-amalgamation #创建sqlite-amalgamation目录
cd /home/admin/software/svn
unzip sqlite-amalgamation-3240000.zip -d /home/admin/software/svn/subversion-1.10.0/sqlite-amalgamation
#解压sqlite-amalgamation软件包到sqlite-amalgamation目录
./configure --prefix=/home/admin/project/svn --with-apr=/home/admin/project/apr/bin/apr-1-config --with-apr-util=/home/admin/project/apr/bin/apu-1-config --with-serf=/home/admin/project/serf --with-openssl=/home/admin/project/openssl --with-apxs=/home/admin/project/apache2/bin/apxs --with-lz4=internal --with-utf8proc=internal --with-expat=builtin --without-berkeley-db --enable-mod-activation #配置
make #编译
make install #安装
vi /etc/profile #添加系统环境变量,添加到最后一行
export PATH=$PATH:/home/admin/project/svn/bin
:wq! #保存退出
source /etc/profile #使配置立刻生效
whereis libexpat.so.1 #查找文件安装目录,如下:
libexpat.so: /lib/libexpat.so.0 /home/admin/projectlib/libexpat.so /home/admin/projectlib/libexpat.so.1
vi /etc/ld.so.conf #编辑加入libexpat.so.1的目录
/home/admin/project/lib/
:wq! #保存退出
ldconfig #使配置生效
7、测试安装是否成功:
svn help #查看svn帮助信息
svnserve --version #查看svn版本信息
svn --version
六、配置svn
1、创建svn代码库
mkdir -p /home/svn #创建目录
svnadmin create /home/svn #创建svn代码库
#上面的命令执行完成之后,会自动建立svn库,在/home/svn文件夹含了conf,db,format,hooks,locks,README.txt等文件。
#说明svn代码库创建成功。
2、配置svn代码库
cd /home/svn/conf #进入配置文件存放目录
vi /home/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 /home/svn/conf/passwd #配置用户密码
[users]
#harry = harryssecret
#sally = sallyssecret
osyunwei=123456
test=123456
test2=123456
:wq! #保存退出
vi /home/svn/conf/authz #配置权限控制文件,设置用户可以访问的目录
[groups]
admin = test
users = test,test2
[/]
@admin = rw
= r
:wq! #保存退出
#[/]代表根目录下所有的资源
3、启动svn
svnserve -d -r /home/svn --listen-port 3690
ps -ef|grep svn|grep -v grep #查看svn进程
root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /home/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/init.d/svn #编辑,添加以下代码
#!/bin/sh
#chkconfig: 2345 85 85
#processname: svn
svn_port=3690
svn_home=/home/svn
if [ ! -f "/home/admin/project/svn/bin/svnserve" ]
then
echo "svnserver startup: cannot start"
exit
fi
case "$1" in
start)
echo "Starting svnserve..."
/home/admin/project/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/init.d/svn #添加执行权限
chkconfig svn on #开启自启动
5、测试svn
svn checkout svn://127.0.0.1/ --username=test --password=123456 #将文件下载到本地目录
svn update --username=test --password=123456 #更新上次修改之后的版本库