一、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
评论区