Linux 安装SVN

其实Linux下SVN还是比较简单, 在网上, 一搜就是一大把的资料。 但很少有人一次安装成功, 因为Linux中的环境太复杂, 很容易环境冲突。
linux svn一般依赖于httpd(Apache Web服务器).

svn独立方式

当然svn还有独立方式, 即不需要apache服务器, 即跳过下面的apache安装, 及配置中关于httpd.conf部分。
在编译subversion时
$./configure -prefix=/opt/svn -without-berkeley-db -with-zlib
(注:以svnserve方式运行,不加apache编译参数。以fsfs格式存储版本库,不编译berkeley-db)

安装apache

  • 检查apache是否安装。
    一般server发行版的linux会附带apache web 服务器。 所以需要先看看是否安装了apache, 及安装的版本号。
    • 通过可执行文件是否存在: 在当前路径下, 转入 $ httpd(apachectl) -v, 如果存在, 那么输入$ whereis httpd(apachectl), 找出其路径, 再通过$ file命令查其安装路径。如果不存在命令; 那么检查/etc/init.d/httpd是否存在, 如果存在, 查看安装路径。 通过vi(m)等工具查看其内容, 可以找到路径。
    • 通过发行包工具检查, 如在radhat(fedora)系统中, 使用的是rpm或yum, Debian(包括ubuntu)的dpkg或apt-get工具, Suse使用的是YaST(RPM). 如果是以二进制包安装, 则需要使用这些工具检查, 则说明已安装apache.
  1. $ rpm -qa | grep "软件或者包的名字"
  2. $ yum list installed | grep "软件名或者包名"
  3. $ dpkg -l |grep ii | grep packagename
  4. $ apt-cache show package
    • 如果是源代码码安装, 且通过第一种方式还找不到, 那么...找找几个常用的地, 如/usr/local(/lib)下, /usr(/lib)下, 或看看/var/www, /httpd目录等。
      找到apache时, 那么需要决定使用当前apache, 还是升级版本(http://httpd.apache.org/docs/2.2/upgrading.html )。 如果不存在, 安装之。
  • 安装apache。
    下面简单介绍通过包, 源代码, 自动包管理工具安装apache的方式
    • 安装 $ yum -y install httpd 设置自启动(fedora) /sbin/chkconfig httpd on
    • 安装 $ sudo apt-get install apache2
    • 安装 $ yast2 -install apache2
    • rpm/deb 包, 官网上不提供。 如果有其包, 可通过rpm -i或dpkg -i
    • 源代码:
      • 通过 http://httpd.apache.org/download.cgi , 查看最新版本的连接, 如当前最新版本连接为: http://apache.freelamp.com/httpd/httpd-2.2.15.tar.gz (下 面都以这个版本为例)
      • 下载 $ wget(curl) http://apache.freelamp.com/httpd/httpd-2.2.15.tar.gz
      • 解压 $ tar xvzf httpd-2.2.2.tar.gz(或$ gzip -d httpd-2.2.2.tar.gz 回车 $ tar xvf httpd-2.2.2.tar), 进入httpd-2.2.2
      • $ /configure --enable-dav --enable-so --prefix=/usr/local/apache2/ (配置apache安装,前两个参数是必须要加的,你还可以根据您的需要添加其他的参数。)
      • 编译 make, 安装make install(需要root权限)
      • 测试是否安装成功, $ /usr/local/apache2/apachectl start, 然后输入curl(wget) http://###.###.###.###/ 如出现 "It works!", 则成功.

安装svn。

  • 检查svn是否安装。
    和上面apache的步骤一个, 下面只是罗列示例命令
    • 通过可执行文件是否存在: svn help/svnadmin help
    • 通过发行包工具检查: rpm -qa | grep subversion
    • 想找常用目录下是否有安装包, 如/usr/local(/lib)下, /usr(/lib)
  • 安装svn。
    下面简单介绍通过包, 源代码, 自动包管理工具安装apache的方式
    • 安装 $ yum install subversion
      $ yum install mod_dav_svn
    • 安装 $ sudo apt-get install subversion
    • rpm/deb 包, http://subversion.apache.org/packages.html 有详细的说明, 在各系统下如何安装。
    • 源代码:
      • 通过 http://subversion.apache.org/source-code.html , 查看最新版本的连接, 如当前最新版本连接为: http://subversion.tigris.org/downloads/subversion-1.6.11.tar.gz (下 面都以这个版本为例)
      • 下载 $ wget(curl) http://subversion.tigris.org/downloads/subversion-1.6.11.tar.gz
      • 解压 $ tar xvzf subversion-1.6.11.tar.gz(或$ gzip -d subversion-1.6.11.tar.gz 回车 $ tar xvf subversion-1.6.11.tar), 进入subversion-1.6.11
      • $ ./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion (可以加其它参数, 如网上有兄弟加了这么一堆参数:./configure --with-apxs=/usr/local/apache2/bin/apxs --prefix=/usr/local/subversion
        --with-apr=/usr/local/apache2 --with-apr-util=/usr/local/apache2 --with-ssl --with-zlib
        --enable-maintainer-mode)
      • 编译 make, 安装make install(需要root权限)
      • 设置svnadmin, 可在任何路径下运行 sudo ln -s /usr/local/subversion/bin/svnadmin /usr/local/bin/svnadmin
      • 验证 输入svnadmin help

建库

上面安装成功后, 可以开始建库。 建库就相对简单, 只列出所有

  • 建立仓库根目录
    $ mkdir /var/repos
  • 建仓库。
    $ svnadmin create /var/repos/test
  • 导入项目。(可在配置后再行导入)
    $ svn import /home/user/myproject file:///home/svnroot/repository/test -m "初始化导入"
  • 改变目录所有者
    $ chown -R apache:apache(或svn:svn) /var/repos

配置

上面所有物理环境已搭建好, 只要配置httpd的访问, 及加入用户就大功告成了。

  • 修改Apache的配置文件httpd.conf
    #SVN模块加载
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule dav_module modules/mod_dav.so  //如果apache已加载, 要去掉本行。
    LoadModule authz_svn_module modules/mod_authz_svn.so#资源配置(如果多个项目, 共用一套验证, 下面配置就可以, 不然需要每个项目组分开建)
    <Location /svn>
       DAV svn
       SVNParentPath /var/repos #svn父目录
       AuthzSVNAccessFile /var/repos/config/authz.conf #启用目录级别授权, 权限配置文件
       AuthType Basic #连接类型设置
       AuthName "Subversion  Repository" #连接框提示
       AuthUserFile /var/repos/config/authfile #用户配置文件
       Satisfy Any #表示在同时启用了Allow(允许)和Require的情况下,指定相关策略的,一共有两个备选值,All表示用户必须同时满足Allow和 Require的条件,而Any则是满足其中之一即可。这这里,Satisfy Any用于允许先用匿名方式尝试访问,并根据svnauthz对匿名用户的控制给予访问权限。若没有这句话,则无论svnauthz中是否加入了 "*=r"的写法,匿名用户都是无法访问的。
       #<LimitExcept GET PROPFIND OPTIONS REPORT>    #允许匿名访问,不允许Commit,不能与AuthzSVNAccessFile同时使用, 此选项没试过。
       Require valid-user #采用何种认证
    </Location>
     
  • 增加用户
    $ htpasswd -m /var/repos/config/authfile usr1 //此目录指向httpd.conf中的"用户配置文件" -c 为创建, -m 为修改
  • 增加用户权限
    修改/var/repos/config/authz.conf //此目录指向httpd.conf中的"权限配置文件"
    $ vi(m) /var/repos/config/authz.conf
    [test:/] #这表示,仓库test的根目录下的访问权限
       admin = rw #test仓库wooin用户具有读和写权限
       @developers = rw #@开头的表示组, 组必须存在, 不然死的会很惨。
       @test = r
       [/] #这个表示在所有仓库的根目录下
       * = r #这个表示对所有的用户都具有读权限
       [groups] #这个表示群组设置
       developers = user1, user2 #这个表示某群组里的成员
       test = user2
     

    将这个设置完成后。重启Apache,就可以通过
    http://localhost/svn/test

你可能感兴趣的:(apache,linux,SVN,Module,subversion,工具)