如何通过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软件包

    扫描二维码关注公众号,回复: 429233 查看本文章
  • 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://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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自awen7916.iteye.com/blog/2407264