SVN(独立安装)-1.9.7 centos 6.5(64位)

说明:

运行方式:

  • 基于Apache的http、https网页访问形式;
  • 基于svnserve的独立服务器模式。

数据存储方式:

  • 在Berkeley DB数据库中存储数据;
  • 使用普通的文件FSFS存储数据。
    由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全.
    以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器。
一、开启防火墙端口
#基于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 
二、关闭SELINUX
vi /etc/selinux/config
#注释掉
#SELINUX=enforcing 
#注释掉
#SELINUXTYPE=targeted 
#增加
SELINUX=disabled 
#保存退出
:wq! 
#使配置立即生效
setenforce 0 
系统约定
  • 软件源代码包存放位置:/usr/local/src
  • 源码包编译安装位置: /usr/local/软件名字
四、下载软件包
  • apr源码包 网站:http://archive.apache.org/dist/apr/apr-1.5.2.tar.gz
  • apr-util源码包 网站:http://archive.apache.org/dist/apr/apr-util-1.5.4.tar.gz
  • sqlite-amalgamation源码包 网站:http://www.sqlite.org/2017/sqlite-amalgamation-3160200.zip
  • scons源码包 网站:https://sourceforge.net/projects/scons/files/scons/2.5.1/scons-2.5.1.tar.gz/download
  • serf源码包 网站:https://www.apache.org/dist/serf/serf-1.3.9.tar.bz2
  • 下载svn 网站:http://www.apache.org/dist/subversion/subversion-1.9.7.tar.gz
五、安装编译工具及库文件(使用yum命令安装)
#!/bin/bash
  
yum install -y apr* autoconf automake bison bzip2 bzip2* 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 libpng* libpng-devel libjpeg* libsepol-devel \
libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libX* \
libtiff libtiff* make mpfr ncurses* ncurses-devel ntp openssl openssl-devel nasm nasm* \
openssl-devel patch pcre-devel perl php-common php-gd \
policycoreutils ppl telnet t1lib t1lib* wget zlib-devel gmp-devel \
unzip perl-ExtUtils-Embed
   
#删除系统中原有的svn及依赖包
yum -y remove apr apr-util subversion subversion-libs 
  
#安装apr
cd /usr/local/src/install_file
mkdir /usr/local/apr
tar zxvf apr-1.5.2.tar.gz -C /usr/local/src
cd /usr/local/src/apr-1.5.2
./configure --prefix=/usr/local/apr
make && make install
  
#安装apr-util
cd /usr/local/src/install_file
mkdir /usr/local/apr-util
tar zxvf apr-util-1.5.4.tar.gz -C /usr/local/src
cd /usr/local/src/apr-util-1.5.4
./configure --prefix=/usr/local/apr-util \
--with-apr=/usr/local/apr
make && make install
  
#安装scons
cd /usr/local/src/install_file
mkdir /usr/local/scons
tar zxvf scons-2.5.1.tar.gz -C /usr/local/src
cd /usr/local/src/scons-2.5.1
python setup.py install --prefix=/usr/local/scons
 
yum -y install openssl-devel
 
#安装serf
cd /usr/local/src/install_file
mkdir /usr/local/serf
tar xvf serf-1.3.9.tar.bz2 -C /usr/local/src
cd /usr/local/src/serf-1.3.9
/usr/local/scons/bin/scons PREFIX=/usr/local/serf APR=/usr/local/apr APU=/usr/local/apr-util
/usr/local/scons/bin/scons install
#拷贝文件到系统目录 
cp /usr/local/serf/lib/libserf-1.so* /usr/local/lib/
 
#安装svn
cd /usr/local/src/install_file
tar zxvf subversion-1.9.7.tar.gz -C /usr/local/src
unzip sqlite-amalgamation-3160200.zip -d /usr/local/src/subversion-1.9.7/
cd /usr/local/src/subversion-1.9.7
mv sqlite-amalgamation-3160200 sqlite-amalgamation
./configure --prefix=/usr/local/svn \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr-util \
--with-serf=/usr/local/serf \
--enable-mod-activation
make && make install
 
cp /usr/local/lib/libserf-1.so.1.3.0 /usr/local/svn/lib/libserf-1.so.1
  
#添加系统环境变量,添加到最后一行
echo "export PATH=$PATH:/usr/local/svn/bin">>/etc/profile
#使配置立刻生效
source /etc/profile

测试安装是否成功:

#查看svn帮助信息
svn help 
#查看svn版本信息
svnserve --version 
#查看svn
svn --version

配置svn

#创建svn代码库
mkdir -p /data/repos #创建目录
#下面的命令执行完成之后,会自动建立svn库,在/home/svn文件夹含了conf,db,format,hooks,locks,README.txt等文件。
#创建svn代码库
svnadmin create /data/repos 
 
#配置svn代码库
#进入配置文件存放目录
cd /data/repos/conf 
#配置全局文件,在最后添加以下代码
vi /data/repos/conf/svnserve.conf 
 
[general]
#禁止匿名访问,设置为none。默认为read,参数:read,write,none
anon-access=none 
#授权用户写权限
auth-access=write 
#用户账号密码文件路径,可以写绝对路径
password-db=passwd 
#访问控制权限文件路径,可以写绝对路径
authz-db=authz 
#每个SVN项目的认证命,会在认证提示里显示,建议写项目名称。
realm=repos 
 
#保存退出
:wq! 
 
#配置用户密码
vi /data/repos/conf/passwd 
 
[users]
# harry = harryssecret
# sally = sallyssecret
test=123456
 
#保存退出
:wq! 
 
#配置权限控制文件,设置用户可以访问的目录
vi /data/repos/conf/authz 
 
[groups]
admin = osyunwei
users = test,test2
#[/]代表根目录下所有的资源
[/]
@admin = rw
* = r
 
#保存退出
:wq! 


#启动svn
svnserve -d -r /home/svn --listen-port 3690
 
#查看svn进程
ps -ef|grep svn|grep -v grep 
 
#检查svn端口
netstat -ln |grep 3690 
 
#关闭svn服务
killall svnserve 
 
#设置svn服务开机启动
vi /etc/init.d/svn #编辑,添加以下代码

svn文件内容如下

#!/bin/sh
# chkconfig: 2345 85 85
# processname: svn
svn_port=3690
svn_home=/data/repos
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

开启自启动

#添加执行权限
chmod +x /etc/init.d/svn 
#开启自启动
chkconfig svn on 
service svn start

测试svn

#测试svn
#将文件下载到本地目录
svn://192.168.21.134/
username  osyunwei
password  123456 

实现svn代码仓库与web线上同步
svn代码仓库目录/data/repos/
web线上目录/data/www

#服务器操作系统:CentOS
#服务器IP:192.168.21.134
#SVN安装路径:/usr/local/svn
#SVN项目路径:/data/repos
#SVN登录账号:test
#SVN登录密码:123456
#Web站点根目录:/data/www
 
#首先checkout一份
svn co svn://192.168.1.149/ /data/www
 
#当svn项目中有任何修改更新时,系统会自动实时从svn中检出文件并同步到Web站点根目录
#使用SVN中post-commit实现自动实时从svn中检出文件并同步到Web站点根目录
cd /data/repos/hooks
#编辑,添加以下代码
vi /data/repos/hooks/post-commit 
 
#!/bin/sh
REPOS="$1"
REV="$2"
SVN_PATH=/usr/local/svn/bin
WEB_PATH=/data/www
SVN_USER=test
SVN_PASS=123456
WEB_USER=www
LOG_PATH=/tmp/svn.log
echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
$SVN_PATH/svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >> $LOG_PATH
chown $WEB_USER.$WEB_USER -R $WEB_PATH
 
#保存退出
:wq! 
 
--------------------------------
#以下在nginx配置时有添加
groupadd www
useradd -g www www -s /bin/false
--------------------------------
 
#设置脚本所属用户组,www为web服务运行账户和组
chown www:www /data/repos/hooks/post-commit 
#添加脚本执行权限
chmod +x /data/repos/hooks/post-commit
 
#说明:
    #执行此程序的用户
    whoami 
    #svn项目绝对路径值
    REPOS="$1" 
    #最新版本号
    REV="$2"  
    #不保存账户认证信息
    --no-auth-cache 

猜你喜欢

转载自www.cnblogs.com/fuqian/p/10706270.html