MyException - 我的异常网
当前位置:我的异常网» Web前端 » 怎么通过Web高效管理多个项目的SVN仓库

怎么通过Web高效管理多个项目的SVN仓库

www.MyException.Cn  网友分享于:2013-02-03  浏览:0次
如何通过Web高效管理多个项目的SVN仓库

TIPS:
希望是你见过的最简洁配置文档,结构清晰,代码精简,减少新手入门的成本,帮助更多的人掌握。

时间 描述 备注
2017-3-31 21:28:00 1.编辑文档,添加截图 -
2017-3-31 23:08:30 1.修改“场景”中文字描述 2.修改多处结构错误 -
2017-3-31 23:30:50 1.修改5.5节,code格式问题 -
2017-4-1 9:38:40 1.增加8.3节,tomcat开机自动启动服务 -
2017-4-5 12:10:50 1.修改2.5.2节,subversion.conf配置文件1处错误 2.补充8.2节,目录权限修改 -
2017-4-5 12:30:30 1.增加补充部分,SNV ADMIN配置成功的状态截图 -
2018-1-3 10:13:30 1.增加权限管理中“认证失败”的问题 -
- - -

采用方案

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
  <Location /svn/>
          DAV svn
          SVNListParentPath on
          SVNParentPath /data/svn
          AuthType Basic
          AuthName "Subversion repositories"
          AuthUserFile /data/svn/passwd.http
          AuthzSVNAccessFile /data/svn/authz
          Require valid-user
  </Location>
  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 <Server port="8005" shutdown="SHUTDOWN">
   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://www.wwaattssuunn.com/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链接
 
查看仓库状态

到这里,CentOS下Subversion+Apache+Jsvnadmin的环境已经部署完成!下面大家可以根据自己的公司的项目需求,进行项目仓库的配置和权限分配了。


作者:MichaelLee
链接:https://www.jianshu.com/p/a0af00642585
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

文章评论

程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
我是如何打败拖延症的
我是如何打败拖延症的
老程序员的下场
老程序员的下场
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
为什么程序员都是夜猫子
为什么程序员都是夜猫子
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
编程语言是女人
编程语言是女人
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
程序员都该阅读的书
程序员都该阅读的书
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
每天工作4小时的程序员
每天工作4小时的程序员
总结2014中国互联网十大段子
总结2014中国互联网十大段子
 程序员的样子
程序员的样子
如何成为一名黑客
如何成为一名黑客
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
那些争议最大的编程观点
那些争议最大的编程观点
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
我的丈夫是个程序员
我的丈夫是个程序员
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
一个程序员的时间管理
一个程序员的时间管理
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
代码女神横空出世
代码女神横空出世
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
程序员应该关注的一些事儿
程序员应该关注的一些事儿
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员的鄙视链
程序员的鄙视链
10个调试和排错的小建议
10个调试和排错的小建议
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
中美印日四国程序员比较
中美印日四国程序员比较
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
鲜为人知的编程真相
鲜为人知的编程真相
漫画:程序员的工作
漫画:程序员的工作
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员和编码员之间的区别
程序员和编码员之间的区别
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有