共计 6855 个字符,预计需要花费 18 分钟才能阅读完成。
前言:
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