目 录CONTENT

文章目录

SVN版本控制服务

简中仙
2020-07-01 / 0 评论 / 0 点赞 / 22 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-02-08,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

一、SVN基本操作

1、软件安装

# yum -y install subversion httpd mod_dav_svn
#  cat /etc/services | grep svn
svn             3690/tcp                        # Subversion
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、创建版本库目录

# mkdir /webdept
# svnadmin create /webdept/www.backup01.com
# svnadmin create /webdept/www.backup02.com
# ls /webdept/www.backup01.com/
conf  db  format  hooks  locks  README.txt
目录说明
dav目录提供apache与mod_dav_svn使用的目录
db目录所有版本控制的数据存放文件
hooks目录放置hook脚本文件
locks目录放置subversion监控锁定数据的目录,用来追踪存取文件库的客户端
format文件是一个文本文件,里面只放了一个整数。表示当前文件库配置的版本号
conf目录是这个仓库的配置文件(仓库的用户访问账号、权限等)
# ls /webdept/www.backup01.com/conf/
authz  passwd  svnserve.conf       //authz:认证权限相关;passwd:用户名和密码;svnserve.conf:服务器配置文件

3、针对不同版本库修改配置文件

# vim /webdept/www.backup01.com/conf/svnserve.conf       //修改配置文件
anon-access = read       //匿名用户可以读(none:匿名用户不可以访问)
auth-access = write       //认证用户可以写(read,write,none)
password-db = passwd       //密码库文件,默认使用的是同一目录下的passwd文件作为用户密码库
authz-db = authz       //认证权限文件
realm = www.backup01.com       //登陆提示信息

注意:此配置文件的所有内容必须顶格,否则会报错

4、配置用户和密码及认证权限

# vim /webdept/www.backup01.com/conf/passwd
[users]
zhangsan = 123456
lisi = 123456
wangwu = 123456
# vim /webdept/www.backup01.com/conf/authz
[groups]
Check = zhangsan,lisi       //定义组,在[groups]下面添加
[/]       ///表示我当前所在版本库目录,这里代表www.backup01.com
wangwu = rw       
@Check = r       //@Check表示这个组的权限
* =       //除了上面的有赋予权限成员之外,其他的成员都没有权限

5、服务SVN启动及创建测试代码

# svnserve -d -r /webdept/       //启动了所有版本库
#  ps -aux | grep svn
root      11731  0.0  0.0 197812  1040 ?        Ss   16:19   0:00 svnserve -d -r /webdept/
root      11739  0.0  0.0 112824   980 pts/0    S+   16:19   0:00 grep --color=auto svn
# netstat -antup | grep svn
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      11731/svnserve      
# mkdir localsvn
# cd localsvn/
# touch 1.html 2.html
# cd
# svn import /root/localsvn/ file:///webdept/www.backup01.com/ -m "first edit"       //本地导入代码,使用file,仅仅能在服务器本地导入,首次加入代码使用import
正在增加       localsvn/1.html
正在增加       localsvn/2.html

提交后的版本为 1。
# svn checkout svn://192.168.1.10/www.backup01.com/downsource
认证领域: <svn://192.168.1.10:3690> www.backup01.com
“root”的密码: 
认证领域: <svn://192.168.1.10:3690> www.backup01.com
用户名: zhangsan
“zhangsan”的密码: 

-----------------------------------------------------------------------

注意!  你的密码,对于认证域:

   <svn://192.168.1.10:3690> www.backup01.com

只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?n
A    downsource/1.html
A    downsource/2.html
取出版本 1。

6、代码添加

# cd downsource/
# touch 5.html
# svn add 5.html
A         5.html
# svn commit -m "second edit"
认证领域: <svn://192.168.1.10:3690> www.backup01.com
“wangwu”的密码:        //只有wangwu拥有上传权限

-----------------------------------------------------------------------
注意!  你的密码,对于认证域:

   <svn://192.168.1.10:3690> www.backup01.com

只能明文保存在磁盘上!  如果可能的话,请考虑配置你的系统,让 Subversion
可以保存加密后的密码。请参阅文档以获得详细信息。

你可以通过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,
来避免再次出现此警告。
-----------------------------------------------------------------------
保存未加密的密码(yes/no)?n
正在增加       5.html
传输文件数据.
提交后的版本为 2。

二、SVN+Apache

1、查看apache对svn模块的支持

# vim /etc/httpd/conf.modules.d/10-subversion.conf 
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
LoadModule dontdothat_module  modules/mod_dontdothat.so
# ls /etc/httpd/modules/mod_dav_svn.so
/etc/httpd/modules/mod_dav_svn.so
# ls /etc/httpd/modules/mod_authz_svn.so 
/etc/httpd/modules/mod_authz_svn.so

2、配置apache支持svn

# vim /etc/httpd/conf.d/subversion.conf
<Location /webdept>
   DAV svn                     
   SVNParentPath /webdept       //svn根目录
      AuthType Basic       //Basic认证方式
      AuthName "www.backup01.com website Dept"       //认证显示信息,提示信息    
      AuthUserFile /webdept/svn/passwd       //用户密码文件
      AuthzSVNAccessFile  /webdept/svn/authz       //访问控制权限文件
      Require valid-user       //要求正式用户,不能匿名
</Location>

3、创建用户passwd文件

# mkdir /webdept/svn
# htpasswd -c /webdept/svn/passwd user1       //第一次用c,创建
New password: 
Re-type new password: 
Adding password for user user1
# htpasswd /webdept/svn/passwd user2       //之后不能用-c,否则会覆盖
New password: 
Re-type new password: 
Adding password for user user2
# htpasswd /webdept/svn/passwd user3
New password: 
Re-type new password: 
Adding password for user user3
# cat /webdept/svn/passwd
user1:$apr1$rHOgr4Lq$x5nvEOB.E2k0HVajJcS9o1
user2:$apr1$gSr.NbdB$nUt8uXM6RpCeBntI0lMfD0
user3:$apr1$TA1A9HXo$JFQ2E2pBT5Y.vqE74iA8C0

4、创建权限authz文件

# vim /webdept/svn/authz
[groups]
all = user1,user2
[/]       //“/”表示所有仓库的根目录下
#user1 = rw
[www.backup01.com:/]       //第一个仓库,user1和user2可以读写
@all = rw
[www.backup02.com:/]       //第二个仓库目录,user2和user3可以读写
User2 = rw
User3 = rw

5、启动服务测试

# systemctl restart httpd

在这里插入图片描述

在这里插入图片描述

0

评论区