账号前端开发工具学习持续集成

如何通过Web高效管理多个项目的SVN仓库(适用于中小型研发团队

2017-03-31  本文已影响3161人  皇阿玛PLUS

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.安装准备

1.部署Apache

2.部署Subversion

3.部署MySQL

4.部署Tomcat

5.部署jsvnadmin

6.初始化svnadmin的数据库

7.浏览器访问,初始化配置

8.补充部分


场景

  • 互联网小型公司刚开始启动项目的时候,一般只有一个项目,这个时候,只需要在服务器上部署单库的SVN提供服务即可满足需求,运维人员刚开始只需要在命令行手动配置仓库,新人入职改改passwd和authz配置文件添加账号和权限就能搞定,但随着公司的日益发展壮大,研发队伍越来越壮大,人数越来越多,项目模块化,分布式,SOA服务化,多项目同时研发、测试、发布上线等等,运维人员忙的不可开交,旧法子已经完全不能满足需求了,怎么办呢?本着高效率工作,多玩耍的思想,运维人员要寻求更快更便捷的方法来解决问题,那么一定是服务化的方法了,通过WEB UI的方式管理,点点鼠标可以轻松搞定。

svnadmin优点

  • 多数据库: Svn 项目配置数据保存在数据库,支持所有数据库(默认MySQL/Oracle/SQL Server)

解决方案

  • Svnadmin 在 Java 1.6、 Tomcat 6、 Subversion 1.6、 MySQL 5.1、 Apache 2.2、Windows 7 上开发测试通过,同时支持其他操作系统和数据库。

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初始化页面 创建库.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的环境已经部署完成!下面大家可以根据自己的公司的项目需求,进行项目仓库的配置和权限分配了。

上一篇下一篇

猜你喜欢

热点阅读