Linux下svn的安装以及在Apache服务下访问

         最近安装SVN过程中遇到了很多坑,做一下记录。

1、阿里云服务器安装svn过程

手动安装SVN

本文以CentOS 7.2 64位系统为例,说明如何在CentOS 7.2上安装SVN。

  1. 远程连接Linux实例

  2. 运行以下命令安装SVN。

    1. yum install subversion
  3. 运行以下命令查看SVN版本。

    1. svnserve --version

    Linux下svn的安装以及在Apache服务下访问

  4. 按以下步骤创建版本库:

    1. 运行以下命令创建目录。
      1. mkdir /var/svn
    2. 依次运行以下命令创建版本库。
      1. cd /var/svn
      2. svnadmin create /var/svn/svnrepos
    3. 依次运行以下命令查看自动生成的版本库文件。
      1. cd svnrepos
      2. ls
      Linux下svn的安装以及在Apache服务下访问

      Subversion目录说明:

      • db目录:所有版本控制的数据存放文件。
      • hooks目录:放置hook脚本文件的目录。
      • locks目录:用来追踪存取文件库的客户端。
      • format文件:是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号。
      • conf目录:是这个仓库的配置文件(仓库的用户访问账号、权限等)。
    4. 运行命令cd conf/进入conf目录(该SVN版本库配置文件)。返回结果如下:
      • authz:是权限控制文件。
      • passwd:是账号密码文件。
      • svnserve.conf:SVN服务配置文件。
    5. 按以下步骤设置账号密码:
      1. 运行 vi passwd
      2. 按 i 键进入编辑模式。
      3. 在 [users] 块中添加用户账号和密码,格式:账号=密码,比如示例中的suzhan = redhat(注意等号两端要有一个空格)。
      4. 按 Esc 键退出编辑模式,并输入 :wq 保存并退出。Linux下svn的安装以及在Apache服务下访问
    6. 按以下步骤设置权限:
      1. 运行 vi authz
      2. 按 i 键进入编辑模式。
      3. 在末尾添加如下代码(其中,r表示读,w表示写):
        1. [/]
        2. suzhan=rw
      4. 按 Esc 键退出编辑模式,并输入 :wq 保存并退出。
        Linux下svn的安装以及在Apache服务下访问
    7. 按以下步骤修改svnserve.conf文件。
      1. 运行命令 vi svnserve.conf
      2. 按 i 键进入编辑模式。
      3. 打开以下几个注释(注意每行不能以空格开始,等号两端要有一个空格):
        1. anon-access = read #匿名用户可读,您也可以设置 anon-access = none,不允许匿名用户访问。设置为 none,可以使日志日期正常显示
        2. auth-access = write #授权用户可写
        3. password-db = passwd #使用哪个文件作为账号文件
        4. authz-db = authz #使用哪个文件作为权限文件
        5. realm = /var/svn/svnrepos #认证空间名,版本库所在目录
      4. 按 Esc 键退出编辑模式,并输入 :wq 保存并退出。Linux下svn的安装以及在Apache服务下访问
    8. 运行以下命令启动SVN版本库。
      1. svnserve -d -r /var/svn/svnrepos
    9. 运行命令 ps -ef |grep svn 查看SVN服务是否开启。
      如果返回结果如下图所示,表示SVN服务已经开启。
      Linux下svn的安装以及在Apache服务下访问

注意
运行以下命令停止SVN命令。

  1. killall svnserve

以上内容来自点击打开链接

其实这样安装是没有问题的,然后你在svn的客户端输入svn://实例公网IP地址/资源库名 注:是svn://  而不是http:// 因为没有配置是Apache服务访问所以写成http://是访问不到的。我就在这郁闷了半天,结果一看,哎想掐死自己的心都有。

然后又把svn删掉,重新安装

需要Apache的服务访问,首先需要安装httpd的服务

yum-y install httpd

一般情况下,linux服务器是有httpd服务的,你可以检查下,如果没有则安装。

检查方法:vi/etc/httpd/conf.d/subversion.conf

安装完svn后看是否有该目录&文件,如果存在则不需要安装httpd了。

安装httpd的时候就开始报错了

因为服务器一开始有这个服务,可能是版本问题然后一直报错,这个时候,你要卸载掉Apache的服务

yum remove httpd 

然后再卸载掉  yum remove apr

重新安装httpd  yum-y install httpd

查看是否安装成功 httpd -version

安装svn yum install subversion

查看是否安装成功 svn --version

安装mod_dav_svn yum install mod_dav_svn

安装成功后,会有mod_dav_svn.so和mod_authz_svn.so两个文件。
$ find / -name mod_dav_svn.so

/usr/lib64/httpd/modules/mod_dav_svn.so

$ find / -name mod_authz_svn.so

/usr/lib64/httpd/modules/mod_authz_svn.so

创建svn仓库
$ mkdir /var/www/svn
$ svnadmin create /var/www/svn/test
配置权限
修改svn仓库的用户组为apache:
$ chown -R apache:apache /var/www/svn/test/
创建用户文件passwd:
$ touch /var/www/svn/passwd  #创建用户文件
$ htpasswd /var/www/svn/passwd admin  #创建用户admin

根据提示输入密码,输入两次密码,密码是经过MD加密的

在这可以看到用户加密后的密码

$ vim /var/www/svn/passwd 
admin:$apr1$UCkPzZ2x$tnDk2rgZoiaURPzO2e57t0
创建权限文件authz:

$ cp /var/www/svn/test/conf/authz /var/www/svn/authz
$ vim /var/www/svn/authz 
[/]
admin = rw #rw读写权限 r 只有读的权限,w是写的权限,不写,是没有权限
 6. 配置httpd
$ touch /etc/httpd/conf.d/subversion.conf


$ vim/etc/httpd/conf.d/subversion.conf 
<Location /svn>
    DAV svn
    SVNParentPath /var/www/svn
    AuthType Basic
    AuthName "Authorization SVN"
    AuthzSVNAccessFile /var/www/svn/authz
    AuthUserFile /var/www/svn/passwd
    Require valid-user
</Location>

7. 启动httpd服务

service httpd start

客户端使用http://192.168.220.121:8082/svn/test就可以访问刚才建立的svn仓库了。

8082是自己配置的端口,默认是80端口,找到httpd.conf 修改里面的listener 80 的端口即可。

修改端口后的端口要对防火墙开启,不然访问不到。

vim /etc/sysconfig/iptables 添加下面这句

-A INPUT -p tcp -m tcp --dport 8082 -j ACCEPT

再重启防火墙服务:service iptables restart

安装参考点击打开链接

然后就写这些吧。