本次集成的SVN版本管理系统由Apache 、Subversion 、Jsvn admin构成,其中,Apache 是应用服务器中间件,Subversion 是SVN软件,Jsvn admin是管理 Svn 服务器的项目用户的 web 应用,即Jsvn admin运行在apache服务器,并对我们的SVN访问权限进行管理。
1. 安装apache
- 安装服务
yum install httpd httpd-devel# 启动服务service httpd start# 设置为开机启动chkconfig httpd on
- 配置
vim /etc/httpd/conf/httpd.conf
找到 ServerName 并修改成 ServerName localhost:80
- 防火墙中打开 80 端口
# vim /etc/sysconfig/iptables-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT# service iptables restart
- 测试服务器是否安装成功
浏览器中访问
2. 安装SVN
- 安装服务
#安装SVN相关模块yum -y install mod_dav_svn subversion#重启apacheservice httpd restart#查看SVN服务是否安装成功svn --version
- 配置SVN
创建svn主库目录
mkdir /svn/
配置密码和权限管理文件所在目录
touch /svn/passwd.httptouch /svn/authzvim /etc/httpd/conf.d/subversion.conf
添加以下内容,里面有SVN库的目录和多库的父目录
#Include /svn/httpd.confDAV svnSVNListParentPath onSVNParentPath /svnAuthType BasicAuthName "Subversion repositories"AuthUserFile /svn/passwd.httpAuthzSVNAccessFile /svn/authzRequire valid-userRedirectMatch ^(/svn)$ $1/
3. 安装jsvn admin
翻墙后,到 下载最新版。
** 关闭 SELinux( Linux 的访问控制)**
修改/etc/selinux/config 文件
vim /etc/selinux/config
将 SELINUX=enforcing 改为 SELINUX=disabled 后重启机器
- ** 安装MYSQL**
# 查看该操作系统上是否已经安装了 mysql 数据库,有的话,可以通过 rpm -e 命令 或者 rpm -e --nodeps 命令来卸载掉rpm -qa | grep mysql #开始安装yum install mysql-server mysql mysql-develservice mysqld startchkconfig mysqld on
防火墙中打开 3306 端口
vim /etc/sysconfig/iptables
加入以下文本
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
重启防火墙, 使端口配置生效
service iptables restart
设置 MySQL 数据库 root 用户的密码
mysqladmin -u root password '123456'
登录数据库后,授权远程访问
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITHGRANT OPTION;mysql> FLUSH PRIVILEGES;
- ** 使用 Tomcat7 部署 svn admin**
上传tomcat7并解压到/usr/local/tomcat/svnadmin-tomcat,修改tomcat的端口为和容器编码为 UTF-8
vim /usr/local/tomcat/svnadmin-tomcat/conf/server.xml
修改为
防火墙中打开 9000 端口,重启防火墙
上传svnadmin.war,解压到/usr/local/tomcat/svnadmin-tomcat/webapp下
unzip svnadmin.war -d /usr/local/tomcat/svnadmin-tomcat/webapps/svnadmin
修改svnadmin的JDBC配置
vim /usr/local/tomcat/svnadmin-tomcat/webapps/svnadmin/WEB-INF/jdbc.properties
配置如下:
#MySQLdb=MySQL#MySQLMySQL.jdbc.driver=com.mysql.jdbc.DriverMySQL.jdbc.url=jdbc:mysql://127.0.0.1:3306/svnadmin?characterEncoding=utf-8MySQL.jdbc.username=rootMySQL.jdbc.password=123456#Oracle#Oracle.jdbc.driver=oracle.jdbc.driver.OracleDriver#Oracle.jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:svnadmin#Oracle.jdbc.username=root#Oracle.jdbc.password=123456
利用客户端工具创建一个 svnadmin 数据库实例并导入相应数据,数据库脚本是安装包下的db/mysql5.sql 和 db/lang/en.sql 文件。下图是运行脚本后创建好的表。
启动tomcat,输入网址 登录svn管理后台,看到该页面后即部署成功。第一次登录需要设置账户和密码。
4. 使用svnadmin
假设现在有以下需求:svntest项目组有jack、rick、rose三个成员,其中jack是项目经理,rick是开发人员,rose是测试人员。svntest项目的仓库URL是
svntest |_____tags |_____trunk |_____branches
jack是属于管理组,对根目录以及所有的子目录拥有读写权限;rick属于开发组,只拥有trunk以及所有的子目录读写权限, rose可以读取tags目录,但不能写。
4.1 创建仓库
为SVN仓库创建一个名为svntest的库
创建完毕后,在SVN库的根目录下将会被创建一个svntest的文件夹
[root@www svn]# ls /svnauthz httpd.conf passwd.http svntest
authz 文件是权限管理文件,通过上面创建了svntest这个库后,这里默认建立了三个角色(组):developer、manager、tester,其中manager给予了读写权限。
[root@www svn]# cat authz [aliases][groups]svntest_developer=svntest_manager=svntest_tester=[svntest:/]@svntest_manager=rw
** 重要:修改项目仓库目录拥有者和赋予读写权限,每次创建新的仓库都要重新授权**
因为现在项目仓库目录归属为root,但是我们通过svn管理控制平台操作该目录的时候默认是使用apache的账户,所以对该目录没有读写权限。
现在的/svn所属
[root@www svn]# ll /svndrwxr-xr-x 6 root root 4096 Mar 2 14:54 svntest
[root@www svn]# vim /etc/httpd/conf/httpd.conf#文件的内容里面有以下字段User apacheGroup apache
修改所属组和权限
chown -R apache.apache /svn/svntestchmod -R 777 /svn/svntest
4.2 创建用户和添加为组员
点击右上角的用户分别创建jack/rick/rose三个用户。
把admin和jack用户设置为管理组,rick设置为开发组,rose设置为测试组。** admin添加到管理组才能为相应的组给予相应的权限。**
4.3 建立项目的目录
利用乌龟SVN使用管理组的账号jack检出项目,并在根目录下建立相应的子目录,最后上传代码库。
4.4 权限控制
登录SVN管理平台,点击相应的项目进行权限授予。