CentOs下安装SVN

本文详细介绍如何在CentOS系统上安装及配置Subversion (SVN),包括使用yum安装方式、Apache配置步骤以及SVN仓库的创建过程。还介绍了如何进行用户权限管理,确保项目的高效版本控制。
 

1.SVN简介
由于前些年在版本的管理上采用的都是CVS系统,总体上而言还是很优秀的,经过了多年
的项目开发管理经历,在使用CVS系统在管理中大型的软件项目时还是遇到了很多不可克服的
缺陷和局限性,主要表现在如下的几个方向:
    1. 无法进行文件名称的修改活动,这样一来就会导致必须先删除该文件再上传,丢失了
       历史信息,要不就必须到服务上将xxx,v文件进行改名(我采用这种方法,不过总是
       找管理员太不方便了);
    2. 目录名称没有被管理,这样就不能进行改名等动作,其实项目的目录结构对于项目的
       成功起了非常重要的作用,每次也只能到服务器上进行修改;
    3. 项目的分支代价太高,需要对每一个文件都进行标记,对于大的项目耗时太长,并且
       基本上不能删除废弃了的分支和标记,因为那样很容易导致项目仓库的损坏,我就遇
       到了好多次这种让人发狂的情况;
    4. 对于文件二进制和文本的处理经常会出现混乱,结果就使将二进制文件当作文本上传
       后内容被扩展导致丢失,因为有些时候二进制文件的扩展名和某些文本文件的扩展名
       相同了,所以导致CVS识别就会出错。


      可以安装并配置subversion(简称svn)系统,使用svn来替换CVS系统,以解决上述问题。

      Subversion有两种运行方式,一种是基于Apache Http Server另外一种是Subversion Standalone Server。下面我讲解的是基于Apache Http Server的Subversion,这样做几个好处
A.能使用WebDAV协议。
B.能使用浏览器作为客户端工具浏览源码仓库。
C.可以很容易的支持到SSPI(Windows域认证)和LDAP(AD?),这些都是Apache本身就支持的。
D.能得到比较完善的Apache安全认证系统,比如SSL加密连接。

2.svn安装
安装系统
:CentOS
安装方式:yum install(这种方式比较简单,如果用源码安装容易产生版本兼容的问题)
建议
      最好将svn系统安装在Linux操作系统环境下,这样一来系统比较的稳定可靠,同时也可以减少很多的病毒和攻击的服务器日常维护工作量,我将svn安装在了CentOS的服务器版本下。

安装:

           yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql

确定已经安装了svn模块:mod_dav_svn
           #cd /etc/httpd/modules
           #ls | grep svn
             mod_authz_svn.so
             mod_dav_svn.so


如果要确认是否成功的安装了svn可以通过如下的命令进行验证:
           svn --version

显示如下,表示正常:

svn, version 1.1.4 (r13838)
   compiled Aug 21 2005, 20:56:55

Copyright (C) 2000-2004 CollabNet.
Subversion is open source software, see 
http://subversion.tigris.org/
This product includes software developed by CollabNet (http://www.Collab.Net/).

The following repository access (RA) modules are available:

* ra_dav : Module for accessing a repository via WebDAV (DeltaV) protocol.
  - handles 'http' schema
  - handles 'https' schema
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' schema
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' schema

 

3.apache的配置
配置/etc/httpd/conf/httpd.conf
(httpd的安装目录,一般是/etc/httpd或/usr/local/appache2)
进入到/etc/conf目录下用vim打开httpd.conf配置文件进行选项的修改:
            a. KeepAlive选项(可选)
               该选项可以修改也可以不修改,主要是为了提高http协议访问的性能,可以
               使得svn仓库的访问更快,KeepAlive表示可以保持http的永久性TCP连接,
               省去了每次都需要进行重建TCP连接的巨大开销,找到如下几个选项并修改:
                  KeepAlive On
                  MaxKeepAliveRequests 100
                  KeepAliveTimeout 15
             b. ServerAdmin/ServerName选项(可选)
                对于需要对系统进行管理的可以在ServerAdmin选项设置成为管理员的email
                地址,这样在出现问题时apache会自动发送邮件到该地址中;而ServerName
                必须设置为本服务器的域名,如xxx.xxx.cn:80。

       为了使客户端能够通过Apache来访问SVN档案库,Apache需要加载一个特殊的模块mod_dav_svn。如果您的Apache是按照与预设目录安装的,mod_dav_svn 模块应该会安装在 Apache 安装位置 (默认路径是 /usr/local/apache2) 的 modules 子目录内。同时在Apache的配置文件httpd.conf(默认路径为/usr/local/apache2/conf)中已经使用LoadModule指令加载了该模块(如果没有,请手动添加)LoadModule 指令的语法很简单, 就是将一个具名模块对映到共享链接库在磁盘上的位置: 
LoadModule dav_svn_module     modules/mod_dav_svn.so
注意这个指令必须出现在其它的 Subversion 相关指令之前。
还要加载mod_authz_svn.so模块
如图:

测试Apache是否可以正常启动:

       #vim /etc/httpd/conf/httpd.conf -- Edit what you need and save the file
       #service httpd start
       #chkconfig httpd on
在浏览器中访问:
http://localhost, 如果能看到Apache的页面,则说明Apache已经正常启动。

Apache命令:
       启动:apachectl -k start
       关闭:apachectl -k stop
       重启:apachectl -k restart
       查看日志:tail -f /etc/httpd/logs/error-log

4.svn的配置
进入到/etc/httpd/conf.d目录下用vim打开subversion.conf配置文件进行选项的
修改:
a. module的配置
一定要保证下面的两句话存在于配置文件中,否则无法在如svn的模块,就
无法访问svn的仓库了:
               LoadModule dav_svn_module     modules/mod_dav_svn.so
               LoadModule authz_svn_module   modules/mod_authz_svn.so

b. 仓库目录配置
项目仓库就是用于存放项目目录结构的服务器目录,一般情况下Linux的规则时间容易变化的内容存放在/var目录下,所以我们需要在/var目录下创建一个svn目录,这样所有的项目的根目录都作为/var/svn/目录下的一级子目录了,这样以来就可以在一个仓库目录下存放多个项目了。
              
下面将使用myapp这个仓库来配置Subversion

mkdir -p /var/svn
 
cd /var/svn
 
# svnadmin create myapp
 
chown -R apache.apache myapp
 
# vi /etc/httpd/conf.d/subversion.conf

加入以下配置

LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so
 
<Location /svn>
DAV svn
SVNParentPath /var/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 /var/svn/passwd
Require valid-user
#   </LimitExcept>
</Location>

 下面建立可访问用户文件

# htpasswd -c /var/svn/passwd justin

要增加用户,则使用下面命令

# htpasswd /var/svn/passwd other

重起Apache

# service httpd restart
另一种方式的配置:

   
Step1) 建立存储库
 svnadmin create  / home / svn - repos
 
Step2)开始配置
 vi /home/svn-repos/conf/svnserve.conf
修改svnserve.conf
最终该文件如下:
  [general]  anon - access  =   read  auth - access  =   write  password - db  =   passwd
 
上面的意思是可以匿名读,但写入必须要有权限,权限配置在passwd文件中
 
 vi /home/svn-repos/conf/passwd
修改passwd文件
最终该文件如下:
[users]  weip = 123
 
Step3) 启动服务
经过step1),step2),服务已配置好,可以启动了
 svnserve  -- daemon  -- root  / home / svn - repos
 
文档中说 :
  如果一个版本库是位于/usr/local/repositories/project1,则一个客户端可以使用 svn://host.example.com/usr/local/repositories/project1 来进行访问     你可以使用svnserve的-r选项,这样会限制只输出指定路径下的版本库:     $ svnserve -d -r /usr/local/repositories  …    使用-r可以有效地改变文件系统的根位置,客户端可以使用去掉前半部分的路径,留下的要短一些的(更加有提示性)URL:     $ svn checkout svn://host.example.com/project1   
所以通常情况下,如果你应该将产生的库根目录放在启动脚本的-r 或者--root后面
正如我们上面的两句:
 svnadmin create  / home / svn - repos
   svnserve --daemon --root /home/svn-repos
 
Step4)客户端访问
刚开始访问不了
于是检查iptables
简单的配置方法是vi /etc/sysconfig/iptables文件,在里面找到这样的一行:
 - A RH - Firewall - 1 - INPUT  - j REJECT  -- reject - with icmp - host - prohibited
在这行上面加上:
 - A RH - Firewall - 1 - INPUT  - m state  -- state NEW  - m tcp  - p tcp  -- dport  3690   - j ACCEPT
 
然后
 . / iptables restart
这样客户端就可以访问svn服务了,别的linxu可能没有这个问题
 
服务端启动了,但储存库还没有储存任何项目,此时你除了check out root之外(这个没什么意义),你不能check out其他任何东西,所以你必须要往储存库添点东西
比如我刚做了个项目visdot,但还未入库,怎么办
首先建立trunk
 svn mkdir  -  " creating a project "  svn: // 192.168.1.100/visdot    svn mkdir  -  " creating a trunk "  svn: // 192.168.1.100/visdot/trunk
 
然后你就可以将这个trunk checkout到本地目录比如d:/projects/visdot,此时checkout下来是空目录
这时你就可以将你的项目内容拷贝到d:/projects/visdot,接着可以check in了
 
上面的192.168.1.100就是你启动了svn服务的Linux机器地址,到此你的项目完全入库
接下来你就可以check in, check out 你的项目了
 
上面的几部操作你可以使用命令行来完成,也可以使用gui 客户端,比如eclipse的subversion 插件
 
后记:
假设你的trunk已经上线,那么接下来要不断升级的话,你应该创建分支来根踪项目
比如:
 svn mkdir  -  " creating a new branch "  svn: // 192.168.1.100/visdot/branches    svn copy  -  " create release branch for 1.0 "  svn: // 192.168.1.100/visdot/trunk     /                                                                   svn: // 192.168.1.100/visdot/branches/rb-1.0
<think>好的,我现在需要帮助用户解决在CentOS安装SVN的问题。首先,我需要回忆一下相关的步骤,并确保信息的准确性。根据用户提供的引用,特别是引用[1]和引用[2],这两个资源都提到了在CentOS安装SVN的步骤,结合Apache和可能的HTTPS配置。不过用户现在主要问的是安装步骤,可能不需要立即配置HTTPS,但可能需要基础安装指南。 首先,安装SVN通常需要安装Apache和mod_dav_svn模块。CentOS 6和7的步骤可能有所不同,但用户的问题没有指定版本,可能需要考虑通用的方法,或者根据引用中的CentOS 6和7的情况分开说明。不过用户的问题可能更倾向于CentOS 7,因为引用[2]提到了CentOS 7,但引用[1]是CentOS 6。不过用户只是要安装步骤,可能需要通用的部分。 接下来,我需要检查安装步骤是否正确。通常步骤是: 1. 更新系统包 2. 安装ApacheSVN相关软件包(subversion, mod_dav_svn) 3. 配置Apache以支持SVN 4. 创建仓库并设置权限 5. 启动服务并测试 需要确保这些步骤在CentOS上适用。例如,安装subversion和mod_dav_svn可能需要使用yum或dnf,取决于CentOS版本。对于CentOS 7,应该使用yum。 然后,用户可能需要创建仓库目录,设置SELinux上下文,配置Apache的配置文件,例如在/etc/httpd/conf.d/subversion.conf中添加Location块,指向仓库路径,并启用认证,如Basic Auth。这可能涉及创建密码文件,使用htpasswd命令。 另外,引用[1]提到使用USVN,但用户可能不需要这个,所以需要区分是否要安装USVN还是普通的SVN。根据用户的问题,他可能只需要普通的SVN安装,所以可能需要忽略USVN部分,专注于subversionApache的集成。 同时,引用[2]提到了使用Let's Encrypt配置HTTPS,但用户当前的问题可能不需要这部分,除非用户后续需要。因此,安装步骤应该集中在基本安装,可能提及后续配置HTTPS作为可选步骤。 需要确保每个步骤的命令正确,例如安装包名称是否正确,Apache服务名称是否正确(httpd),以及仓库路径的权限设置是否正确,包括SELinux的配置,如果启用的话,可能需要使用chcon或semanage命令。 另外,防火墙配置可能需要开放HTTP/HTTPS端口,用户可能需要运行firewall-cmd命令,这部分是否需要包含?可能作为步骤的一部分,以确保用户安装后可以访问。 最后,测试部分,用户可能需要通过浏览器或svn客户端访问仓库URL,比如http://服务器IP/svn/仓库名,并进行检出操作。 现在,需要将这些步骤整理成用户容易理解的逐步指南,确保命令正确,并且注意事项如SELinux和防火墙被提及。同时,根据引用中的信息,引用[1]和[2]提供了相关步骤,可以引用这些来源作为参考。</think>以下是在CentOS系统上安装SubversionSVN)的分步指南,结合Apache实现Web访问支持: ### 一、安装基础软件包 ```bash # 更新系统并安装必要组件 sudo yum update -y sudo yum install -y httpd subversion mod_dav_svn ``` 安装完成后验证版本:`svn --version`[^1] ### 二、创建SVN仓库 ```bash # 创建仓库目录并初始化 sudo mkdir -p /var/www/svn sudo svnadmin create /var/www/svn/myrepo # 设置目录权限(根据实际用户调整) sudo chown -R apache:apache /var/www/svn sudo chmod -R 775 /var/www/svn # 若启用了SELinux需执行: sudo chcon -R -t httpd_sys_content_t /var/www/svn sudo chcon -R -t httpd_sys_rw_content_t /var/www/svn/myrepo ``` ### 三、配置Apache集成 1. 创建配置文件: ```bash sudo vi /etc/httpd/conf.d/subversion.conf ``` 2. 添加以下内容(按实际路径修改): ```apache LoadModule dav_svn_module modules/mod_dav_svn.so LoadModule authz_svn_module modules/mod_authz_svn.so <Location /svn> DAV svn SVNParentPath /var/www/svn SVNListParentPath On # 启用基本认证 AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/svn-auth-conf Require valid-user </Location> ``` ### 四、创建用户认证 ```bash # 创建第一个用户(重复执行可添加多个用户) sudo htpasswd -cm /etc/svn-auth-conf admin ``` ### 五、启动服务 ```bash sudo systemctl enable httpd sudo systemctl start httpd # 开放防火墙(若启用) sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --reload ``` ### 六、验证安装 1. 浏览器访问:`http://服务器IP/svn/myrepo` 2. 命令行测试: ```bash svn checkout http://localhost/svn/myrepo test-repo ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值