本人搭建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="<用户密码>"
- 设置文件夹权限 原版本库权限要同时加入到被同步的文件夹中