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的欢迎页面
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的WEB页面中,可以看到项目管理的相关配置,改变了以往Linux Server上通过命令行管理svn的繁琐历史,而使用WEB GUI的配置方式,可以大大提高SVN仓库的管理效率;
- 在SVN ADMIN的WEB页面上不仅可以新建项目的SVN仓库,还可以针对不同的项目,进行账户、账户组的配置、权限的管理,非常适合中等型,或小型互联网公司进行管理;
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。
到这里,CentOS下Subversion+Apache+Jsvnadmin的环境已经部署完成!下面大家可以根据自己的公司的项目需求,进行项目仓库的配置和权限分配了。
作者:MichaelLee 链接:https://www.jianshu.com/p/a0af00642585 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关推荐
允许80端口访问1.5浏览器访问测试2.1安装SVN2.2重启apache服务2.3检查svn模块是否安装上了apache2.4查看svn版本2.5配置SVN仓库2.5.1创建SVN库主目录2.5.2编辑配置文件subversion.conf2.5.3创建/data/svn/passwd.http...
1. **SVN库管理**:创建、删除和管理SVN仓库,这是存放项目文件的地方,每个仓库可以包含多个项目。用户可以通过Web界面轻松创建和配置新的仓库,以便于组织和管理不同的项目。 2. **用户管理**:添加、删除和管理...
通过将SVNAdmin部署在Tomcat服务器上,用户可以通过Web浏览器实现对SVN项目、用户和权限的管理。 - **SVNAdmin的优点**: - **数据库支持**:项目配置数据存储在数据库中,并支持多种数据库类型,包括MySQL、Oracle...
10. **Web访问**:通过安装像VisualSVN Server这样的服务器,可以提供Web界面来浏览和管理SVN仓库,使得远程访问和协作更加便捷。 在给定的文件列表中,"index.html"可能是一个介绍SVN项目管理的网页,"content.jar...
总的来说,这个基于Web的SVN管理系统是一个结合了SVN、HTTP/HTTPS、LDAP、PHP和MySQL等技术的多层面项目,旨在提供一个便捷、安全的代码版本控制解决方案,并且可以通过Docker简化部署流程。对于学习Web开发、版本...
作为一个轻量级的解决方案,它对于那些希望在不安装额外客户端软件的情况下,通过网络对SVN仓库进行基础管理的团队来说是理想的。 **SVN简介** SVN,全称为Subversion,是一种版本控制系统,用于跟踪文件和目录的...
- **资源管理**:通过USVN,你可以创建、删除和重命名SVN仓库,管理仓库的权限设置,包括对文件和目录的访问控制。 - **图形化界面**:提供直观的WEB界面,用户无需熟悉命令行即可进行大部分操作,降低了使用门槛...
而Web SVN是基于Web的SVN客户端,提供了一个直观的用户界面,通过浏览器访问SVN仓库,便于查看、浏览和管理项目。 **SVN二次开发** SVN的二次开发通常涉及以下方面: 1. **插件开发**:开发者可以通过编写插件...
关 于仓库管理的更多细节, 见 “svnadmin”一节. 由于 svnadmin 只有直接访问仓库才能工作 (因 此它只能用在存放了仓库的主机中), 所以说在指定仓库时只能使用文件系统路径, 而不是 URL. svnadmin 的选项都是全局...
这个基于 Web 的 SVN 用户管理程序提供了一种图形化的用户界面,使得 SVN 仓库的管理和权限分配更加直观和高效,减少了命令行操作的复杂性。对于拥有大量用户和项目的组织来说,这样的工具是非常有用的,因为它简化...
SVN的核心优势在于,它不仅能够处理单一文件的版本控制,还能高效地管理整个项目目录树的版本变化。这种能力使得团队成员可以在各自的环境中对同一组数据进行修改和管理,极大地促进了团队协作和开发效率的提升。 *...
1. **仓库管理**:创建、删除和管理多个SVN仓库。 2. **用户管理**:添加、删除和编辑用户,为用户分配特定的权限。 3. **权限控制**:定义精细的权限规则,比如限制用户只访问特定目录。 4. **日志查看**:查看文件...
它允许通过Web浏览器管理SVN仓库、用户和权限设置。 - **项目管理**:SvnAdmin支持多项目、多用户和多用户组的管理,使得项目经理可以管理项目成员,而项目成员可以管理自己的密码。 - **版本兼容性**:SvnAdmin在多...
这通常在服务器上完成,选择一个可自启动的文件夹作为SVN仓库的位置。例如,可以在本地计算机上创建一个名为“svn”的文件夹,然后在这个文件夹内创建新的仓库。仓库名称可以根据项目需求自定义,如“oa”代表Office...
使用SVN工具(如svnadmin)在Linux服务器上创建一个或多个SVN仓库。例如: ``` sudo svnadmin create /var/svn/repo1 ``` 4. 配置SVN权限: SVNManager提供了基于角色的访问控制,你可以创建不同角色并分配...
2. **创建svn仓库**:在服务器上,你需要一个地方来存储你的项目,这通常被称为svn仓库。你可以使用svn的命令行工具`svnadmin`来创建一个新的仓库。 3. **配置仓库访问**:设置仓库的访问权限,确保只有团队成员...
在实际操作中,团队通常会创建一个svn仓库,然后为每个开发人员分配读写权限。他们可以使用svn客户端(如TortoiseSVN)来克隆仓库,进行本地开发,然后将更改提交回仓库。当需要部署项目时,可以从svn仓库中拉取最新...
通过以上步骤,我们完成了SVN服务器的基本配置,包括Apache服务器的设置、SVN仓库的创建、用户权限的管理以及预提交钩子的实现。这些配置可以帮助开发者更高效地协作,同时也能保证代码的质量和规范性。随着项目的...
- **仓库管理**:创建新的SVN仓库,对已有仓库进行重命名、移动或删除操作。仓库可以设定不同的访问策略,如只读或读写权限。 - **访问控制**:通过SvnEdge的Web界面,可以对每个仓库设置访问控制列表(ACL),实现...