centos7搭建SVN并配置使用http方式访问SVN服务器-程序员宅基地

一、检查SVN是否安装

centos7系统自带SVN

# rpm -qa subversion

[root@localhost ~]# rpm -qa subversion
subversion-1.7.14-14.el7.x86_64

如果没有则通过yum安装

# yum install subversion -y

二、检查已安装版本

# svnserve --version

[root@localhost ~]# svnserve --version
svnserve, 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 back-end (FS) modules are available:

* fs_base : Module for working with a Berkeley DB repository.
* fs_fs : Module for working with a plain file (FSFS) repository.

Cyrus SASL authentication is available.

[root@localhost ~]#

三、创建SVN版本库(也就是项目要存放的仓库)

1、创建所有项目的根目录

# mkdir -p /home/svn

2、创建项目要存放的位置(必须要在/home/svn根目录下创建)

# svnadmin create /home/svn/cloud-platform

# svnadmin create /home/svn/cloud-platform-client

# svnadmin create /home/svn/cloud-platform-web

# svnadmin create /home/svn/docs

[root@localhost ~]# svnadmin create /home/svn/cloud-platform
[root@localhost ~]# svnadmin create /home/svn/cloud-platform-client
[root@localhost ~]# svnadmin create /home/svn/cloud-platform-web
[root@localhost ~]# svnadmin create /home/svn/docs
[root@localhost ~]#
[root@localhost ~]# ls /home/svn/
cloud-platform  cloud-platform-client  cloud-platform-web  docs

说明:

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

svnadmin create是创建单个项目的版本库,ProjectName(cloud-platform)是项目的名字

3、查看创建的项目

[root@localhost cloud-platform]# ls
conf  db  format  hooks  locks  README.txt
[root@localhost cloud-platform]#
[root@localhost cloud-platform]# pwd
/home/svn/cloud-platform

四、配置代码库

进入/home/svn/cloud-platform/conf文件夹下

authz:权限控制文件
passwd:帐号密码文件
svnserve.conf :SVN服务配置文件

[root@localhost conf]# ls
authz  passwd  svnserve.conf
[root@localhost conf]#
[root@localhost conf]# pwd
/home/svn/cloud-platform/conf

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

# vi passwd

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

### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.

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

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

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

 note:

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

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

2、设置权限控制

# vi 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

3、修改svnserve.conf文件

# vi svnserve.conf

释放如下几行的注释

anon-access=none          #匿名用户不可访问

auth-access=write         #授权用户可写

password-db=passwd        #使用哪个文件作为账号文件

authz-db = authz          #使用哪个文件作为权限文件

realm = /home/svn/cloud-platform      #认证空间名,版本库所在目录

 如下图:

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

五、启动svn与停止

# svnserve -d -r /home/svn

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

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

查看SVN进程

# ps aux | grep svn

[root@localhost ~]# ps aux | grep svn
root      2171  0.0  0.0 112704   960 pts/0    S+   13:58   0:00 grep --color=auto svn
root     19195  0.0  0.0 180716   952 ?        Ss   Jun19   0:00 svnserve -d -r /home/svn

监听SVN端口

# netstat -tunlp | grep 3690

[root@localhost ~]# netstat -tunlp | grep 3690
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      19195/svnserve

关闭SVN

关闭SVN直接杀进程即可

# kill -9 PID

[root@localhost ~]# kill -9 19195
[root@localhost ~]#
[root@localhost ~]# netstat -tunlp | grep 3690
[root@localhost ~]#

 或者

# killall svnserve

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

输入密码进行登陆

连接成功

六、配置Apache的http协议访问

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

 # ls /etc/httpd/modules/ | grep svn

[root@localhost ~]# ls /etc/httpd/modules/ | grep svn
ls: cannot access /etc/httpd/modules/: No such file or directory

如果没安装,使用yum安装

# yum install mod_dav_svn -y

Installed:
  mod_dav_svn.x86_64 0:1.7.14-14.el7

Dependency Installed:
  httpd.x86_64 0:2.4.6-89.el7.centos                                 httpd-tools.x86_64 0:2.4.6-89.el7.centos                                 mailcap.noarch 0:2.1.41-2.el7

Complete!

查看mod_dav_svn是否安装成功

# ls /etc/httpd/modules/ | grep svn

[root@localhost ~]# ls /etc/httpd/modules/ | grep svn
mod_authz_svn.so
mod_dav_svn.so

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

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

# vi subversion.conf

[root@localhost conf.d]# ls
autoindex.conf  README  subversion.conf  userdir.conf  welcome.conf
[root@localhost conf.d]#
[root@localhost conf.d]# pwd
/etc/httpd/conf.d
[root@localhost conf.d]#
[root@localhost conf.d]# cat subversion.conf
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
<Location /repos>
   DAV svn
   SVNParentPath /home/svn

   <LimitExcept GET PROPFIND OPTIONS REPORT>
      AuthType Basic
      AuthName "Authorization Realm"
      AuthUserFile /home/svn/svnusers.conf
      AuthzSVNAccessFile /home/svn/accesspolicy.conf
      Require valid-user
   </LimitExcept>
</Location>

AuthType             #使用基本认证方式,即用户名、密码认证 

AuthName           # 在认证对话框中出现的提示信息 

AuthUserFile       # 指定存放用户名信息的文件路径

AuthzSVNAccessFile      # 指定存放用户访问路径信息的文件路径即设置权限

Require               # 限定只有用户输入正确的用户名和密码后才能访问该标签所指向的路径 

3、使用htpasswd创建http登陆的账户密码

# htpasswd -c -m /home/svn/svnusers.conf admin

语法:

     htpasswd (选项)(文件)(参数)

  选项

-c:创建一个加密文件;只有第一次创建账户密码时使用
-n:不更新加密文件,只将加密后的用户名密码显示在屏幕上; 
-m:默认采用MD5算法对密码进行加密;
-d:采用CRYPT算法对密码进行加密; 
-p:不对密码进行进行加密,即明文密码; 
-s:采用SHA算法对密码进行加密;
-b:在命令行中一并输入用户名和密码而不是根据提示输入密码;
-D:删除指定的用户

 

svnusers.conf是创建的文件名

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

[root@localhost ~]# htpasswd -c -m /home/svn/svnusers.conf admin
New password:
Re-type new password:
Adding password for user admin

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

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

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

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

  接着输入两次密码,

  继续增加用户。。。

或者使用

# htpasswd -mb /home/svn/svnusers.conf username password

-b    使用命令行中的密码,而不是提示输入密码。

例如:

[root@localhost svn]# htpasswd -mb /home/svn/svnusers.conf adminroot cnbigjx
Updating password for user adminroot
[root@localhost svn]#
[root@localhost svn]# htpasswd -mb /home/svn/svnusers.conf cnbilh cnbilh123
Adding password for user cnbilh
[root@localhost svn]# htpasswd -mb /home/svn/svnusers.conf cnbilc cnbilc123
Adding password for user cnbilc
[root@localhost svn]# htpasswd -mb /home/svn/svnusers.conf cnbiln cnbiln123
Adding password for user cnbiln
[root@localhost svn]# htpasswd -mb /home/svn/svnusers.conf cnbilq cnbilq123
Adding password for user cnbilq
[root@localhost svn]# htpasswd -mb /home/svn/svnusers.conf cnbimj cnbimj123
Adding password for user cnbimj
[root@localhost svn]# htpasswd -mb /home/svn/svnusers.conf cnbishj cnbishj123
Adding password for user cnbishj
[root@localhost svn]# htpasswd -mb /home/svn/svnusers.conf cnbiwj cnbiwj123
Adding password for user cnbiwj

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

参考:htpasswd 命令

4、创建存放用户访问路径的文件并设置权限

# vi accesspolicy.conf

[root@localhost ~]# cd /home/svn/
[root@localhost svn]#
[root@localhost svn]# ls
cloud-platform  cloud-platform-client  cloud-platform-web  docs  svnusers.conf
[root@localhost svn]#
[root@localhost svn]# vi accesspolicy.conf
[groups]
admin = admin

[/]
*=r
@admin = rw

[cloud-platform:/]
*=rw
@admin = rw

[cloud-platform-client]
*=rw
@admin = rw

[cloud-platform-web]
*=rw
@admin = rw

[docs]
*=rw
@admin = rw

5、修改目录权限进行Apache授权

# chown -R apache:apache /home/svn/

[root@localhost svn]# chown -R apache:apache /home/svn/
[root@localhost svn]#
[root@localhost svn]#
[root@localhost svn]# ll
total 24
-rw-r--r--. 1 apache apache 15795 Jul  3 13:50 accesspolicy.conf
drwxr-xr-x. 6 apache apache    86 Jun 22 16:31 cloud-platform
drwxr-xr-x. 6 apache apache    86 Jun 22 16:32 cloud-platform-client
drwxr-xr-x. 6 apache apache    86 Jun 22 16:32 cloud-platform-web
drwxr-xr-x. 6 apache apache    86 Jul  2 17:28 docs
-rw-r--r--. 1 apache apache   790 Jul  3 11:50 passwd
-rw-r--r--. 1 apache apache  1053 Jul  3 13:35 svnusers.conf

 

6、重启Apache的服务

service httpd restart  或者 systemctl restart httpd.service

七、SVN服务器从Windows迁移到LInux

1、现在要使用Linux作为svn服务器,之前是在windows Server 2008上的,用的是VisualSVN, 如下图所示。

现在svn中有四个项目,需要将这些项目导出到linux环境下

2、导出项目

运行cmd,输入命令

svnadmin dump D:\Repositories\cloud-platform > E:\backup\cloud-platform.dump

导出cloud-platform项目中的所有文件

可见命令会导出每个版本的详细信息,保证了之前的历史信息不会丢失。现在我们便得出备份文件cloud-platform.dump,如下:

利用批处理实现项目的批量导出,编写svnbak.bat, 双击运行,会一次性导出所有项目

svnadmin dump D:\Repositories\cloud-platform > E:\backup\cloud-platform.dump
svnadmin dump D:\Repositories\cloud-platform-client > E:\backup\cloud-platform-client.dump
svnadmin dump D:\Repositories\cloud-platform-web > E:\backup\cloud-platform-web.dump
svnadmin dump D:\Repositories\docs > E:\backup\docs.dump

3、上传备份文件到Linux并导入备份文件

输入命令:svnadmin load /home/svn/cloud-platform < /root/cloud-platform.dump,运行结果如下:

八、在linux下使用svn命令

1、说明:

客户端IP地址:192.168.2.134

svn服务端IP地址:192.168.2.212

2、常用的svn命令

将代码checkout到当前目录

简写:svn co URL

# svn checkout svn://192.168.2.212/docs

[root@tracker1 opt]# svn checkout svn://192.168.2.212/docs
Authentication realm: <svn://192.168.2.212:3690> /home/svn/docs
Password for 'root':
Authentication realm: <svn://192.168.2.212:3690> /home/svn/docs
Username: cnbidjl
Password for 'cnbidjl':

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://192.168.2.212:3690> /home/svn/docs

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
…………………………
……………………………………
……………………………………………………
Checked out revision 1562.
[root@tracker1 opt]#
[root@tracker1 opt]# ls
docs
[root@tracker1 opt]#

 

将代码checkout到指定目录

# svn co URL directory

查看svn版本号

在svn的工作目录,输入命令:

# svn info

[root@tracker1 docs]# ls
readme.md  svn账号.xls  个人网盘资料  产品部资料  产品项目汇总  工作汇报  部门手册文档
[root@tracker1 docs]#
[root@tracker1 docs]# svn info
Path: .
Working Copy Root Path: /opt/docs
URL: svn://192.168.2.212/docs
Repository Root: svn://192.168.2.212/docs
Repository UUID: 347ba001-b9fa-e74f-92c4-0c3f7672eadb
Revision: 1562
Node Kind: directory
Schedule: normal
Last Changed Author: cnbiln
Last Changed Rev: 1562
Last Changed Date: 2019-07-03 14:28:39 +0800 (Wed, 03 Jul 2019)

[root@tracker1 docs]#

 

往版本库中添加新的文件

# svn add file

file是某个文件或者某个目录,如果添加所有的文件则用点“.”表示。

提交文件到服务器

简写:svn ci

svn commit -m “LogMessage“ [-N] [--no-unlock] path(如果选择了保持锁,就使用–no-unlock开关)

例如:svn commit -m “add test file for my test” test.php

一般步骤:

  • step-1:svn update
  • step-2:svn add file、svn delete file
  • step-3:svn commit -m “提交文件到远程服务器”

删除文件

简写:svn (del, remove, rm)

(1)、删除远程服务器文件

svn delete svn://192.168.1.1/pro/domain/test.php -m “delete test file”

(2)、删除本地文件,然后提交

svn delete test.php, 然后再svn ci -m “delete test file”,推荐使用这种

查看文件详细信息

svn info path test.php

参考博客:

CentOS 7 SVN搭建 (YUM安装)

https://www.cnblogs.com/taohaijun/p/7172939.html

Linux(Centos7)下搭建SVN服务器

https://www.cnblogs.com/-mrl/p/8980244.html

Linux下安装SVN服务端小白教程

https://www.cnblogs.com/liuxianan/p/linux_install_svn_server.html

Centos虚拟机SVN的安装和使用http方式访问svn服务器

https://www.cnblogs.com/gne-hwz/p/8563982.html

https://www.cnblogs.com/memphise/articles/6411767.html

SVN服务器从Windows迁移到LInux

https://www.cnblogs.com/lidabo/p/4633152.html

转载于:https://www.cnblogs.com/djlsunshine/p/11045142.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30500289/article/details/99126521

智能推荐

docker搭建私有仓库_docker 私人仓库-程序员宅基地

文章浏览阅读8.7k次,点赞3次,收藏39次。Docker 官方提供了一个搭建私有仓库的镜像 registry ,运行该镜像的容器并且对外暴露5000端口就ok了。_docker 私人仓库

服务器出现python错误:distutils.errors.DistutilsError:_distutils.errors.distutilserror: could not find su-程序员宅基地

文章浏览阅读1.6w次。在服务器上运行python安装包时候出现:distutils.errors.DistutilsError: Could not find suitable distribution for Requirement.parse(‘flake8’)解析google-apputils,找不到合适的分布需求解决方法:pip install google-apputils再次运行安装即可..._distutils.errors.distutilserror: could not find suitable distribution for re

freeRTOS:基于(队列+线程)的日志系统设计_freertos日志-程序员宅基地

文章浏览阅读667次。故障排查与调试:嵌入式系统通常运行在资源有限的环境中,故障排查和调试变得尤为复杂。日志系统可以记录系统在运行过程中的各种操作、状态和事件信息,方便开发人员追踪和定位问题所在。通过分析日志,可以快速找到故障源,并进行相应的修复和调试。系统性能优化:嵌入式系统的资源有限,因此性能优化尤为关键。日志系统可以记录系统运行过程中的性能指标,如任务执行时间、资源利用率等。通过分析这些日志,可以发现系统性能瓶颈,进行性能优化和资源管理,提高系统的响应速度和资源利用效率。_freertos日志

剑指offer的python解_python剑指offer题解-程序员宅基地

文章浏览阅读86次。笔记笔记笔记-待更新二维数组中查找题目在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数思路从最右一列往下查找,效率比直接遍历高代码# -*- coding:utf-8 -*-class Solution:# array 二维列表def Find(self, ..._res=[] for i in b: res.append(min_1(a,i)) tem = np.array(res).min() return t

android:layout_weight="1",Android:LinearLayout布局中Layout_weight的深刻理解-程序员宅基地

文章浏览阅读2.9k次,点赞2次,收藏3次。首先看一下LinearLayout布局中Layout_weight属性的作用:它是用来分配属于空间的一个属性,你可以设置他的权重。很多人不知道剩余空间是个什么概念,下面我先来说说剩余空间。看下面代码:android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_par..._"android:layout_weight=\"1"

jenkins war包_Jenkins在Java web项目CI/CD中的简单应用-程序员宅基地

文章浏览阅读94次。JenkinsJenkins is a self-contained, open source automation server which can be used to automate all sorts of tasks related to building, testing, and delivering or deploying software.主要介绍使用Jenkins..._jenkins构建javaweb应用指定war包名

随便推点

Linux提权中常见命令大全-程序员宅基地

文章浏览阅读99次。在拿到一个 webshell 之后,大家首先会想到去把自己的权限提升到最高,windows 我们会提升到 SYSTEM 权限,而 Linux 我们会提升到 root 权限,拿在进行 Linux 提权的时候我们要进行哪些操作呢?需要了解哪些信息?使用什么样的命令?这些就是本文的重点。关于Linux权限提升,有下面几个步骤:信息收集:尽量收集更多的关于系统的信息。数据分析:通过把收集到的数..._执行提权命令的流量包有哪些内容

【扩散模型】论文精读:VLOGGER: Multimodal Diffusion for Embodied Avatar Synthesis-程序员宅基地

文章浏览阅读3.7k次,点赞19次,收藏20次。我们提出了 VLOGGER,这是一种从一个人的单个输入图像生成音频驱动的人类视频的方法,它建立在最近生成扩散模型的成功之上。我们的方法包括 1) 随机人到 3d 运动扩散模型,以及 2) 一种新颖的基于扩散的架构,该架构通过空间和时间控制来增强文本到图像模型。这支持生成可变长度的高质量视频,通过人脸和身体的高级表示轻松控制。与之前的工作相比,我们的方法不需要对每个人进行训练,不依赖于人脸检测和裁剪,生成完整的图像(而不仅仅是人脸或嘴唇),并考虑广泛的场景(例如可见的躯干或不同的主题身份),这对于正确合成交流_vlogger: multimodal diffusion for embodied avatar synthesis

NAO机器人学习笔记(1)-程序员宅基地

文章浏览阅读936次,点赞4次,收藏6次。1 NAO机器人硬件1.1 红外线 红外线发射角度-60°~+60°,波长940nm.1.2 超声波(声纳) NAO能够探测前方0.25~2.55m内是否有障碍物,探测角度60°,超声波频率为49kHZ.1.3 传感器1.3.1 接触传感器 触摸、按压、划过接触传感器可以出发接触传感器产生电信号,进而完成向机器人输入信息. 头部:前中后三个触摸传感器。 手..._nao机器人原理

DSG-RealSync For Oracle技术浅析-2012版-程序员宅基地

文章浏览阅读218次。前言IT系统经过长时间的运行,其作用越来越大,企业的各项运作都严重依赖于IT系统的正常运行;但由于IT系统越来越复杂、资料量越来越庞大、业务类型也越来越多样化,因此IT人员每天都必需面临着如下问题:如何确保系统的正常运行?如何确保业务的连续性和容灾保障?如何提高容灾系统可用性,分担源主产端的业务压力?如何实现硬件平台的开放、异构架构?RealSync复制系统定..._realsync

git_git.w-程序员宅基地

文章浏览阅读101次。1、环境安装Git最新版下载地址:https://gitforwindows.org/TortoiseGit,Git客户端,32/64位最新版及对应的语言包下载地址:https://tortoisegit.org/download/安装的方法,一直下一步就行,具体做法省略。2、配置 1、首先,请选定一个存放Git项目的目录,这样管理方便. 如:D:\te..._git.w

OnTriggerEnter事件、以及触发碰撞、刚体碰撞研究尝试-程序员宅基地

文章浏览阅读6.9k次,点赞4次,收藏7次。一、触发碰撞和刚体碰撞共性:碰撞双方都需要加碰撞器组件,至少有一个添加了刚体组件rigidbody;异同:触发碰撞需要在 碰撞器勾选is trigger选项,刚体碰撞需要使用物理动力模式(isKinematic 选项不能勾选)二、OnTriggerEnter事件执行特点;OnTriggerEnter事件不是每帧调用的,它是基于RigidBody物理碰撞后调用的,不管事件所在的脚本是..._ontriggerenter