搭建可通过http访问的svn服务器—apache+svn服务器搭建

一、原理

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://47.104.230.84/svn/test

 

说明:如果无法访问请关闭防火墙,阿里云需要在控制台添加安全组。

————————————————————————————

参考文档:

https://blog.csdn.net/u011781521/article/details/80200583

http://svnbook.red-bean.com/en/1.7/

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值