说明:

运行方式:

  • 基于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/软件名字
四、下载软件包
五、安装编译工具及库文件(使用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

SVN(独立安装)-1.9.7 centos 6.5(64位)的更多相关文章

  1. 使用centos 5.x 64位系统安装astgo 2014 v7.3教程(含全套安装文件)

    版本特色: 全自动安装 安装过程中不用频繁输入yes或回车 自带完整号码归属地数据库 自带触屏版WAP ·首先确定你需要使用astgo 2014 7.0还是7.3: astgo 2014 v 7.0 ...

  2. CentOS 6.3 64位下MySQL5.1.54源码安装配置详解

    安装环境:CentOS 6.3 64位 一:先安装依赖包(不然配置的时候会报错的!) yum -y install ncurses* libtermcap* 新建mysql用户 [root@clien ...

  3. CentOS 6.5 64位下安装Redis3.0.2的具体流程

    系统环境:CentOS 6.5 64位 安装方式:编译安装 防火墙:开启 Redis版本:Redis 3.0.2 一.环境准备 1.安装 gcc gcc-c++ [root@iZ94ebgv853Z ...

  4. linux CentOs 7.4 64位 系统下 nuxt部署 、nginx 安装、node环境及软连接,pm2软连接

    一.nginx安装 1.安装依赖包 //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 2 ...

  5. 在 CentOS 7.5 64位上使用 yum 安装 MySQL 8.0

    前段时间在 CentOS 7.5 64位上安装 MySQL 8.0.查了些资料,在这里记录一下详细的安装和设置步骤. 一.安装 使用yum安装MySQL之前需要先下载对应的.rpm文件,下载方法: 去 ...

  6. VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群

    1. 下载CentOS 7官方minimal镜像 2. 安装VituralBox(Windows 10 64位) 3. 安装Git for windows(Windows 10 64位) 4. 安装V ...

  7. 完美解决MSSQL安装问题“Polybase要求安装Oracle JRE 7更新51(64位)”方案

    阅文时长 | 0.72分钟 字数统计 | 1164.8字符 主要内容 | 1.问题起因及解决方案 2.安装jdk-8u241-windows-x64 3.取消PolyBase查询服务 4.四.声明与参 ...

  8. CentOS X64上64位Oracle 11gR2 静默安装

    CentOS 6.2 X64上64位Oracle 11gR2 静默安装 www.linuxidc.com/Linux/2012-03/56606p4.htm HP-UX静默安装oracle11g过程 ...

  9. Centos 6.5(64位) vim 8.0 安装

    转自:https://blog.csdn.net/sdoyuxuan/article/details/78825912 1 先得安装nurses库 yum list | grep "ncur ...

随机推荐

  1. 【Leetcode】【Easy】Isomorphic Strings

    Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...

  2. SRAM(静态)存储器芯片的读/写周期

    一. 要保证正确地读/写,必须注意CPU时序与存储器读/写周期的配合.一般存储器芯片手册都会给出芯片读/写周期的时序图. Intel 2114芯片的读.写周期时序如图所示. 二. 读周期 读操作时,必 ...

  3. python 获取当前目录,上级目录,上上级目录

    import os print '***获取当前目录***' print os.getcwd() print os.path.abspath(os.path.dirname(__file__)) pr ...

  4. 利用python查看电脑系统信息

    #查看python默认编码格式 >>> import sys >>> print sys.getdefaultencoding() #python 2.x 默认编码 ...

  5. 内网渗透之IPC,远程执行

    开启服务 net start Schedule net start wmiApSrv 关闭防火墙 net stop sharedaccess net use \\目标IP\ipc$ "&qu ...

  6. LeetCode: Word Ladder II [127]

    [题目] Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) ...

  7. angularjs select下拉搜索框

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Guava包学习---I/O

    Guava的I/O平时使用不太多,目前项目原因导致基本上只有在自己写一些文本处理小工具才用得到.但是I/O始终是程序猿最常遇到的需求和面试必问的知识点之一.同时Guava的I/O主要面向是时JDK5和 ...

  9. 通过iframe标签绕过csp

    iframe.php代码如下: allow-popups开启时,window.open就可以打开新的窗口. 看csp规则,默认是在当前域内,如果这是一个ctf题的话,就很简单了,window.loca ...

  10. Kali-linux免杀Payload生成工具Veil

    Veil是一款利用Metasploit框架生成相兼容的Payload工具,并且在大多数网络环境中能绕过常见的杀毒软件.本节将介绍Veil工具的安装及使用. 在Kali Linux中,默认没有安装Vei ...