SubVersion版本控制

源自《Linux 运维之道》丁一明编著 一书的总结web

三种访问方式数据库

功能apache

Apache+DAVubuntu

Svnservevim

Svnserve+SSH浏览器

认证安全

http基本认证、LDAP服务器

支持md5session

Ssh认证运维

权限

对版本总体设置,也能够指定设置权限

客队版本总体设置权限,也能够指定目录

仅对版本库总体设置权限

加密

支持ssl加密

支持ssh加密

日志

完善的apache日志

速度

设置

相对复杂

简单

相对简单

安装:

[root@localhost tcpcliserv]# yum -y install subversion

建立版本库,利用svnadmin工具

svnadmin:命令create 建立一个新的版本库

hotcopy 版本库热备份

lslocks 打印全部的锁

[root@localhost tcpcliserv]# mkdir /var/svn

[root@localhost tcpcliserv]# svnadmin create /var/svn/web_project

[root@localhost tcpcliserv]# mkdir /var/web_code

[root@localhost tcpcliserv]# touch /var/web_code/test

[root@localhost tcpcliserv]# svn import /var/web_code/ file:///var/svn/web_project/ -m "Initial Data"

Adding /var/web_code/test

Committed revision 1.

[root@localhost tcpcliserv]# svn list file:///var/svn/web_project

test

创建有效的认证机制以加强版本数据库的安全性

[root@localhost tcpcliserv]# vim /var/svn/web_project/conf/authz

[root@localhost tcpcliserv]# vim /var/svn/web_project/conf/passwd

[root@localhost tcpcliserv]# vim /var/svn/web_project/conf/svnserve.conf

[root@localhost tcpcliserv]# svnserve -d -r /var/svn/

其中authz文件,添加内容

[groups]

admins=harry,sally #定义组,组成员有harry和sally

[/] #对版本库根路径设置权限,能够设置为须要控制的路径

@admins=rw #admins组中的用户可读、可写权限

*=r #其余全部的人只读,权限能够设置为’r’只读,读写’rw’、无权限’ ‘

Passwd添加内容

[users]

harry = 123

sally = 123

svnserve.conf添加内容

[general]

anon-access=none

auth-access=write

password-db=passwd

authz-db=authz

real=My First Repository

启动服务器相应的进程

启动svnserve服务

-d 以守护进程方式运行svnserve

--listen-port=port 指定监听的端口,默认监听端口号为3690

-r root 为版本库指定一个虚拟路径,默认客户端要指定绝对路径访问库

[root@localhost tcpcliserv]# svnserve -d -r /var/svn/

Svn服务默认监听端口3690,注意要设置。同时要注意在authz文件中为目录设置权限,路径应该为[web_project:/]。

客户端访问

root@ubuntu:/home/tempal# svn co svn://192.168.118.253/project1 mine

svn: No repository found in 'svn://192.168.118.253/project1'

root@ubuntu:/home/tempal# svn co svn://192.168.118.253/web_project mine

认证领域: <svn://192.168.118.253:3690> f2093f5e-85b5-4222-ae8e-c7d091ab3536

“root”的密码:

认证领域: <svn://192.168.118.253:3690> f2093f5e-85b5-4222-ae8e-c7d091ab3536

用户名: harry

“harry”的密码:

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

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

<svn://192.168.118.253:3690> f2093f5e-85b5-4222-ae8e-c7d091ab3536

只能明文保存在磁盘上! 若是可能的话,请考虑配置你的系统,让 Subversion

能够保存加密后的密码。请参阅文档以得到详细信息。

你能够经过在“/root/.subversion/servers”中设置选项“store-plaintext-passwords”为“yes”或“no”,

来避免再次出现此警告。

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

保存未加密的密码(yes/no)? yes

A mine/test

取出版本 1。

root@ubuntu:/home/tempal#

image

命令:

svn命令:客户端命令行工具

Svnlook命令:subversion检查工具

[root@localhost tcpcliserv]# svnlook author /var/svn/web_project/

Root

Svnserve+SSH服务器。

客户端须要使用ssh程序链接远程服务器的sshd服务,经过ssh认证机制验证帐户身份后,再自动启动svnserve服务。因此服务器端不须要提早启动svn服务。

[root@localhost tcpcliserv]# mkdir /var/code2

[root@localhost tcpcliserv]# touch /var/code2/test

[root@localhost tcpcliserv]# svnadmin create /var/svn/web_project2

[root@localhost tcpcliserv]# svn import /var/code2 file://var/svn/web_project2 -m "Web code"

svn: Unable to open an ra_local session to URL

svn: Local URL 'file://var/svn/web_project2' contains unsupported hostname

[root@localhost tcpcliserv]# svn import /var/code2 file:///var/svn/web_project2 -m "Web code"

Adding /var/code2/test

在客户端访问

Committed revision 1.

[root@localhost tcpcliserv]# service sshd start

[root@localhost tcpcliserv]# chkconfig sshd on

image

Apache+SVN服务器搭建

虽然前面两种服务器已经知足多数人的使用需求,但当客户端没有任何工具可使用时,咱们还能够建立基于Apache的SVN服务器,这样只要客户端有浏览器就能够访问版本库服务器。使用Apache Web Server访问版本库须要加载mod_dav和mod_dav_svn模块。

[root@localhost tcpcliserv]# gedit /etc/httpd/conf.d/subversion.conf

[root@localhost tcpcliserv]# chown -R apache.apache /var/svn

[root@localhost tcpcliserv]# chcon -R -t httpd_sys_content_t /var/svn

[root@localhost tcpcliserv]# htpasswd -c /var/svn/.pass jerry

New password:

Re-type new password:

Adding password for user jerry

[root@localhost tcpcliserv]# service httpd start

Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName

[ OK ]

[root@localhost tcpcliserv]# chkconfig httpd on

更改的/etc/httpd/conf.d/subversion.conf 内容以下:为了让Apache Web Server能够读取SVN版本中的数据,要确保mod_dav和mod_authz_svn两个模块会被加载。

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

#添加内容

<Location /svn>

#当用户的URL是以/svn开始(http://hostname/svn/...),Apache会将控制权交给DAV处理

DAV svn

SVNParentPath /var/svn

#经过SVNParentPath指定全部版本库的主目录(发布全部的版本库)

# Limit write permission to list of valid users.

# Require SSL connection for password protection.

# SSLRequireSSL

AuthType Basic #Apache认证方式

AuthName "Authorization Realm"#提示字符

AuthUserFile /var/svn/.pass#帐户文件路径,为了安全,应该隐藏该文件

Require valid-user#设置仅为有效用户能够访问

</Location>

#除了上面两个模块,还要确保/etc/httpd/conf/httpd.conf文件中dav_module模块也会被加载

# Example configuration to enable HTTP access for a directory

# containing Subversion repositories, "/var/www/svn". Each repository

# must be both:

#

# a) readable and writable by the 'apache' user, and

#默认Apache的启动用户为apache,因此须要apache用户对版本库有读写权限

# b) labelled with the 'httpd_sys_content_t' context if using

#若是开启了SELinux,这版本库目录须要有httpd_sys_content_t安全上下文标签。

# SELinux

#

#

# To create a new repository "http://localhost/repos/stuff" using

# this configuration, run as root:

#

# # cd /var/www/svn

# # svnadmin create stuff

# # chown -R apache.apache stuff

# # chcon -R -t httpd_sys_content_t stuff

#

#<Location /repos>

# DAV svn

# SVNParentPath /var/www/svn

#

# # Limit write permission to list of valid users.

# <LimitExcept GET PROPFIND OPTIONS REPORT>

# # Require SSL connection for password protection.

# # SSLRequireSSL

#

# AuthType Basic

# AuthName "Authorization Realm"

# AuthUserFile /path/to/passwdfile

# Require valid-user

# </LimitExcept>

#</Location>

 

image

image

相关文章
相关标签/搜索