linux安装svn(非apache集成)
svn支持三种方式的安装,分别是:svnserve服务器、穿越ssh隧道的svnserve服务器、Apache的HTTP服务器。
三种服务器的选择(建议下载一本svnbook查看,在第六章服务配置中有详细描述):
①svnserve服务器:
优点: 设置快速简单;网络协议是有状态的,比WebDAV快很多;不需要在服务器创建系统账号;不会在网络传输密码。
缺点:没有任何类型的日志,甚至是错误;没有内置的web浏览(必须单独安装WEB服务器,以及版本库浏览软件,来增加此功能)
②穿越ssh隧道的svnserve服务器:
优点:网络协议是有状态的,比WebDAV快很多;你可以利用现在的SSH账号和用户基础;所有网络传输是加密的。
缺点:没有一个认证方法可以选择;没有任何类型的日志,甚至是错误;需要用户在同一个系统组,或者使用共享SSH密钥;如果使用不正确,会导致文件权限问题。
③Apache的HTTP服务器
优点:允许 Subversion 使用已经集成到 Apache 的多种用户认证系统;不需要在服务器创建系统帐号;完全的 Apache 日志;网络传输可以通过SSL加密;HTTP(S) 通常可以穿越公司防火墙;内置通过浏览器访问版本库;版本库可以作为网络磁盘加载,实现透明的版本控制;
缺点:比svnserve慢很多,因为HTTP是无状态的协议,需要更多的传递;初始设置可能复杂。
在这里讲解一下配置svnserve服务器,即第一种模式,如下:
一、下载svn工具包。
在这里搭建svnserve服务器,需要两个支持包,分别是:subversion-1.6.19.tar.gz 和 subversion-deps-1.6.19.tar.gz
下载地址为:http://subversion.apache.org/download/ ,在这个页面开始是最新版本的svn。我们这里用下面的1.6版本svn。
二、将tar包上传服务器并解压安装。
①将subversion-1.6.*.tar.gz 和 subversion-deps-1.6.*.tar.gz上传到服务器。
②解压,请按照描述的过程解压:
a、首先解压subversion包:tar -zxvf subversion-1.6.*.tar.gz
b、再次解压subversion-deps包:tar -zxvf subversion-deps-1.6.*.tar.gz
注意:subversion包 和 subversion-deps包需要解压到同一个目录中,这是解压过程中特别需要注意的。并且需要先解压subversion包,然后再解压 subversion-deps包。
三、编译安装。
①预编译:./configure --prefix=/usr/local/svn --without-berkeley-db --with-zlib=/usr/local/zlib(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)
②编译安装:make && make install。
四、测试安装是否成功。
运行指令:/usr/local/svn/bin/svn --version。这时如果成功的话,提醒如下信息:
svn,版本 1.6.19 (r1383947)
可使用以下的版本库访问模块:
* ra_neon : 通过 WebDAV 协议使用 neon 访问版本库的模块。
- 处理“http”方案
* ra_svn : 使用 svn 网络协议访问版本库的模块。 - 使用 Cyrus SASL 认证
- 处理“svn”方案
* ra_local : 访问本地磁盘的版本库模块。
- 处理“file”方案
* ra_serf : 通过 WebDAV 协议使用 serf 访问版本库的模块。
- 处理“http”方案
- 处理“https”方案
五、配置一个svn工作目录,并设置登陆账号、密码以及权限。
①建立工作目录库,可以建立多个。如下:mkdir -p /opt/svndata/test1 (mkdir -p /opt/svndata/test2)
②建立版本库,如下:/usr/local/svn/bin/svnadmin create /opt/svndata/test1 (/usr/local/svn/bin/svnadmin create /opt/svndata/test2)
创建完成后,查看目录下(即/opt/svndata/test1下)都是有那些目录和文件如下:conf db format hooks locks README.txt
③进入conf文件夹,设置svnserve的配置文件、用户密码以及用户权限
a、编辑svnserve.conf(svnserve配置文件):vi svnseve.conf;内容修改为:
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
realm = test1
注意: password-db = passwd; authz-db = authz;就是指与svnserve.conf同一目录下的passwd和authz文件(相对路径)
b、编辑passwd,添加用户和密码:vi passwd;对用户配置文件的修改立即生效,不必重启svn。文件格式如下:
[users]
<用户1> = <密码1>
<用户2> = <密码2>
其中,[users]是必须的。下面列出要访问svn的用户,每个用户一行。示例:
[users]
alan = password
king = hello
c、编辑authz,设置用户权限;注意:
* 权限配置文件中出现的用户名必须已在用户配置文件中定义。
* 对权限配置文件的修改立即生效,不必重启svn。用户组格式:
[groups]
<用户组名> = <用户1>,<用户2>
其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔。版本库目录格式:
[<版本库>:/项目/目录]
@<用户组名> = <权限>
<用户名> = <权限>
其中,方框号内部分可以有多种写法: /,表示根目录及以下。根目录是svnserve启动时指定的,我们指定为/opt/svndata。这样,/就是表示对全部版本库设置权限。
test1:/,表示对版本库1设置权限
test2:/occi, ,表示对版本库2中的occi项目设置权限
test2:/occi/aaa, ,表示对版本库2中的occi项目的aaa目录设置权限 权限主体可以是用户组、用户或*,用户组在前面加@,*表示全部用户。权限可以是w、r、wr和空,空表示没有任何权限。示例:
[groups]
admin = alan[/]
@admin = rw[repos1:/occi/aaa]
king = rw[repos2:/pass]
king =
④启动svn
建立启动svn的用户:
useradd svn
passwd svn
根据提示为用户svn设置密码允许用户svn访问版本库:
chown –R svn:svn /opt/svndata
chown –R svn:svn /usr/local/svn
启动svn:
su - svn -c "/usr/local/svn/bin/svnserve -d --listen-port 9999 -r /opt/svndata"
其中:
su – svn表示以用户svn的身份启动svn
-d表示以daemon方式(后台运行)运行
--listen-port 9999表示使用9999端口,可以换成你需要的端口。默认端口为:3690。
⑤查看运行:ps aux|grep svn;
查看端口监听:netstat -tunlp | grep svn
⑥配置防火墙,如果不配置防火墙,是无法访问的。
配置文件在:/etc/sysconfig/iptables。具体详见iptables配置这一章。
配置完成后,需要重启:service iptables restart
⑦在linux中测试连接:/usr/local/svn/bin/svn checkout svn://localhost/test1。这是会让你输入linux登陆用户密码,然后输入svn登陆用户,再就是输入密码,最后确定是否保存。
⑧采用svn客户端,连接配置启动的svn服务器,地址:svn://address:port/directory
例如:svn://127.0.0.1:3690/test1 连接成功
再次配置完成。