1、查看是否安装旧版SVN
rpm -qa | grep subversion
2、卸载旧版本SVN
yum remove subversion
3、安装SVN
yum -y install subversion

上面3步都是常规设置。

4、创建SVN版本库(也就是项目要存放的仓库)
mkdir -p /home/svn     创建所有项目的根目录
svnadmin create /home/svn/ProjectName 创建一个项目要存放的位置(必须要在/home/svn根目录下创建)

我将我的版本库放在home/svn目录下,这个svn表示我所有项目的根目录,因为可能会存在多个项目都在一台虚拟机上存放的时候

svnadmin create是创建单个项目的版本库。ProjectName是项目的名字

当上面命令执行后会在/home/svn/ProjectName文件夹下生成以下文件

5配置代码库
进入/home/svn/ProjectName/conf文件夹下
authz:文件是权限控制文件
passwd:是帐号密码文件
svnserve.conf :SVN服务配置文件

设置可以访问这个远程仓库的人的帐号密码

vi passwd

在[users]下面进行用户名密码的设置

[users]
# harry = harryssecret
# sally = sallyssecret
user1 = 密码
user2 = 密码
。。。

编辑完后,按Esc键退出编辑模式,输入 :wq!       保存文件并退出

不用跟系统的/etc/passwd文件中用户名密码相同,用户名密码可以随意设置

note:

  这里设置的用户名密码是用于svn://协议访问代码仓库使用的。

  这与http协议使用的帐号密码不是使用相同的帐号密码文件

设置权限控制

vi authz  编辑authz

在[groups]中设置组,和组员

在下面分别为设计组design和开发组dev
设计组需要有对ProjectName项目中的doc文件有读写权限,而开发组只能拥有读的权限
[/doc]对这个文件夹有设置权限
开发组需要对ProjectName项目中的src源码文件有读写权限。其他人员不能进行写操作。
。所以分别设置/doc和/src文件的权限

为了测试方便,加一个[/]仓库根目录的访问权限,任意用户都可以读取内容

不直接对特定用户设置权限,而是对组进行授权,将用户加入该组。

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
design = user1,user2,user...
developer = user11,user22,user... [/doc]
@design = rw
@dev = r
[/src]
@dev = rw
* = r
[/]
* = r

修改svnserve.conf文件 vi svnserve.conf

清空内容并添加下面内容。主要设置帐号,和权限。还有当前项目的版本库所在目录,

realm中为了避免相对定位出错,这里直接使用绝对路径设置版本库所在目录

[general]
anon-access = none #匿名用户不可访问
auth-access = write #授权用户可写
password-db = passwd #使用哪个文件作为账号文件
authz-db = authz #使用哪个文件作为权限文件
realm = /home/svn/ProjectName # 认证空间名,版本库所在目录

到此,svn仓库已经搭建完毕了

启动svn

svnserve -d -r /home/svn

让svn以deamon守护进程方式 以root用户启动运行。

注意,这路径不能到ProjectName
否则在访问时候会报svn: E170000: URL 'svn://虚拟机ip地址/ProjectName' doesn't exist

访问地址svn://ip/ProjectName    省略的svn这个根目录

配置Apache的http协议访问

查看httpd是否已经安装的svn模块

ls /etc/httpd/modules/ | grep svn
mod_authz_svn.so
mod_dav_svn.so

如果没安装,使用yum安装。

yum install mod_dav_svn

安装完成,对svn版本库下的项目ProjectName进行位置映射

在/etc/httpd/conf.d/文件下创建subversion.conf文件并编辑

vi subversion.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /ProjectName>
DAV svn
SVNPath /home/svn/ProjectName/
AuthType Basic
AuthName "Subversion repos"
AuthUserFile /home/svn/ProjectName/conf/accesspwd
AuthzSVNAccessFile /home/svn/ProjectName/conf/authz
Require valid-user
</Location>

AuthType认证类型

AuthName 描述名,随便取

AuthUserFile这个是http协议的访问账户密码文件,后面使用htpasswd命令创建

AuthzSVNAccessFile 权限认证文件,这个跟上面配置svn时候配置的权限设置一样

Require 需要认证用户才可以访问

htpasswd创建账户密码

htpasswd -c -m /home/svn/ProjectName/conf/accesspwd username

-c是创建新文件,只有第一次创建账户密码时使用

-m是强制使用MD5加密密码(默认)

accesspwd 是创建的文件名。

username你要创建的可访问用户的名字(如我想创建一个asd用户访问这个svn项目仓库,这个username就是asd)

按提示输入两次密码,我们就创建了一个可访问用户名和密码。

如果想要新增加用户abc(第二次添加用户)

不需要使用-c参数,如果使用的会覆盖原来的accesspwd文件

htpasswd -m /home/svn/ProjectName/conf/accesspwd abc

  接着输入两次密码,

  继续增加用户。。。

你不再继续创建新用户,循环结束。

重启Apache的服务

service httpd restart  或者 systemctl restart httpd.service

现在就可以通过"http://ip/ProjectName"  来访问我们的svn服务器了

当然,上面的情况是在关闭防火墙或开放端口,或http服务正常启动情况。

检查端口是否被使用

netstat -tunlp | grep 80   检查80端口使用情况

netstat -tunlp | grep 3690 检查3690也就是svn的服务端口使用情况

端口被使用,说明服务正常开启。

使用curl进行模拟浏览器请求

curl http://localhsot:80/ProjectName  检查服务有没有响应。

一般会返回401 Unauthorized 未认证的401错误

检查防火墙

查看防火墙有没有开启

firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

systemctl status firewalld.service显示一个防火墙的状态

firewall-cmd --list-ports查看已经开放的端口

如果防火墙启动,且没有开放80和3690端口,
开启端口:
firewall-cmd --zone=public --add-port=/tcp --permanent
命令含义:
–zone #作用域
–add-port=/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效 firewall-cmd --reload #重启firewall

  iptables被开启

vi/etc/sysconfig/iptables #编辑防火墙配置文件添加80端口和3690端口

INPUT ACCEPT [:]
:FORWARD ACCEPT[:]
:OUTPUT ACCEPT[:]
-A INPUT -m state--state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -jACCEPT
-A INPUT -i lo -jACCEPT
-A INPUT -p tcp -mstate --state NEW -m tcp --dport -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --Dport 3690 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport -j ACCEPT
-A INPUT -j REJECT--reject-with icmp-host-prohibited
-A FORWARD -jREJECT --reject-with icmp-host-prohibited
保存退出 systemctl restart iptables.service #最后重启防火墙使配置生效
或者service iptables restart这个语句重启iptables 备注:这里使用80和8080端口为例。***部分一般添加到
“-A INPUT -p tcp -m state --state NEW -m tcp--dport -j ACCEPT”行的上面或者下面,切记不要添加到最后一行,否则防火墙重启后不生效。

我们可以使用telnet命令查看虚拟机的某个端口是否可以连通

如,我们测试apache服务器的80端口是否连通(这需要服务器已经启动的情况下)

telnet ip 端口号

如果没有这个命令,使用yum安装这个命令

yum -y install telnet

其他情况

有可能我们虚拟机需要外网访问,我们需要外网电脑上进行端口地址转换

如我们外网地址为218.107.22.104

而我们虚拟机地址172.16.168.102

我们要将172.16.168.102:80端口映射到218.107.22.104:10020端口上,我们要保证我们的外网主机的防火墙策略允许对外网访问的10020端口映射到虚拟机的80端口上。

如果没有端口映射也会出现不能访问的问题。

如果我们想要配置多个svn仓库,我们可以在/home/svn/下创建其他的项目

svnadmin  create /home/svn/新创建的仓库名字

同样的需要修改配置

配置http访问,

在/etc/httpd/conf.d/路径下新建一个project2.conf

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
<Location /新建仓库名>
DAV svn
SVNPath /home/svn/新建仓库名/
AuthType Basic
AuthName "Subversion repos"
AuthUserFile /home/svn/新建仓库名/conf/accesspwd
AuthzSVNAccessFile /home/svn/新建仓库名/conf/authz
Require valid-user
</Location>

重启httpd

最后通过

http://ip:80/新建仓库名

对代码仓库进行访问

ps

  可能我们可以访问svn服务器,也可以checkout出来项目,但是我们上传文件到svn服务器上会出错。

SVN Access to ‘/svn/Test/!svn/me’ forbidden

  在上面设置都没有问题的情况下需要给文件设置对应的用户组,和设置文件权限

将/home/svn/目录下的项目名修改用户组

chown -R group:user url

chown -R apache:apache /home/svn/新建仓库名
-R 会将我们新建仓库文件夹及其子目录下的所有文件递归的更改用户组 apache:apache表示我们要将文件夹及其子目录下的所有文件修改组拥有着为apache,用户为apache url 修改的文件夹路径

设置访问权限appache用户拥有读写可执行,组用户和其他组或用户可以读和执行

chmod -R  /home/svn/新建仓库名

这样设置完后,在使用svn就可以上传文件修改文件了

Centos虚拟机SVN的安装和使用http方式访问svn服务器的更多相关文章

  1. centos7搭建SVN并配置使用http方式访问SVN服务器

    一.检查SVN是否安装 centos7系统自带SVN # rpm -qa subversion [root@localhost ~]# rpm -qa subversion subversion--. ...

  2. 使用 svn://ip/filename 方式访问svn 资源库

    a. 下载 SVN的官方网站为 http://subversion.tigris.org/,当前最新版本为1.4.2.Windows下的二进制安装包分为两种,一种是以setup结尾的安装文件,另一种是 ...

  3. CentOS linux下安装和配置Apache+SVN(用浏览器http方式访问SVN目录)

    在CentOS linux下安装SVN,我们可以进行以下步骤: 第一步:安装CentOS Linux操作系统,并在CentOS安装进行的同时,自定义安装这一步,一定要勾选Subversion(在“开发 ...

  4. Centos系统真机安装,U盘方式

    下载Centos系统镜像,建议选择Minimal ISO.下载地址:https://www.centos.org/download/ 下载Fedora Media Writer,用来将系统镜像写到U盘 ...

  5. http方式访问svn

    接下来做一下svn的http访问 首先,说一下,svn的http访问时依赖apache的dav_svn模块,然后赋予www-data访问权限,进行版本控制 我的服务器环境Ubuntu16.04 准备工 ...

  6. CentOS下使用yum安装配置和使用svn

    安装说明 系统环境:CentOS-6.3安装方式:yum install (源码安装容易产生版本兼容的问题)安装软件:系统自动下载SVN软件 检查已安装版本 ? 1 2 3 4 5 6 7 8 9 1 ...

  7. CentOS搭建SVN服务器,并通过Apache HTTP方式访问

    摘要:本文主要讲述了在centos 6.5环境下搭建svn服务器,可通过svn:\\IP方式访问.同时由于部分公司内网端口限制,并不能访问外网的svn服务器,所以特地结合了apache服务器,使得可以 ...

  8. SecureCRT 连接 CentOS虚拟机

    SecureCRT 连接 CentOS虚拟机 1.安装SecureCRT SecureCRT是一款支持SSH等协议的终端仿真软件,可以在windows下登录Linux服务器,这样大大方便了开发工作.安 ...

  9. SVN的安装以及和eclipse的结合使用

    SVN概述 l 通常软件开发由多人协作开发,如果对代码文件.配置文件.文档等没有进行版本控制,将会出现很多问题: l 备份多个版本,占用磁盘空间大 l 解决代码冲突困难 l 容易引发BUG l 难于追 ...

随机推荐

  1. (KMP 扩展)Clairewd’s message -- hdu -- 4300

    http://acm.hdu.edu.cn/showproblem.php?pid=4300 Clairewd’s message Time Limit: 2000/1000 MS (Java/Oth ...

  2. Codeforces801B Valued Keys 2017-04-19 00:21 136人阅读 评论(0) 收藏

    B. Valued Keys time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  3. cmder简单使用

    window命令行的替代工具cmder.至于为什么要找个替代cmd的工具,你懂得! 一 官网下载 http://gooseberrycreative.com/cmder/ 二 安装 1 直接解压 2 ...

  4. bootstrap collaspe

    和modal类似:也是通过data-toggle, data-target来指定: 可以把折叠插件改为手风琴,如果指定data-parent,那这个data-parent元素下的折叠插件就会像手风琴一 ...

  5. queued frame 造成图形性能卡顿

    曾经遇到过卡顿是类似的原因:当时对显卡底层知识理解不懂,看到引擎底层有一个MaxFramexxx的接口,实现是使用注册表修改显卡底层的注册信息,当时还是一个掉接口习惯的客户端码农的思维,没理解底层含义 ...

  6. EBS _ALL, _TL, _VL, _V,_F,_VL,_A,_AVN and what else

    http://hi.baidu.com/einsteinalbert/item/54579250efc637abadc85705 _ALL, _TL, _VL, _V,_F,_VL,_A,_AVN a ...

  7. Python2.7升级至Python3.6

    Python2.7升级至Python3.6 今天在CentOS7.2上将python2.7升级至python3.6时遇到了诸多问题,下面将升级步骤以及解决方法一一列举. 1.安装Python3.6 安 ...

  8. CentOS环境变量配置并生效

    配置环境变量 1). #:vi /etc/profile 在最后面添加 PATH=~/dotnet/bin:$PATHexport PATH 2). #:source /etc/profile

  9. 初识powershell、nuget powershell 调试

    初识powershell.nuget powershell 调试 补充 此文仅当做powershell的初步认识体验,关于nuget包里此脚本的使用官方已在vs2017停止支持,请看此文文末 前言 老 ...

  10. JAVA 从头开始<三>

    一.数据类型转换 取反:1变0,0变1 强转 Insteger.toBinaryString(-7); 下面这样写会出错,要用l来接收 为什么byte b 可以接收int类型(而不是10b),大数据类 ...