CentOS7下搭建SVN服务器

(1).安装SVN

 1)安装SVN

[[email protected] ~]# yum -y install subversion mod_dav_svn
[[email protected] ~]# 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)创建目录

[[email protected] ~]# mkdir /webdept  //创建存放版本库的主目录
[[email protected] ~]# svnadmin create /webdept/www.youxi1.com  //创建两个版本库
[[email protected] ~]# svnadmin create /webdept/www.test1.com

  注意:svnadmin是由subversion软件包提供。

  查看版本库内的文件和文件夹

[[email protected] ~]# ls /webdept/www.youxi1.com/
conf  db  format  hooks  locks  README.txt

  说明:conf目录是这个版本仓库的配置文件,存放访问仓库的用户账号、权限、密码等

     db目录是所有版本控制的数据存放目录

     format文件是存放当前库配置版本号的文本文件,是一个正整数

     hooks目录是放置hook脚本文件的目录

     locks目录是放置subversion监控锁定数据的目录,用于追踪存取文件库的客户端

  查看conf目录下的文件

[[email protected] ~]# ls /webdept/www.youxi1.com/conf/
authz  passwd  svnserve.conf

  说明:authz认证权限相关

     passwd用户名和密码

     svnserve.conf服务器配置文件

 3)修改服务器配置文件

[[email protected] ~]# 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)编辑用户密码文件

[[email protected] ~]# vim /webdept/www.youxi1.com/conf/passwd
admin = 123456  //在[user]模块下编辑
user = 123456
user2 = 123456

 5)编辑认证权限文件

[[email protected] ~]# vim /webdept/www.youxi1.com/conf/authz  //在[groups]模块下编辑
user_group = user,user2  //[组名] = [用户名,用户名,...]

[/]  []
admin=rw  //[用户名] = [权限];指定用户的权限
@user_group = r  //@[组名] = [权限];指定组内的用户权限
* =  //* = [权限];其他用户的权限,如果权限为空则无权

 6)启动SVN

[[email protected] ~]# svnserve -d -r /webdept/
[[email protected] ~]# 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
[[email protected] ~]# 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添加到防火墙规则

[[email protected] ~]# firewall-cmd --permanent --zone=public --add-port=3690/tcp
success
[[email protected] ~]# firewall-cmd --reload
success
[[email protected] ~]# firewall-cmd --permanent --zone=public --list-ports
3690/tcp

 8)添加开机自启

[[email protected] ~]# echo "svnserve -d -r /webdept/" >> /etc/rc.local[[email protected] ~]# 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服务器导入,后者从本地导入。

[[email protected] ~]# mkdir test/
[[email protected] ~]# touch test/{1,2}.html
[[email protected] ~]# 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更新。

[[email protected] ~]# mkdir test2
[[email protected] ~]# 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下载到的本地路径下

[[email protected] ~]# touch test2/3.html  //本地创建
[[email protected] ~]# svn add test2/3.html  //添加到SVN缓存中
A         test2/3.html
[[email protected] ~]# svn commit -m "second"  //需要移动到下载目录下
svn: E155007: “/root”不是工作副本
[[email protected] ~]# cd test2/
[[email protected] 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

[[email protected] ~]# yum -y install httpd

 2)查看apache对SVN是否支持,以及两个动态库是否存在

[[email protected] ~]# 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
[[email protected] ~]# 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

[[email protected] ~]# 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)创建用户密码文件和用户访问权限文件

  创建用户密码文件

[[email protected] ~]# htpasswd -c /webdept/svn/passwd apacheuser1  //-c创建文件
New password:
Re-type new password:
Adding password for user apacheuser1
[[email protected] ~]# htpasswd /webdept/svn/passwd apacheuser2  //不能有-c,否则会覆盖文件
New password:
Re-type new password:
Adding password for user apacheuser2
[[email protected] ~]# htpasswd /webdept/svn/passwd apacheuser3
New password:
Re-type new password:
Adding password for user apacheuser3
[[email protected] ~]# cat /webdept/svn/passwd
apacheuser1:$apr1$uTlyJF5s$yz5fRFK2PZGIzAwmERdq4.
apacheuser2:$apr1$jTNZIcSi$NVwEHIigLHFBmX4osrBiq/
apacheuser3:$apr1$T81c.kp5$JMPzf/R5O1I0W7JZNNUIK1

  创建用户访问权限文件

[[email protected] ~]# 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,如果防火墙是开启状态,请添加防火墙端口规则

[[email protected] ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
success
[[email protected] ~]# firewall-cmd --reload
success
[[email protected] ~]# firewall-cmd --permanent --zone=public --list-ports
3690/tcp 80/tcp
[[email protected] ~]# 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。文件的加号变为勾。

原文地址:https://www.cnblogs.com/diantong/p/11142649.html

时间: 2024-11-07 18:20:07

CentOS7下搭建SVN服务器的相关文章

linux下搭建SVN服务器

最近搞了一台云服务器,尝试部署一些服务器相关的东西,作为开发用服务器,首先考虑搭建的是SVN服务器.记录一下搭建的过程,方便以后查看. 一.安装svn软件,有些云服务器会有安装svn服务器,有些没有. # yum install -y subversion                        //在线安装svn # svnserve --version                                  //检查svn版本 二.创建svn版本库 1.创建一个项目的版本目录

Mac下搭建svn服务器和XCode配置svn

http://www.cnblogs.com/iihe602/p/3277735.html Mac下搭建svn服务器和XCode配置svn 分类: iOS2013-01-14 14:36 5781人阅读 评论(0) 收藏 举报 先打开命令行终端. 1.创建svn repository svnadmin create /yourpath/svnroot/repository 2.配置svn用户权限. / yourpath /svnroot/repository/conf/目录下存在3个文件: au

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 install subversion 之后选择SVN服务文件及配置文件的放置位置.我放在了/srv下的svn目录. cd /srv sudo mkdir svn 我的svn版本仓库叫tone_src cd /srv/svn sudo mkdir tone_src 目录建好后 创建版本仓库 sudo s

Centos6.8下搭建SVN服务器

1.Centos6.8下搭建SVN服务器 Subversion是一个自由,开源的版本控制系统.Subversion将文件存放在中心版本库里.这个版本库很像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况.这样就可以籍此将数据恢复到以前的版本,并可以查看数据的更改细节.Subversion是Apache基金会下的一个项目,官网 https://subversion.apache.org/ . 2.安装 yum -y install subversion 3.创建SVN版本库 m

Linux下搭建SVN服务器及自动更新项目文件到web目录(www)的方法

首先搭建SVN服务器 1,安装SVN服务端 直接用apt-get或yum安装subversion即可(当然也可以自己去官方下载安装) sudo apt-get install subversion 2,创建版本库 svnadmin create /home/myrepos    //这里的文件目录自己随便设置 3,配置svnserve 上述版本库/home/myrepos建立后在文件夹下会生成conf文件夹,进入/home/myrepos/conf下面会有下面3个文件 authz passwd 

在Centos7下搭建Git服务器

简介 Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. Torvalds 开始着手开发 Git 是为了作为一种过渡方案来替代 BitKeeper,后者之前一直是 Linux 内核开发人员在全球使用的主要源代码工具. 开放源码社区中的有些人觉得BitKeeper

CentOS7下搭建邮件服务器(dovecot + postfix + SSL)

CentOS 花了基本上两天的时间去配置CentOS7下的邮件服务器.其中艰辛太多了,一定得总结下. 本文的目的在于通过一系列配置,在CentOS 7下搭建dovecot + postfix + SSL 服务器,并且能够通过邮件客户端(本文中是Airmail)进行收发邮件. 前提条件 你得有个主机或者VPS 你有一个主域名比如 fancycoding.com 还有一个二级域名比如 mail.fancycoding.com 二级域名的 SSL 证书. 配置你的DNS记录 确认主域名有A记录指向服务

Mac下搭建SVN服务器教程

本文档借助前人成果的基础上,经过自己修改测试之后记录. 文档中username为mac机的用户名称 1.        若你的机器是首次进行svn的搭建创建svn目录. 在终端中输入:mkdir /Users/username/svn 回车(若有提示,很有可能你的电脑已经存在了svn文件夹,若你不使用,可将其删除再重新运行上面命令) 2.        创建svn repository 在终端中输入:svnadmin create /Users/username/svn/repository 3

ubuntu 下搭建svn服务器,以及自动更新到web服务器。

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">在网上找了很多的教程,但是试了很多个.写的都是略微粗糙,也有很多问题.整了三天终于是搞定了.我在这整理下,发上来给大家看看.希望有相同需求的道友少走些弯路.大家有什么问题可以在下面留言.</span> <span style="font-family: Ari