本人搭建SVN服务器,通过https协议发布到互联网中的。 我需要的服务有apache(httpd)网站服务器、subversion版本库服务器、ssl证书。

一、通过yum安装环境

  • 安装httpd网站服务器:yum install -y httpd 安装版本库服务器:yum install -y subversion
  • 安装网站SSL模块到服务器: yum install -y mod_ssl
  • 安装网站SVN模块到服务器:yum install -y mod_dav_svn mod_authz_svn

二、使用SUBVERSION搭建SVN服务器

  • 首先创建在系统中创建一个repos文件夹,用于存放SVN文件;
  • 第二步: 创建版本库模式的文件夹: svnadmin create <repos文件夹>/<版本库名>;
  • 第三步: 添加用户到配置目录权限<repos文件夹>/<版本库名>/conf/authz [/] admin=rw
  • 第三步: 添加用户密码到配置文件<repos文件夹>/<版本库名>/conf/passwd admin=123
  • 第四步: 在当前库配置参数<repos文件夹>/<版本库名>/conf/svnserve.conf anon-access = none auth-access = write password-db = passwd authz-db = authz realm = /svn/svnrepos
  • 第五步: 启动svn版本库 svnserve -d -r <repos文件夹>/<版本库名>

三、搭建apache中的ssl证书

  • 创建存放证书的位置 :mkdir /etc/httpd/ssl/
  • 创建证书文件:openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/httpd/ssl/apache.key -out /etc/httpd/ssl/apache.crt

四、添加SSL到apache服务器中

  • 修改/etc/httpd/conf.d/ssl.conf中的证书参数: SSLCertificateFile /etc/httpd/ssl/apache.crt SSLCertificateKeyFile /etc/httpd/ssl/apache.key
  • 修改/etc/httpd/conf.d/ssl.conf中的端口参数: Listen 19443 VirtualHost default:19443

五、添加SVN目录到apache服务器中

         LoadModule dav_svn_module     modules/mod_dav_svn.so
         LoadModule authz_svn_module   modules/mod_authz_svn.so

         <Location /repos/svn1>
             DAV svn
             SVNPath <repos文件夹>/<版本库名>
             SVNListParentPath On
             SVNAutoversioning On
             SVNReposName "<版本库名>"
             AuthType Basic
             AuthName "Welcome to <自定义服务器名> repos <版本库名>"
             AuthUserFile <repos文件夹>/<版本库名>/conf/passwdfile
             AuthzSVNAccessFile <repos文件夹>/<版本库名>1/conf/authz
             Require valid-user
         </Location>

六、配置httpd服务器授权svn的用户文件

							htpasswd <repos文件夹>/<版本库名>/conf/passwdfile <对应的用户名>

七、启动apache服务器 service httpd restart

八、创建svn开机自启动服务文件 /etc/init.d/svn1

         #!/bin/bash
         #chkconfig: - 99 01
         ##
         ##description: this is a svnserve <版本库名> custom script !

         case $1 in
                 start)
                         /usr/bin/svnserve -d -r <repos文件夹>/<版本库名>
                         ;;
                 stop)
                         kill `pidof  /usr/bin/svnserve`
                         ;;
                 restart)
                         kill `pidof  /usr/bin/svnserve`
                         /usr/bin/svnserve -d -r <repos文件夹>/<版本库名>
                         ;;
                 *)
                         echo Usage:`basename $0` start|stop|restart
         esac

九、开机自启动设置

  • 手动添加svn1服务到chkconfig中: chkconfig --add svn1
  • 设置svn1服务开机自启动: chkconfig svn1 on
  • 设置网站服务开机自启动: chkconfig httpd on

测试一下吧!

【可选】十、通过websvn可以查看只读版本库

  • 下载websvn包放置到httpd或nginx服务器中,需要支持php5.6或以上版本;
  • 再websvn文件夹下include文件夹配置config.php; $config->addRepository("<版本库名>","svn://<服务器域名或IP地址>",null,"<用户名>","<用户密码>");
  • 再config.php文件中可以配置其他的参数,我在此不做说明;
  • 再浏览器运行websvn地址后,有错误根据提示查看配置,没有就可以查看版本库、比较文件等等了。

【可选】十一、通过svn客户端自动再centos服务器中同步版本库文件夹

  • 我们一般用于服务器上网站文件夹;
  • 首先,通过svn命令执行建立svn客户端文件夹 svn co svn://<服务器域名或IP地址> <svn客户端文件夹>
  • 然后,通过svn服务器提交时执行文件的修改实现自动同步 vim <repos文件夹>/<版本库名>/hooks/post-commit 设置自动同步的语句 : svn update <svn客户端文件夹> --username="<用户名>" --password="<用户密码>"
  • 设置文件夹权限 原版本库权限要同时加入到被同步的文件夹中