其实我最想用的版本管理库是git,他的理念更符合现代编程的发展需要,保证提交的代码准确度较高的同时,本地又可以实现版本控制。更准确的说,git是一个本地库,其分支处理如同svn的解决差异。
不过和SVN比起来,git服务器配置还是有些麻烦,眼下需要的,是一个易于搭建、管理、稳定的代码版本库,所以最终还是选择了SVN,也是我对他比较熟悉吧!
SVN远程访问主要有两种模式,http协议(包含https)和svn协议(包括svn+ssh),之前在mixmedia,广州公司的局域网版 本库和远程版本库,都是基于http协议下的。目前通过http协议架设SVN服务器,只有通过Apache的mod_dav_svn和 mod_auth_svn。这个模式有个很麻烦的问题,就是Apache的dav请求处理会挂起,即当dav长期无请求,第一次请求的时候,会报http 错,这是很讨厌的事情。
现在webserver基本上都转nginx了,再装个apache真是很别扭。所以我尝试了几种SVN管理工具,看看是不是能通过svn://协议的模式直接部署,不过最终作罢,原因如下:
svnserve的passwd文件是明文保存密码的,这个密码文件往往会和备份系统一起直接备份,明文密码是一个十分不靠谱的做法。
svn允许通过sasl来管理用户登录,sasl的用户文件会集成了项目(域)\用户\密码的管理,理论上很好,那个文件下载到windows下,倒真的是bin文件,啥也读不出来,不过话说如果你用cat在linux上执行的话,还是能看到一些资料……这……
管理svn的各种工具,良莠不齐,基本上除了if.svnadmin(不过1.6.1版本是不支持svnserve密码文件处理的),其他的基本上不是存在bug,就是本身项目已经很久不更新了,实在有些担心。
所以得出结论是,最好的选择是:Apache+svn+if.svnadmin。可能我的结论有偏颇,欢迎拍砖!
以下主要记录整个SVN服务器各个安装的执行过程,详细说明就不列举了。另,注意标题,这个只是一个测试版的记录,是我用于研究时的操作记录,指令执行顺序、用户组管理、目录规划等在正式服务器上一定会有不同,这里提个醒。
服务器为CentOS,版本为6.2。
更换163源 cd /etc/yum.repos.d mv CentOS-Base.repo CentOS-Base.repo.back wget yum makecache 安装lsb_release yum install RedHat-lsb -y lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 6.2 (Final) Release: 6.2 Codename: Final Setup OpenSSH Server yum install openssh-server.x86_64 service sshd start chkconfig sshd on 安装服务器先停止了iptables,最后再来搞他。
service iptables stop添加www用户
sudo adduser -d /srv/www -s /sbin/nologin www 安装httpd(Apache2) yum install httpd service httpd start chkconfig httpd on 修改httpd的端口安装semanage
yum -y install policycoreutils-Python查询http端口
semanage port -l|grep http添加端口支持
semanage port -a -t http_port_t -p tcp 9091