一、原理
1.1 SVN两种运行方式
模式1:svn单独运行 监听: 3690端口 访问: svn://IP
模式2: svn + apache 监听: 80 端口 访问: http://IP #两种方式各有利弊,可以自行选择
1.2 SVN存储版本数据有2种方式
BDB(一种事务安全型表类型) 和 FSFS (一种不需要数据库的存储系统)。
因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。
1.3 SVN名词解释
repository(源代码库): 源代码统一存放的地方
Update (更新): 当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更
Checkout(提取): 当你手上没有源代码的时候,你需要从repository checkout一份
Commit(提交): 当你已经修改了代码,你就需要Commit到repository
二、服务器搭建
2.1 安装subversion服务
yum install -y subversion
检测是否安装成功
[root@iZm5eetbb1qeqn5t6ynbyiZ bin]# svn --version
svn, version 1.7.14 (r1542130)
compiled Apr 11 2018, 02:40:28
Copyright (C) 2013 The Apache Software Foundation.
This software consists of contributions made by many people; see the NOTICE
file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:
* ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
- handles 'http' scheme
- handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
[root@iZm5eetbb1qeqn5t6ynbyiZ bin]#
2.2 安装apache服务器和svn扩展模块mod_dav_svn
yum install -y httpd mod_dav_svn
检测是否安装成功
[root@iZm5eetbb1qeqn5t6ynbyiZ bin]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built: Aug 8 2019 11:41:18
[root@iZm5eetbb1qeqn5t6ynbyiZ bin]# find / -name mod_dav_svn.so
/usr/lib64/httpd/modules/mod_dav_svn.so
[root@iZm5eetbb1qeqn5t6ynbyiZ bin]# find / -name mod_authz_svn.so
/usr/lib64/httpd/modules/mod_authz_svn.so
[root@iZm5eetbb1qeqn5t6ynbyiZ bin]#
2.3 添加apache配置文件
[root@swarm5 conf]# cat /etc/httpd/conf.d/subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /svn>
DAV svn
SVNParentPath /data/svn
AuthType Basic
AuthName "Authorization SVN"
AuthzSVNAccessFile /data/svn/authz
AuthUserFile /data/svn/passwd
Require valid-user
</Location>
2.4 添加配置文件passwd
[root@iZm5eetbb1qeqn5t6ynbyiZ svn]# touch /data/svn/passwd
[root@iZm5eetbb1qeqn5t6ynbyiZ svn]# htpasswd /data/svn/passwd admin
New password:
Re-type new password:
Adding password for user admin
[root@iZm5eetbb1qeqn5t6ynbyiZ svn]# cat passwd
admin:$apr1$oA1I947G$HmnMtZVbJu/P5cZVnGiWi0
htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名、域和用户基本认证的密码文件。
语法
htpasswd (选项) (参数)
选项
-c:创建一个加密文件;
-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上;
-m:默认采用MD5算法对密码进行加密;
-d:采用CRYPT算法对密码进行加密;
-p:不对密码进行进行加密,即明文密码;
-s:采用SHA算法对密码进行加密;
-b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
-D:删除指定的用户。
参数
用户:要创建或者更新密码的用户名;
密码:用户的新密码。
利用htpasswd命令添加用户
#在bin目录下生成一个.passwd文件,用户名admin,密码:pwdadmin,默认采用MD5加密方式。
htpasswd -bc .passwd admin pwdadmin
在原有密码文件中增加下一个用户
#去掉-c选项,即可在第一个用户之后添加第二个用户,依此类推。
htpasswd -b .passwd fendo 123456
不更新密码文件,只显示加密后的用户名和密码
#不更新.passwd文件,只在屏幕上输出用户名和经过加密后的密码。
htpasswd -nb fendo 123456
利用htpasswd命令删除用户名和密码
htpasswd -D .passwd fendo
利用htpasswd命令修改密码
#即先使用htpasswd删除命令删除指定用户,再利用htpasswd添加用户命令创建用户即可实现修改密码的功能。
htpasswd -D .passwd fendo
htpasswd -b .passwd fendo 123456
2.5 创建权限文件authz
该文件由[groups]配置段和若干版本库路径权限段组成
[groups]配置段格式:<用户组>=<用户列表>
用户列表由若干个用户组或用户名构成,用户组或用户名之间用逗号","分隔,引用用户组时要使用前缀"@"
版本库路径权限段格式:
[<版本库名>:<路径>]如版本库abc路径/tmp的版本库路径权限段的段名为"[abc:/tmp]"。
可省略段名中的版本库名。若省略版本库名,则该版本库路径权限段对所有版本库中相同路径的访问控制都有效。如:[/tmp]
版本库路径权限段中配置行格式有如下三种:
<用户名> = <权限>
<用户组> = <权限>
* = <权限>
其中,"*"表示任何用户;权限的取值范围为''、'r'和'rw',''表示对该版本库路径无任何权限,'r'表示具有只读权限,'rw'表示有读写权限。
注意:每行配置只能配置单个用户或用户组。
[groups]
user_group = test,user
order_group = order,test
[/]
admin = rw
* =
[test:/user]
@user_group = rw
order = r
* =
[/order]
@order_group = rw
* =
2.6 创建仓库并配置apache对SVN目录权限
svnadmin create /data/svn/test
chown -R apache:apache /data/svn/test
2.7 配置httpd
vim /etc/httpd/conf/httpd.conf
2.8 启动Apache
httpd -v #查看已经安装的httpd的版本
rpm -qa | grep httpd #查看是否已经安装了httpd
ps -ef | grep httpd #查看httpd的进程
service httpd status #查看httpd的运行状态
service httpd stop #可以停止httpd
service httpd start #可以启动httpd
2.9 访问服务器
说明:如果无法访问请关闭防火墙,阿里云需要在控制台添加安全组。
————————————————————————————
参考文档:
http://svnbook.red-bean.com/en/1.7/