Web高效管理多个项目的SVN仓库
转至:https://www.jianshu.com/p/a0af00642585
采用方案
Linux+Apache+Subversion+MySQL+JDK+Tomcat+Svnadmin
目录
0.安装准备
0.1 升级系统软件包
0.2 关闭SELinux
0.3 安装wget
1.部署Apache
1.1 安装apache
1.2 修改配置文件
1.3 启动apache服务
1.4 调整防火墙,允许80端口访问
1.5 浏览器访问测试
2.部署Subversion
2.1 安装SVN
2.2 重启apache服务
2.3 检查svn模块是否安装上了apache
2.4 查看svn版本
2.5 配置SVN仓库
2.5.1 创建SVN库主目录
2.5.2 编辑配置文件subversion.conf
2.5.3 创建/data/svn/passwd.http和/svn/authz文件
2.5.4 重启apache服务
3.部署MySQL
3.1 安装MySQL
3.2 mysql开机自动启动
3.3 启动mysql服务
3.4 调整防火墙,允许3306端口访问
3.5 设置mysql数据库的root用户密码
4.部署Tomcat
4.1 安装JDK
4.1.1 下载安装包
4.1.2 解压软件包
4.1.3 修改环境变量
4.1.4 使配置立即生效
4.1.5 检验是否生效
4.2 安装Tomcat
4.2.1 下载安装包
4.2.2 解压缩apache-tomcat软件包
4.2.3 修改tomcat的配置文件
4.2.4 调整防火墙,允许8080端口被访问
4.2.5 重启防火墙,使端口配置生效
5.部署jsvnadmin
5.1 删除tomcat/webapps目录中的默认文件
5.2 下载svnadmin软件包
5.3 解压缩svnadmin软件包
5.4 将svnadmin.war解压到tomcat/webapps的svnadmin目录中
5.5 修改svnadmin的jdbc属性文件中连接mysql的默认账户密码
6.初始化svnadmin的数据库
6.1 创建svnadmin数据库
6.2 导入sql文件(mysql5.sql 和en.sql )
6.3 启动tomcat服务
7.浏览器访问,初始化配置
8.补充部分
8.1 查看新增目录、文件,及authz配置参数
8.2 配置仓库的目录权限
8.3 配置rc.local让tomcat开机自动启动服务
8.4 权限公里中“认证失败”的问题
场景
互联网小型公司刚开始启动项目的时候,一般只有一个项目,这个时候,只需要在服务器上部署单库的SVN提供服务即可满足需求,运维人员刚开始只需要在命令行手动配置仓库,新人入职改改passwd和authz配置文件添加账号和权限就能搞定,但随着公司的日益发展壮大,研发队伍越来越壮大,人数越来越多,项目模块化,分布式,SOA服务化,多项目同时研发、测试、发布上线等等,运维人员忙的不可开交,旧法子已经完全不能满足需求了,怎么办呢?本着高效率工作,多玩耍的思想,运维人员要寻求更快更便捷的方法来解决问题,那么一定是服务化的方法了,通过WEB UI的方式管理,点点鼠标可以轻松搞定。
Jsvnadmin的出现,就改变了以往纯命令行或脚本的原始化方法,它是一个 Java 开发的管理 Svn 服务器的项目用户的 web 应用。安装好 Svn 服务器端好,把 Svn Admin 部署好,就可以通过 web 浏览器管理 Svn 的项目,管理项目的用户,管理项目的权限。使得管理配置 Svn 简便,再也不需要每次都到服务器手工修改配置文件。
svnadmin优点
多数据库: Svn 项目配置数据保存在数据库,支持所有数据库(默认MySQL/Oracle/SQL Server)
多操作系统:支持 Window,Linux 等操作系统。
权限控制:管理员可以随意分配权限、项目管理员可以管理项目成员、成员只能查看和修改自己的密码。
支持多项目、多用户、多用户组 Group(默认带有“项目管理组”、 “项目开发组”、 “项目测试组”)。
安全:密码加密保存。
多协议:支持 svn 协议和 http 协议(从 2.0 开始支持 Apache 服务器- - 单库方式,从 3.0开始支持 Apache 多库方式)
仓库浏览(从 3.0.2 开始)
多语言(从 3.0.2 开始)
解决方案
Svnadmin 在 Java 1.6、 Tomcat 6、 Subversion 1.6、 MySQL 5.1、 Apache 2.2、Windows 7 上开发测试通过,同时支持其他操作系统和数据库。
常采用的方案:
Linux+Apache+Subversion+MySQL+Tomcat+Svnadmin
Windows+Apache+Subversion+MySQL+Tomcat+Svnadmin
支持 svn 协议
Svn 的配置信息都在仓库目录的 conf 下的 authz,passwd,svnserve.conf 三个文件中,配置用户和权限都是通过修改 passwd 和 authz,立刻就生效。 Svn Admin 的本质是对这 3个文件进行管理,所有成员、权限的数据都保存在数据库中, 一旦在Svn Admin 的页面上修改,就会把配置信息输出到 conf 下的那 3 个配置文件中。
支持 http 协议
Apache+SVN 配置成功后可以有两种方式:
多库方式: SVNParentPath 指定一个父目录,所有仓库在这个父目录下,使用一个密码文件和一个权限配置文件。优点是增加删除仓库不需要改 apache的 httpd.conf,不需要重启 Apache。缺点是项目多会很混乱。
单库方式: SVNPath 每个仓库单独配置各自的密码和权限文件。优点是各自分开,互相不影响,维护方便。缺点是增加或删除仓库需要修改 apache 的httpd.conf 后重启。
0.安装准备
OS:CentOS6.8 x64
0.1 升级系统软件包
[root@example00 ~]# yum -y update
0.2 关闭SELinux
[root@example00 ~]# vim /etc/sysconfig/selinux
SELINUX=disabled
0.3 安装wget
[root@example00 ~]# yum -y install wget
准备工作做完以后,reboot命令重启服务器
1.部署Apache
1.1 安装apache
[root@example00 ~]# yum -y install httpd httpd-devel
1.2 修改配置文件
[root@example00 ~]# vim /etc/httpd/conf/httpd.conf
276 ServerName localhost:80
1.3 启动apache服务
开机自动启动
[root@example00 ~]# chkconfig httpd on
启动apache服务
[root@example00 ~]# service httpd start
1.4 调整防火墙,允许80端口访问
[root@example00 ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
[root@example00 ~]# service iptables restart
1.5 浏览器访问:http://192.168.1.190
出现apache的欢迎页面
apache欢迎页面
2.部署Subversion
2.1 安装SVN
[root@example00 ~]# yum -y install subversion mod_dav_svn
2.2 重启apache服务
[root@example00 ~]# service httpd restart
2.3 检查svn模块是否安装上了apache
[root@example00 ~]# ls /etc/httpd/modules/ | grep svn
mod_authz_svn.so
mod_dav_svn.so
2.4 查看svn版本
[root@example00 ~]# svn --version
svn, version 1.6.11 (r934486)
compiled Aug 17 2015, 08:37:43
2.5 配置SVN仓库
2.5.1 创建SVN库主目录
多库模式,一份配置文件管理多个库
[root@example00 ~]# mkdir -p /data/svn #
2.5.2 编辑配置文件subversion.conf
[root@example00 ~]# cd /etc/httpd/conf.d/
[root@example00 conf.d]# ls
README subversion.conf welcome.conf
[root@example00 conf.d]# vim subversion.conf
#Include /data/svn/httpd.conf
DAV svn
SVNListParentPath on
SVNParentPath /data/svn
AuthType Basic
AuthName "Subversion repositories"
AuthUserFile /data/svn/passwd.http
AuthzSVNAccessFile /data/svn/authz
Require valid-user
RedirectMatch ^(/svn)$ $1/
2.5.3 创建/data/svn/passwd.http和/svn/authz文件
[root@example00 conf.d]# touch /data/svn/passwd.http
[root@example00 conf.d]# touch /data/svn/authz
2.5.4 重启apache服务
[root@example00 conf.d]# service httpd restart
3.部署MySQL
3.1 安装MySQL
[root@example00 ~]# yum -y install mysql-server mysql mysql-devel
3.2 mysql开机自动启动
[root@example00 ~]# chkconfig mysqld on
3.3 启动mysql服务
[root@example00 ~]# service mysqld start
3.4 调整防火墙,允许3306端口访问
[root@example00 ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
[root@example00 ~]# service iptables restart
3.5 设置mysql数据库的root用户密码
[root@example00 ~]# mysqladmin -u root password 'mypassword'
3.5 授权root账户远程访问mysql
[root@example00 conf.d]# mysql -u root -p
mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
4.部署Tomcat
4.1 安装JDK
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
4.1.1 下载安装包
[root@example00 ~]# cd /usr/local/src/
[root@example00 src]# wget http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.tar.gz
4.1.2 解压软件包
[root@example00 src]# tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/local/
[root@example00 src]# cd /usr/local/jdk1.8.0_121/
[root@example00 jdk1.8.0_121]# pwd
/usr/local/jdk1.8.0_121
4.1.3 修改环境变量
[root@example00 ~]# vim /etc/profile
# Java_Home
JAVA_HOME=/usr/local/jdk1.8.0_121
JRE_HOME=/usr/local/jdk1.8.0_121/jre
PATH=\(PATH:\)JAVA_HOME/bin:\(JRE_HOME/bin CLASSPATH=:\)JAVA_HOME/lib/dt.jar:\(JAVA_HOME/lib/tools.jar:\)JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
4.1.4 使配置立即生效
[root@example00 ~]# source /etc/profile
4.1.5 检验是否生效
方法1:
[root@example00 ~]# java -version
java version "1.7.0_131"
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)
方法2:
[root@example00 ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/jdk1.8.0_121/bin:/usr/local/jdk1.8.0_121/jre/bin:/root/bin
[root@example00 ~]# echo $JRE_HOME
/usr/local/jdk1.8.0_121/jre
[root@example00 ~]# echo $JAVA_HOME
/usr/local/jdk1.8.0_121
4.2 安装Tomcat
下载地址:http://tomcat.apache.org/download-70.cgi
找到Core中tar.gz,右键复制链接
4.2.1 下载安装包
[root@example00 ~]# cd /usr/local/src/
[root@example00 src]# wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.76/bin/apache-tomcat-7.0.76.tar.gz
4.2.2 解压缩apache-tomcat软件包
[root@example00 src]# tar -zxvf apache-tomcat-7.0.76.tar.gz -C /usr/local/
[root@example00 src]# cd /usr/local/
[root@example00 local]# mv apache-tomcat-7.0.76/ tomcat
4.2.3 修改tomcat的配置文件
末尾增加URIEncoding参数为UTF-8
[root@example00 src]# vim /usr/local/src/svnadmin-tomcat/conf/server.xml
22
71 <Connector port="8080" protocol="HTTP/1.1"
72 connectionTimeout="20000"
73 redirectPort="8443" URIEncoding="UTF-8"/>
4.2.4 调整防火墙,允许8080端口被访问
[root@example00 src]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
4.2.5 重启防火墙,使端口配置生效
[root@example00 src]# service iptables restart
5.安装jsvnadmin
下载链接
https://code.google.com/archive/p/jsvnadmin/
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/jsvnadmin/svnadmin-3.0.5.zip
5.1 删除tomcat/webapps目录中的默认文件
[root@example00 ~]# rm -rf /usr/local/tomcat/webapps/*
5.2 下载svnadmin软件包
[root@example00 ~]# cd /usr/local/src/
[root@example00 webapps]# wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/jsvnadmin/svnadmin-3.0.5.zip
5.3 解压缩svnadmin软件包
[root@example00 src]# unzip svnadmin-3.0.5.zip -d svnadmin
[root@example00 src]# cd svnadmin
5.4 将svnadmin.war解压到tomcat/webapps的svnadmin目录中
[root@example00 svnadmin]# unzip svnadmin.war -d /usr/local/tomcat/webapps/svnadmin
5.5 修改svnadmin的jdbc属性文件中连接mysql的默认账户密码
[root@example00 svnadmin]# vim /usr/local/tomcat/webapps/svnadmin/WEB-INF/jdbc.properties
db=MySQL
#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=mypassword
6.初始化svnadmin的数据库
6.1 创建svnadmin数据库
[root@example00 ~]# mysql -u root -p
mysql> CREATE DATABASE svnadmin CHARACTER SET utf8;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| svnadmin |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> exit
Bye
6.2 导入sql文件(mysql5.sql 和en.sql )
[root@example00 svnadmin]# mysql -u root -p svnadmin < /usr/local/src/svnadmin/db/mysql5.sql
[root@example00 svnadmin]# mysql -u root -p svnadmin < /usr/local/src/svnadmin/db/lang/en.sql
6.3 启动tomcat服务
[root@example00 ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk1.8.0_121/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
7.浏览器访问,初始化配置
浏览器访问:http://192.168.1.190:8080/svnadmin/
页面提示:欢迎使用SVN ADMIN,第一次使用请设置管理员帐号和密码.
输入账号/密码,即为svnadmin的默认WEB登录账号密码,需要保存起来,以免忘记。
SVN ADMIN初始化页面
在SVN ADMIN的WEB页面中,可以看到项目管理的相关配置,改变了以往Linux Server上通过命令行管理svn的繁琐历史,而使用WEB GUI的配置方式,可以大大提高SVN仓库的管理效率;
在SVN ADMIN的WEB页面上不仅可以新建项目的SVN仓库,还可以针对不同的项目,进行账户、账户组的配置、权限的管理,非常适合中等型,或小型互联网公司进行管理;
创建库.png
提交成功
8.补充部分
8.1 查看新增目录、文件,及authz配置参数
[root@example00 ~]# cd /data/svn/
[root@example00 svn]# ls
authz project1 httpd.conf passwd.http
/data/svn目录中,已经产生了一个目录ddstore,和一个文件httpd.conf,它与subversion.conf是一样的,在/etc/httpd/conf.d/subversion.conf中已配置。
[root@example00 svn]# cat authz
[aliases]
[groups]
ddstore_developer=
ddstore_manager=
ddstore_tester=
[ddstore:/]
@ddstore_manager=rw
查看authz文件,可以发现,已经被添加了配置内容;这些改变,都是因为调用了svn做了相应的操作。
8.2 配置仓库的目录权限
[root@example00 ~]# chown -R apache.apache /data/svn/project1/
[root@example00 ~]# chmod -R 777 /data/svn/project1/
8.3 配置rc.local让tomcat开机自动启动服务
[root@example00 ~]# vim /etc/rc.local
#tomcat auto start
/usr/local/tomcat/bin/startup.sh
8.4 权限公里中“认证失败”的问题
原因:没有把admin加入项目的manager组中,因此进入权限管理中后,会出现认证失败的问题;
解决方法:设置用户组--->设置用户--->将admin添加到管理组
所有的部署过程已经完成,那么我们需要在SVN ADMIN管理页面中,查看仓库的状态,点击仓库URL链接,查看仓库的状态;若无任何错误信息,即表示仓库配置成功,若有报错,例如405信息等等,那么说明仓库的配置是有问题的,若您尝试多次解决无果,可以联系我,我有空的时候可以协助你troubleshouting。
点击仓库URL链接
查看仓库状态
Web高效管理多个项目的SVN仓库的更多相关文章
- 【SVN】svn 查看项目的 svn 服务器地址目录(脱机状态下)
#事故现场: 在无法连接到svn服务器地址的情况下,查看本地项目的svn的服务器地址目录: #事故分析 因为无法连接svn服务器,所以只能通过svn在本地存储的信息来获取svn的地址路径信息: #解决 ...
- 更换已存在项目的svn的地址
CreateTime--2017年11月23日16:20:14 Author:Marydon 如何更换已存在项目的svn的地址? 参考链接:http://blog.csdn.net/sinat_2 ...
- 取得项目的 Git 仓库
有两种取得 Git 项目仓库的方法.第一种是在现存的目录下,通过导入所有文件来创建新的 Git 仓库.第二种是从已有的 Git 仓库克隆出一个新的镜像仓库来. 在工作目录中初始化新仓库 要对现有的某个 ...
- 优秀开源项目的svn地址
很多优秀的开源项目已经提供SVN源码签出了,无论是解疑还是学习,都是一大幸福之事啊! Apache的SVN库,强烈推荐! http://svn.apache.org/repos/asf/ 里面不但有S ...
- 在一台服务器上搭建多个项目的SVN
需求:一台机子,多个项目,项目之间用户独立不可以相互访问文件 思路:在机子上设置多个代码仓库,用不同的端口号加一区分 实现: 首先安装SVN,我这里使用的是TortoiseSVN 首先创建多个SVN代 ...
- 在改变某一项目的svn的地址,relocate
不要忘记删除原有.svn文件.
- Eclipse 下如何删除一个项目的 SVN 信息
选中项目,右键 - Team - 断开连接 出现如下对话框,根据需要,选择 “删除”或者“不删除”,点击 Yes 即可
- .net项目的svn Global ignore pattern
*.o *.lo *.la *.al .libs *.so *.so.[0-9]* *.a *.pyc *.pyo __pycache__ *.rej *~ #*# .#* .*.swp .DS_S ...
- eclipse下清除项目的svn信息
点击项目右键->Team->Disconnect 选择第一个即可
随机推荐
- 2019.10.17 CCSP自闭打铜
很幸运被珠姐第二次抓过来参加CCSP(第二次看xmk夺冠),不过今年的题目还是那么让人心肌梗塞呢(听题解的时候基本都能听懂也算是进步了8). 比赛前一天晚上躺在宾馆里,做梦梦见自己在打比赛,局面应该是 ...
- (转) Weblogic在Linux上节点服务器启动正常,计算机连接不上
对于服务器AdminServer, 与计算机Machine-0相关联的节点管理器无法访问. 所有所选服务器当前都处于与此操作不兼容的状态, 或未与运行的节点管理器关联, 或 ...
- css不同情况下的各种居中方法
div水平居中 1.行内元素 .parent{ text-align: center } 2.块级元素 .son{ margin: 0 auto ; } 3.flex布局 .parent{ displ ...
- 推荐几个天气Api接口 (可在小程序中使用)
国内的地图软件基本是支持查询天气的唯独腾讯地图不支持天气查询,当然其他天气平台提供的接口也是够个人使用的 1.高德地图(高德地图开发者平台)支持获取实时天气数据 2.百度地图(百度地图开放平台)支持获 ...
- Python之常用模块之小结
复习os模块常用的一些操作 import os # 1.切换路径============= d = os.getcwd() #获取当前的工作路径 os.chdir('D:\\')#目录的切换 prin ...
- mybatis简单用法
1.resultType 和 resultMap 引言: MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap,resultType是直接表 ...
- php四种基础算法:冒泡,选择,插入和快速排序法PHP基础教程
许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣.作为一个初级phper,虽然很少接触到算法方面的东西.但是对于冒泡排序,插入排序,选择排序,快速排序四种基本算法,我想还是要掌 ...
- Python连接MySQL之Python库pymysql
连接数据库 pymysql连接数据库的方式和使用sqlite的方式基本相同: 使用connect创建连接对象 connect.cursor创建游标对象,SQL语句的执行基本都在游标上进行 cursor ...
- 洛谷 P1080 石子合并 ( 区间DP )
题意 : 在一个圆形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分.试设计出1个算法,计算出将N堆石子合并成1堆 ...
- Codeforces Round #287 (Div. 2) E. Breaking Good 路径记录!!!+最短路+堆优化
E. Breaking Good time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...