SVN的简介和工作原理
Subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。Subversion支持linux和windows,但是普通应用在Linux上。
SVN主要是通过两种方式来工作:即是通过独立服务器和依赖Apache方式来工作。
SVN的作用体现如下方面
1、解决代码管理紊乱的问题。
2、解决代码冲突的问题。
3、解决代码拥有者对代码权限的控制。
4、.......
下面的例子主要是讲解SVN基于MySQL的认证。
系统环境:centos6.5 服务器IP:172.18.107.176
一、先安装相关的数据包
#yum -y install mysql mysql-devel mysql-server httpd
mod_auth_mysql subversion mod_dav_svn
二、启动相关服务。
#service mysqld start
#service httpd start
三、创建项目和相关授权
#mkdir -p /data/svn/
#svnadmin create /data/svn/test #创建一个名为test的项目
#vim /data/svn/authz #创建SVN认证文件
[groups]
admin = eelly01,eelly02,test100 #添加SVN用户名
[test:/] #对test版本库进行权限设置
@admin = rw #允许admin这个组的成员对这个版本库有读写的权限
四、授予项目Apache的权限,否则无法通过http的方式来访问。
#chown -R apache.apache /data/svn/
#chmod 755 /data/svn/ -R
五、创建认证数据库
#mysql -uroot -p
1)创建数据库
mysql>create database svn_auth;
mysql>use svn_auth;
mysql>grant all privileges on *.* to svn@'%'identified by '123456'with grant option;
2)创建表
mysql> CREATE TABLE users ( user_name CHAR(30) NOT NULL,user_passwd CHAR(20) NOT NULL,PRIMARY KEY (user_name));
3)创建测试账号
mysql> insert into svn_auth.users values('test100',encrypt('123456'));
mysql> insert into svn_auth.users values('eelly01',encrypt('123456'));
mysql> insert into svn_auth.users values('eelly02',encrypt('123456'));
六、Apache和SVN集成
#vim /etc/httpd/conf/httpd.conf #添加如下内容
DAV svn
SVNParentPath /data/svn/ #项目的父目录
AuthzSVNAccessFile /data/svn/authz #svn访问认证文件
AuthName "EELLY SUBVERSION" #认证名称
AuthType Basic #基本认证
AuthMYSQLEnable on #开启mysql认证
AuthMYSQLUser svn #数据库访问用户名
AuthMySQLPassword 123456 #数据库访问的密码
AuthMYSQLDB svn_auth #存放认证信息的数据库名称
AuthMYSQLUserTable users #存放认证信息的表名称
AuthMYSQLNameField user_name #存放认证用户名的字段名称
AuthMYSQLPasswordField user_passwd #存放认证密码的字段名称
Require valid-user
七、重启Apache服务器。
# service httpd restart
停止 httpd: [确定]
正在启动 httpd: [确定]
从上面看到在数据库里面创建test100这个用户是可以登录的。eelly01也是没有问题的。如下图。(当然里面是没有东西的了,因为是新建的版本库)
简单的SVN基于MySQL认证就这样搭建完成了,只需要在MySQL数据库里面创建一个用户,然后在authz文件里面授予用户相应的权限即可访问相应的版本库了。