转至: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链接

查看仓库状态

转载于:https://www.cnblogs.com/daixh/p/11330772.html

Web高效管理多个项目的SVN仓库相关推荐

  1. 更换已存在项目的svn的地址

    CreateTime--2017年11月23日16:20:14 Author:Marydon 如何更换已存在项目的svn的地址? 参考链接:http://blog.csdn.net/sinat_249 ...

  2. 删除项目的SVN信息 取消项目的SVN关联 简单粗暴

    一.概述 有时候我们copy一个项目,新生成的项目B会自带之前项目A的svn信息,我们就需要删除B项目所关联的svn信息,这里提供一种即简单又粗暴的方法,亲测可用. 二.方法步骤 1.新建文本文件 在 ...

  3. Subclipse-用于Eclipse开发项目的SVN版本管理

    如题. 在Eclipse中可以通过 help->market....来安装subversion 配合Eciplse使用的说明 http://www.blogjava.net/gdhqs/ htt ...

  4. 在一台服务器上搭建多个项目的SVN

    需求:一台机子,多个项目,项目之间用户独立不可以相互访问文件 思路:在机子上设置多个代码仓库,用不同的端口号加一区分 实现: 首先安装SVN,我这里使用的是TortoiseSVN 首先创建多个SVN代 ...

  5. 管理多供应商物联网项目的10个关键步骤

    管理多供应商物联网项目的10个关键步骤 10 critical steps for managing a multi-vendor IoT project 一旦您决定创建一个成功的端到端物联网应用开发 ...

  6. Maven(三):将web项目的war包热部署到远程Tomcat服务器

    相关阅读: Maven(一):安装与环境配置.使用Maven搭建web项目 Maven(二):常用命令.依赖管理 Maven(三):将web项目的war包热部署到远程Tomcat服务器 Maven(四 ...

  7. 手动将web项目的class文件打成jar包,手动打jar包,java -cvf,IDE打包底层指令

    手动将web项目的class文件打成jar包. 我们的项目在使用IDE进行编译后,在项目的target目录下将会生成class文件.我们可以将class文件打成jar包. 使用的到命令为: 在targ ...

  8. SVN优化(一) SVN忽略maven项目的target

    SVN优化(一) SVN忽略maven项目的target 一 eclipse刚开始导入的项目: 二  解决办法 方式一: 在项目代码路径,如: F:\xyx\sl  鼠标右键,"Tortoi ...

  9. [笔记]解决m2eclipse给项目添加maven依赖管理时可能不给项目的build path...

    为什么80%的码农都做不了架构师?>>>    解决办法:在m2eclipse提供的菜单里关闭项目的Maven依赖管理,然后再启动Maven的依赖管理!!! 检查:1)查看项目的.c ...

最新文章

  1. 升级到asp.net core 3.1遇到的json异常
  2. 利用XML实现通用WEB报表打印(转载)
  3. How to save your Ethereum Dapp users from paying gas for transactions
  4. 连贯的学习黑树(插入节点)
  5. 用数据库修改服务器的时间格式,如何查询数据库服务器的时间格式
  6. ubuntu 系统下的Caffe环境搭建
  7. 【Python】Python第三方库安装
  8. Java 导出 Excel 文件
  9. jQuery原型方法first,last,eq,slice源码分析
  10. 【STC单片机】通过ADC外部输入调节PWM占空比输出并串口打印当前脉冲值
  11. 文字怎么转化计算机代码,如何把文字转换成代码
  12. 【阿里内部教程】python初阶:基础语法 python全栈自动化测试系类
  13. 苹果新款MacBook Pro可能会有SD卡插槽
  14. 2021年中国民航及其重点企业对比分析(中航集团VS东航集团VS南航集团VS海航集团)[图]
  15. Sublime常用操作
  16. hank's sap blog
  17. 一句话与中国菜刀的用法
  18. 列出html表单元素及语法,HTML表单(示例代码)
  19. 海外媒体推广,企业如何在YouTube做好海外网红KOL营销?
  20. 拒绝降权,教你用 Python 确保制作的短视频独一无二

热门文章

  1. 写一个公用的gpio口驱动
  2. VScode 开发stm32无法识别uint32_t,uint16_t,uint8_t问题
  3. android fragment 底部菜单栏,一句话搞定Android底部导航栏,一键绑定Fragment、ViewPager...
  4. java jpa jar_JPA 开发所需的Jar包 (基于Hibernate)
  5. 数据结构之平衡树:2-3查找树的介绍——16
  6. JS高级——JSON、数据存储学习笔记
  7. LeetCode 1099. 小于 K 的两数之和(二分查找)
  8. python源文件编码的含义_【原创】Python 源文件编码解读
  9. Flink常见流处理API
  10. Hive关于数据库的增删改查