CentOS7下搭建SVN服务器
(1).安装SVN
1)安装SVN
[root@youxi1 ~]# yum -y install subversion mod_dav_svn
[root@youxi1 ~]# cat /etc/services | grep svn
svn 3690/tcp # Subversion //SVN的端口号。3690
svn 3690/udp # Subversion
svnetworks 2973/tcp # SV Networks
svnetworks 2973/udp # SV Networks
svnet 3413/tcp # SpecView Networking
svnet 3413/udp # SpecView Networking
ml-svnet 4171/tcp # Maxlogic Supervisor Communication
2)创建目录
[root@youxi1 ~]# mkdir /webdept //创建存放版本库的主目录
[root@youxi1 ~]# svnadmin create /webdept/www.youxi1.com //创建两个版本库
[root@youxi1 ~]# svnadmin create /webdept/www.test1.com
注意:svnadmin是由subversion软件包提供。
查看版本库内的文件和文件夹
[root@youxi1 ~]# ls /webdept/www.youxi1.com/
conf db format hooks locks README.txt
说明:conf目录是这个版本仓库的配置文件,存放访问仓库的用户账号、权限、密码等
db目录是所有版本控制的数据存放目录
format文件是存放当前库配置版本号的文本文件,是一个正整数
hooks目录是放置hook脚本文件的目录
locks目录是放置subversion监控锁定数据的目录,用于追踪存取文件库的客户端
查看conf目录下的文件
[root@youxi1 ~]# ls /webdept/www.youxi1.com/conf/
authz passwd svnserve.conf
说明:authz认证权限相关
passwd用户名和密码
svnserve.conf服务器配置文件
3)修改服务器配置文件
[root@youxi1 ~]# vim /webdept/www.youxi1.com/conf/svnserve.conf
anon-access = read//第19行,匿名可读
auth-access = write//第20行,认证可写
password-db = passwd//第27行,启用密码文件,默认同一目录下的passwd文件
authz-db = authz//第34行,启用认证文件,默认同一目录下的authz文件
realm = www.youxi1.com//第39行,登录提示信息
注意:此配置文件内,启用的参数开头不能存在空格
4)编辑用户密码文件
[root@youxi1 ~]# vim /webdept/www.youxi1.com/conf/passwd
admin = 123456 //在[user]模块下编辑
user = 123456
user2 = 123456
5)编辑认证权限文件
[root@youxi1 ~]# vim /webdept/www.youxi1.com/conf/authz //在[groups]模块下编辑
user_group = user,user2 //[组名] = [用户名,用户名,...] [/] []
admin=rw //[用户名] = [权限];指定用户的权限
@user_group = r //@[组名] = [权限];指定组内的用户权限
* = //* = [权限];其他用户的权限,如果权限为空则无权
6)启动SVN
[root@youxi1 ~]# svnserve -d -r /webdept/
[root@youxi1 ~]# ps aux | grep svn //查看进程
root 1912 0.0 0.0 180716 800 ? Ss 14:41 0:00 svnserve -d -r /webdept/
root 1915 0.0 0.0 112720 984 pts/0 S+ 14:42 0:00 grep --color=auto svn
[root@youxi1 ~]# ss -antup | grep svn //查看端口号
tcp LISTEN 0 7 *:3690 *:* users:(("svnserve",pid=1912,fd=3))
-d是daemon的意思,即守护进程。
-r /webdept/是启动了所有版本库,如果只想启动其中一个可以指定详细地址,例如/webdept/www.youxi1.com/。
7)如果没有关闭防火墙,并且不打算使用Apache+SVN,那么请将3690添加到防火墙规则
[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=3690/tcp
success
[root@youxi1 ~]# firewall-cmd --reload
success
[root@youxi1 ~]# firewall-cmd --permanent --zone=public --list-ports
3690/tcp
8)添加开机自启
[root@youxi1 ~]# echo "svnserve -d -r /webdept/" >> /etc/rc.local
[root@youxi1 ~]# chmod +x /etc/rc.d/rc.local
(2).svn常见使用方法
svn [子命令] [选项] [args] 这是常规使用方法。
svn help [子命令] 查看子命令的使用方法,子命令有哪些选项等。如果不跟随子命令则显示所有子命令
svn --version 查看程序的版本号和版本库访问模块。
svn --version --quiet 只查看程序的版本号。
1)常用的子命令
import 将未版本化的文件纳入版本控制并提交
checkout 从版本库中检出一个修订版
update 更新工作拷贝
add,delete,copy,move 增、删、复制、移动文件或目录
status 检查状态差异
diff 检查文件行级详细差异
revert 恢复
resolve 解决冲突
switch 切换工作拷贝对应的版本库分支
log 查看历史记录
list 显示文件目录
cat 查看某个文件内容
2)实例
导入:svn import [本地路径] [URL] [选项];其中URL可以是svn://[服务器IP地址]/[项目名],也可以是file://[绝对路径],前者从SVN服务器导入,后者从本地导入。
[root@youxi1 ~]# mkdir test/
[root@youxi1 ~]# touch test/{1,2}.html
[root@youxi1 ~]# svn import /root/test/ file:///webdept/www.youxi1.com/ -m "firest" //-m类似注释
正在增加 test/1.html
正在增加 test/2.html 提交后的版本为 1。
获取:svn checkout [URL] [本地路径];这里的URL一般是svn://[服务器IP地址]/项目名。只有第一次获取项目时使用checkout,后期使用的是update更新。
[root@youxi1 ~]# mkdir test2
[root@youxi1 ~]# svn checkout svn://192.168.5.101/www.youxi1.com/ test2/
认证领域: <svn://192.168.5.101:3690> www.youxi1.com
“root”的密码: //直接回车<Enter>切换账号
认证领域: <svn://192.168.5.101:3690> www.youxi1.com
用户名: admin //输入用户名
“admin”的密码: //输入密码 -----------------------------------------------------------------------
注意! 你的密码,对于认证域: <svn://192.168.5.101:3690> www.youxi1.com 只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。 你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?no //no,不保存
A test2/1.html
A test2/2.html
取出版本 1。
添加和提交:svn add [新增的文件或文件夹];svn commit [选项];提交必须到工作副本下,也就是checkout下载到的本地路径下
[root@youxi1 ~]# touch test2/3.html //本地创建
[root@youxi1 ~]# svn add test2/3.html //添加到SVN缓存中
A test2/3.html
[root@youxi1 ~]# svn commit -m "second" //需要移动到下载目录下
svn: E155007: “/root”不是工作副本
[root@youxi1 ~]# cd test2/
[root@youxi1 test2]# svn commit -m "second" //提交SVN缓存
认证领域: <svn://192.168.5.101:3690> www.youxi1.com
“admin”的密码: -----------------------------------------------------------------------
注意! 你的密码,对于认证域: <svn://192.168.5.101:3690> www.youxi1.com 只能明文保存在磁盘上! 如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。 你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?no
正在增加 3.html
传输文件数据.
提交后的版本为 2。
注意1:checkout导出获得文件后,导出的文件仍处于SVN版本控制中,与版本库保持关联。checkout是第一次用,后面的用法就是更新。
注意2:add向拷贝文件所在的文件夹中添加新的文件,并作标识,是新添加的。提交后该文件才会存储到中央项目仓库。
(3).SVN+Apache
1)在上面的基础上,安装httpd
[root@youxi1 ~]# yum -y install httpd
2)查看apache对SVN是否支持,以及两个动态库是否存在
[root@youxi1 ~]# vim /etc/httpd/conf.modules.d/10-subversion.conf
LoadModule dav_svn_module modules/mod_dav_svn.so //如果存在这两行,代表apache对SVN是支持的
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule dontdothat_module modules/mod_dontdothat.so
[root@youxi1 ~]# ls /etc/httpd/modules/{mod_dav_svn.so,mod_authz_svn.so}
/etc/httpd/modules/mod_authz_svn.so /etc/httpd/modules/mod_dav_svn.so //两个动态库也是存在的
3)配置Apache
[root@youxi1 ~]# vim /etc/httpd/conf.d/subversion.conf
<Location /webdept>
DAV svn
SVNParentPath /webdept //SVN根目录
AuthType Basic //BAsic认证方式
AuthName "www.youxi1.com web type" //提示信息
AuthUserFile /webdept/svn/passwd //Apache登录的用户名和密码
AuthzSVNAccessFile /webdept/svn/authz //Apache用户登录的访问权限
Require valid-user //不允许匿名用户
</LOcation>
也可以直接写入/etc/httpd/conf/httpd.conf配置文件,这个文件里调用了/etc/httpd/conf.d/目录下的.conf文件。
4)创建用户密码文件和用户访问权限文件
创建用户密码文件
[root@youxi1 ~]# htpasswd -c /webdept/svn/passwd apacheuser1 //-c创建文件
New password:
Re-type new password:
Adding password for user apacheuser1
[root@youxi1 ~]# htpasswd /webdept/svn/passwd apacheuser2 //不能有-c,否则会覆盖文件
New password:
Re-type new password:
Adding password for user apacheuser2
[root@youxi1 ~]# htpasswd /webdept/svn/passwd apacheuser3
New password:
Re-type new password:
Adding password for user apacheuser3
[root@youxi1 ~]# cat /webdept/svn/passwd
apacheuser1:$apr1$uTlyJF5s$yz5fRFK2PZGIzAwmERdq4.
apacheuser2:$apr1$jTNZIcSi$NVwEHIigLHFBmX4osrBiq/
apacheuser3:$apr1$T81c.kp5$JMPzf/R5O1I0W7JZNNUIK1
创建用户访问权限文件
[root@youxi1 ~]# vim /webdept/svn/authz
[groups]
group_name = apacheuser1,apacheuser2 //设置组
[/] //SVN根目录
apacheuser1 = rw
[www.youxi1.com:/] //第一个仓库
@group_name = rw //组权限
[www.test1.com:/] //第二个仓库
apacheuser2 = rw //单用户权限
apacheuser3 = rw
5)重启httpd,如果防火墙是开启状态,请添加防火墙端口规则
[root@youxi1 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[root@youxi1 ~]# firewall-cmd --reload
success
[root@youxi1 ~]# firewall-cmd --permanent --zone=public --list-ports
3690/tcp 80/tcp
[root@youxi1 ~]# systemctl restart httpd.service
6)测试
(4).SVN远程连接中央项目仓库时,Windows下注意点
1)checkout
这个URL可以是svn://[服务器IP地址]/[项目名],也可以是http://[IP地址]/[根目录]/[项目名]。注意:svn://要用svn的用户密码(我这里就是/webdept/www.youxi1.com/conf/passwd);http://要用http的用户密码(我这里就是/webdept/svn/passwd)
2)小图标不显示
工作区右键-->TortoiseSVN-->Settings-->Icon Overlays中Status cache选择Shell;Drive Types选择Fixed drives。Icon Set选择与系统匹配的选项。最后注销重新登录。
3)提交
右键新加的文件或文件夹-->TortoiseSVN-->Add。刷新后文件应该出现一个加号。
右键新加的文件或文件夹-->SVN Commit。文件的加号变为勾。
(5).SVN和Git的比较
SVN与Git比较的优缺点差异
CentOS7下搭建SVN服务器的更多相关文章
- Ubuntu 14.04 下搭建SVN服务器 svn://
Ubuntu 14.04 下搭建SVN服务器 svn:// 安装软件包: sudo apt-get install subversion 之后选择SVN服务文件及配置文件的放置位置.我放在了/srv下 ...
- Winxp下搭建SVN服务器
本文介绍一种在winxp下搭建SVN服务器的方法. (1) 需要下载Slik-Subversion和TortoiseSVN两个软件.我使用的版本是Slik-Subversion-1.8.3-1-win ...
- Windows和Linux环境下搭建SVN服务器
--------------------------Windows下搭建SVN服务器----------------------------- 一.安装SVN服务端 软件包Setup-Subversi ...
- ubuntu下搭建svn服务器
[ubuntu下搭建svn服务器] 1.创建目录 mkdir ~/svn/repository/ 2.创建仓库 svnadmin create repository 3.进入 repository/c ...
- Ubuntu 14.04 下搭建SVN服务器 (转载自 http://www.linuxidc.com/Linux/2015-01/111956.htm)-------------我所用到是红色字体
http://www.linuxidc.com/Linux/2015-01/111956.htm Ubuntu 14.04 下搭建SVN服务器 svn:// 安装软件包: sudo apt-get i ...
- Centos6.8下搭建SVN服务器
1.Centos6.8下搭建SVN服务器 Subversion是一个自由,开源的版本控制系统.Subversion将文件存放在中心版本库里.这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一 ...
- 转:Mac下搭建svn服务器和XCode配置svn
Mac下搭建svn服务器和XCode配置svn 先打开命令行终端. 1.创建svn repository svnadmin create /yourpath/svnroot/repository 2. ...
- 【SVN】CentOS7.0下搭建SVN服务器
SVN服务器搭建 最近接手了天赋吉运的SVN项目管理,那么学会搭建SVN服务器就成为了必须的技能.这篇文章就来讲一讲在CentOS7.0下如何搭建SVN服务器 1,下载安装SVN版本 yum inst ...
- CentOS7下搭建邮件服务器(dovecot + postfix + SSL)
CentOS 花了基本上两天的时间去配置CentOS7下的邮件服务器.其中艰辛太多了,一定得总结下. 本文的目的在于通过一系列配置,在CentOS 7下搭建dovecot + postfix + ...
随机推荐
- 【搜索/tarjan找环】zznu-简单环路
简单环路 题目描述 有一个N x M 大小的地图,地图中的每个单元包含一个大写字母. 若两个相邻的(这里的相邻指“上下左右”相邻)点上的字母相同,我们可以用线段连接这两个点. 若存在一个包含同一字母的 ...
- .NET Core 初体验
.NET Core 作为微软的开源项目,neter 们对之的期待还是挺大的. 以前也看过,接触过,摸索建了几个示例项目,今天就罗列下自己的初体验. .NET Core 安装.帮助等 安装的话,直接官网 ...
- el-input maxlength 不限制长度
背景: 小鱼最近使用 input输入框时想限制输入的长度, type = "number" 时,限制的长度无效,代码如下 <el-input v-model="fo ...
- vue 用户登录 路由拦截 vuex cookie
功能: // 页面跳转后发送ajax请求给后端 请求详细信息 //点击课程推荐跳转到推荐课程详细 // 页面刚加载立即执行函数 = mounted <template> <div&g ...
- git 廖雪峰博客笔记
其他参考 http://www.softwhy.com/article-8498-1.html 本地模拟多用户来学习 参考 其实就是克隆两个目录,两个目录的git config 不同的名字和邮箱, ...
- 第三次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 第一周 Requests库的爬 ...
- sparkStreaming 读kafka的数据
目标:sparkStreaming每2s中读取一次kafka中的数据,进行单词计数. topic:topic1 broker list:192.168.1.126:9092,192.168.1.127 ...
- 三十七.MySQL视图 MySQL存储过程
1.视图的基本使用 把/etc/passwd文件的内容存储到db9库下的user表里 添加新字段id 存储记录的行号(在所有字段的前边) 创建视图v1 结构及数据user表的字段.记录一样. 创建视图 ...
- 前端利用webuploader实现超大文件分片上传、断点续传
本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...
- Linux下SSH命令使用方法详解(摘自网络)
备注:检查自己的linux系统中是否已经安装了某一些软件的命令: rpm -qa | grep 软件名 例如 rpm -qa | grep vsftpd 1.查看SSH客户端版本 有的时候需要确认 ...