前言:
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。当然也可用于文件文档类型的共享。
SvnAdmin是一个 Java 开发的管理 Svn 服务器的项目用户的 web 应用。安装好 Svn 服务器端好,把 Svn Admin 部署到 Tomcat ,就可以通过 web 浏览器管理 Svn 的项目,管理项目的用户,管理项目的权限。使得管理配置 Svn 简便,再也不需要每次都到服务器手工修改配置文件。
一:环境介绍
1.操作系统:CentOS 6.* ( 双核4G、硬盘至少20G)
2.应用软件:
apr、apr-util、apache subversion、sqlite-amalgamation、jdk、apache-tomcat、svnadmin、mysql
二:软件下载
(下载最新版本即可)
apr、apr-util 下载:http://apr.apache.org/download.cgi
apr-1.5.2.tar.gz
apr-util-1.5.4.tar.gz
apache subversion 下载:http://subversion.apache.org/download.cgi
subversion-1.9.5.tar.gz
sqlite-amalgamation-*下载:http://www.sqlite.org/download.html
sqlite-amalgamation-3190300.zip
jdk下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
jdk-8u131-linux-x64.tar.gz
apache tomcat 下载:http://tomcat.apache.org/download-70.cgi
apache-tomcat-7.0.78.tar.gz
svnadmin项目下载(需要VPN连接):https://code.google.com/archive/p/jsvnadmin/downloads
svnadmin-3.0.5.zip
二:安装subversion
1.yum 安装依赖库
yum install unzip openssh-clients zlib zlib-devel gcc-c++ -y
2.编译安装 apr 和 apr-util
tar -zxf apr-1.5.2.tar.gz
cd /root/apr-1.5.2
./configure --prefix=/usr/local/apr && make && make install
tar -zxf apr-util-1.5.4.tar.gz
cd /root/apr-util-1.5.4
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install
3.编译安装subversion
tar -zxf subversion-1.9.5.tar.gz
unzip sqlite-amalgamation-3071501.zip
mv sqlite-amalgamation-3071501 subversion-1.9.5/sqlite-amalgamation
cd subversion-1.9.5
./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-zlib --enable-maintainer-mode
make
make install
4.将subversion 加入系统环境变量
echo "export SVN_HOME=\"/usr/local/subversion\"
export PATH=\"\$PATH:\$SVN_HOME/bin\"" >> /etc/profile
source /etc/profile
5.创建subversion库
mkdir /opt/subversion/svn/test -p
svnadmin create /opt/subversion/svn/test
6.指定库 指定端口 启动subversion
svnserve -d -r /opt/subversion/svn --listen-port=3690
查看svn端口3690是否存在
netstat -ntpl
防火墙打开3690端口
vim /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 -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
重启防火墙
/etc/init.d/iptables restart
查看防火墙
iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3690
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8080
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
二:部署svnadmin
1.安装jdk,将jdk的tar包解压,然后加入系统环境变量即可
tar -zxf jdk-8u131-linux-x64.tar.gz -C /usr/local
编辑/etc/profile文件在末尾加入下列语句
vim /etc/profile
JAVA_HOME=/usr/local/jdk1.8.0_131
JRE_HOME=/usr/local/jdk1.8.0_131/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HOME/bin:/sbin:/usr/bin:/usr/sbinexport:/usr/local/sbin:/usr/local/bin:/bin:/usr/sbin:/root/bin
CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
source /etc/profile
[root@localhost ~]#java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
至此jdk安装完毕
2.mysql的安装请转到 http://www.linuxidc.com/Linux/2017-12/149714.htm 查看
配置mysql用户并创建svnadmin库即可
mysql> create database svnadmin;
3.解压tomcat,删除webapps下的文件
tar -zxf apache-tomcat-7.0.78.tar.gz -C /opt
rm -rf /opt/apache-tomcat-7.0.78/webapps/*
4.配置svnadmin
解压svnadmin-3.0.5.zip将svnadmin.war 移动到/opt/apache-tomcat-7.0.78/webapps/
unzip svnadmin-3.0.5.zip
mv svnadmin.war /opt/apache-tomcat-7.0.78/webapps/
启动tomcat,让tomcat自行解压war包,然后编辑数据库配置文件的#mysql段,使其可以正常连接数据库
/opt/apache-tomcat-7.0.78/bin/startup.sh
vim /opt/apache-tomcat-7.0.78/webapps/svnadmin/WEB-INF/jdbc.properties
#MySQL
MySQL.jdbc.driver=com.mysql.jdbc.Driver
MySQL.jdbc.url=jdbc:mysql://127.0.0.1:3306/svnadmin?characterEncoding=utf-8
MySQL.jdbc.username=root
MySQL.jdbc.password=root
导入svnadmin项目mysql数据库和语言包
mysql -uroot -p svnadmin < db/mysql5.sql
mysql -uroot -p svnadmin < db/lang/en.sql
再重启tomcat
/opt/apache-tomcat-7.0.78/bin/shutdown.sh
/opt/apache-tomcat-7.0.78/bin/startup.sh
此时svnadmin已经配置启动完毕
防火墙开通8080端口
[root@localhost opt]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3690
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8080
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
5.进入svnadmin的web界面进行配置
浏览器输入地址访问tomcat,提示第一次使用请设置管理员帐号和密码,这里设置一个admin
http://IP:8080/svnadmin/
配置svnadmin和subversion的集成,在web管理界面输入下列信息,并提交
提交完毕后项目已经集成
现在可以对svn增加用户,以及配置用户权限
首先设置用户组,将之前第一次设置的svnadmin管理员账号加入manage用户组内
设置用户 ↑
增加用户 ↑
现在对此项目有第一个管理员用户了,现在需要创建其他用户
创建用户
给a用户配置权限
给a用户配置可读权限
6.配置完用户权限过后,通过tortoisesvn的windows客户访问svn服务
tortoisesvn 客户端下载地址:https://tortoisesvn.net/downloads.html
windows下直接双击运行msi文件进行tortoisesvn的安装
安装完成后在桌面上空白处右键进入版本库浏览"Repo-browser"
输入SVN地址
输入管理员用户名和密码
进入后创建文件夹
7.subversion的备份
第一种:指定版本备份,以及恢复方式(subversion库版本号可以通过windows客户端tortoisesvn的"版本库浏览"进行查看)
svnadmin dump /opt/subversion/svn/test/ --revision 1010 > 20171111.svn
svnadmin load /opt/subversion/svn/test/ < 20171111.svn
第二种:全备份,以及恢复方式
svnadmin dump /opt/subversion/svn/test/ > 20172222.svn
svnadmin load /opt/subversion/svn/test/ < 20172222.svn
第三种:备份并压缩,以及恢复方式
svnadmin dump /opt/subversion/svn/test/ | gzip /opt/backup/subversion/20171212.svn.zip
zcat 20171212.svn.zip | svnadmin load /opt/subversion/svn/test/
可以将备份命令写成shell脚本
vim /opt/backup/subversion/svndump.sh
#!/bin/bash
DBNAME=`date "+%Y.%m.%d_%H%M%S_test_subversion"`.svn
/usr/local/subversion/bin/svnadmin dump /opt/subversion/svn/test/ > /opt/backup/subversion/$DBNAME
给脚本添加执行权
chmod +x /opt/backup/subversion/svndump.sh
写crontab计划任务让其自动备份
crontab -e
#每周六的3:30执行脚本svndump.sh
30 3 * * 6 /opt/backup/subversion/svndump.sh
更多用法请参照svn官方文档
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149716.htm