centos7搭建SVN并配置使用http方式访问SVN服务器
一、检查SVN是否安装
centos7系统自带SVN
# rpm -qa subversion
[root@localhost ~]# rpm -qa subversion
subversion-1.7.-.el7.x86_64
如果没有则通过yum安装
# yum install subversion -y
二、检查已安装版本
# svnserve --version
[root@localhost ~]# svnserve --version
svnserve, version 1.7. (r1542130)
compiled Apr , :: Copyright (C) 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 0.0 0.0 pts/ S+ : : grep --color=auto svn
root 0.0 0.0 ? Ss Jun19 : svnserve -d -r /home/svn
监听SVN端口
# netstat -tunlp | grep 3690
[root@localhost ~]# netstat -tunlp | grep
tcp 0.0.0.0: 0.0.0.0:* LISTEN /svnserve
关闭SVN
关闭SVN直接杀进程即可
# kill -9 PID
[root@localhost ~]# kill -
[root@localhost ~]#
[root@localhost ~]# netstat -tunlp | grep
[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 :1.7.-.el7 Dependency Installed:
httpd.x86_64 :2.4.-.el7.centos httpd-tools.x86_64 :2.4.-.el7.centos mailcap.noarch :2.1.-.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
-rw-r--r--. apache apache Jul : accesspolicy.conf
drwxr-xr-x. apache apache Jun : cloud-platform
drwxr-xr-x. apache apache Jun : cloud-platform-client
drwxr-xr-x. apache apache Jun : cloud-platform-web
drwxr-xr-x. apache apache Jul : docs
-rw-r--r--. apache apache Jul : passwd
-rw-r--r--. apache apache Jul : 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:
Node Kind: directory
Schedule: normal
Last Changed Author: cnbiln
Last Changed Rev:
Last Changed Date: -- :: + (Wed, Jul ) [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
centos7搭建SVN并配置使用http方式访问SVN服务器的更多相关文章
- CentOS linux下安装和配置Apache+SVN(用浏览器http方式访问SVN目录)
在CentOS linux下安装SVN,我们可以进行以下步骤: 第一步:安装CentOS Linux操作系统,并在CentOS安装进行的同时,自定义安装这一步,一定要勾选Subversion(在“开发 ...
- Centos7下安装iF.svnadmin实现web方式管理svn(源码安装)
iF.SVNAdmin 是一个基于 Web 的,用来管理 Subversion 的认证文件的项目.无需数据库支持,直接对 Subversion 的认证文件和用户认证文件进行设置,支持 LDAP,同时也 ...
- 使用 svn://ip/filename 方式访问svn 资源库
a. 下载 SVN的官方网站为 http://subversion.tigris.org/,当前最新版本为1.4.2.Windows下的二进制安装包分为两种,一种是以setup结尾的安装文件,另一种是 ...
- Centos虚拟机SVN的安装和使用http方式访问svn服务器
1.查看是否安装旧版SVNrpm -qa | grep subversion2.卸载旧版本SVNyum remove subversion3.安装SVNyum -y install subversio ...
- http方式访问svn
接下来做一下svn的http访问 首先,说一下,svn的http访问时依赖apache的dav_svn模块,然后赋予www-data访问权限,进行版本控制 我的服务器环境Ubuntu16.04 准备工 ...
- 以加密方式访问tomcat服务器
以加密方式(https)访问tomcat服务器,就要求对相应的端口配置加密连接器connector. 配置加密连接器的方法如下: 1.生成数字证书 利用jdk里的keytool生成证书,keytool ...
- centos7.6 安装与配置 MongoDB yum方式
1 创建yum源文件,添加以下内容 vim /etc/yum.repos.d/mongodb-org-4.0.repo [mongodb-org-4.0] name=MongoDB Repositor ...
- centos7 搭建ftp 并配置用户目录
1.如果是阿里云服务器,登录控制后台,配置规则,开启21端口 (sftp是加密文件传输使用的22端口,我们这几是搭建ftp服务器) 2.安装配置vsftp服务器 一.配置防火墙,开启FTP服务器需要的 ...
- netty系列之:搭建客户端使用http1.1的方式连接http2服务器
目录 简介 使用http1.1的方式处理http2 处理TLS连接 处理h2c消息 发送消息 总结 简介 对于http2协议来说,它的底层跟http1.1是完全不同的,但是为了兼容http1.1协议, ...
随机推荐
- 12.方法重载overload
方法重载:overload 重载就是在一个类中,有相同的函数名称,但形参不同的函数 方法重载的规则: 方法名称必须相同 参数列表必须不同(个数不同.或类型不同.参数排列顺序不同等) 方法的返回值类型可 ...
- [bzoj2668] [洛谷P3159] [cqoi2012] 交换棋子
Description 有一个n行m列的黑白棋盘,你每次可以交换两个相邻格子(相邻是指有公共边或公共顶点)中的棋子,最终达到目标状态.要求第i行第j列的格子只能参与mi,j次交换. Input 第一行 ...
- 「 神器 」在线PDF文件管理工具和图片编辑神器
每天进步一丢丢,连接梦与想 在线PDF文件管理工具 完全免费的PDF文件在线管理工具,其功能包括:合并PDF文件.拆分PDF文件.压缩PDF文件.Office文件转换为PDF文件.PDF文件转换为JP ...
- 学习 lind layerdiagram 第三弹
- 西柚考勤系统——alpha2
这个作业属于哪个课程 http://edu.cnblogs.com/campus/xnsy/GeographicInformationScience 这个作业的要求在哪里 https://www.cn ...
- python实例:从excel读取股票代码,爬取股票信息写到代码后面的单元格中
关键词:爬虫.python.request.接口.excel处理 思路: 1.首先准备好excel文档,把股票代码事先编辑进去. 2.脚本读取文档,依次读出股票代码到指定站点发起请求获取股票信息 3. ...
- laravel5.5的服务容器分析
简介 服务容器是Laravel的核心.见名知意,服务容器就是一个存放服务的地方,当我们需要某个服务的时候,我们就可以从这个容器中取出我们需要的服务.用更专业一点的术语来说,官网定义服务容器是这样的: ...
- JS-04-流程控制和循环
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 最短路径-Dijkstra+Floyd+Spfa
Dijkstra算法: Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra ...
- markdown常用语法使用笔记+使用技巧(持续更新......)
参考引用内容: 简书教程 一 基本语法 1. 标题 语法: 在想要设置为标题的文字前面加#来表示,一个#是一级标题,二个#是二级标题,以此类推.支持六级标题. 注:标准语法一般在#后跟个空格再写文字 ...