搭建基于SSL协议的svn服务器
严格来说配置管理不属于CI的范畴,但我个人觉得作为一个流程改进实践,配置管理做的越好就越有利于CI实施。如何进行配置管理,不是这篇文章的重点。我要介绍的是配置管理两个重点(配置策略与版本控制)中的版本控制。以版本管理工具svn的使用为出发点,文中主要介绍如何搭建svn服务器。
svn(subversion)是一款著名的开源版本控制软件,我相信很多开发人员都在使用它来进行代码管理。这里可以了解更多信息http://subversion.apache.org/。你可能知道如何使用svn来进行日常的代码check in, check out,但并不一定知道如何去搭建一个svn服务器。这篇博客主要就是说这个。以下所有的操作都是在Ubuntu上进行的,所以你可能需要知道一些Ubuntu上的知识。
搭建svn的第一步当然是安装了,在Ubuntu下你可以这样做
sudo apt-get install subversion libapache2-svn libapache-mod-dav apache2
如果安装失败是因为找不到安装包,请先运行apt-get install update.
第二步是启用SSL,
sudo a2enmod ssl sudo sh -c "echo 'Listen 443' >> /etc/apache2/ports.conf"
因为SSL的默认端口是443端口,我们把它添加到apache的端口配置文件中。
第三步是生成SSL的认证,这里我们需要先安装SSL的认证服务
sudo apt-get install ssl-cert sudo mkdir /etc/apache2/ssl sudo /usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem
第四步,创建站点,这里的$SITENAME环境变量,给一个你自己喜欢的名字就可。
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/$SITENAME sudo vim /etc/apache2/sites-available/$SITENAME
然后修改站点配置文件如下:
下一步是配置一个svn访问的账户:
sudo htpasswd2 -c -m /etc/apache2/dav_svn.passwd $AUTH_USER
然后重启apache服务来启动站点
sudo a2ensite $SITENAME sudo /etc/init.d/apache2 restart
如果失败了,可能是虚拟主机没有被apache找到,请添加这一行 ServerName $SERVERNAME 到 /etc/apache2/apache2.conf 文件中。
第五步就到创建svn知识库的时候了,先创建一个目录用于存放svn配置信息,再创建一个环境变量$REPOS用于存放内容,并改变其访问权限
sudo mkdir /var/svn sudo export REPOS=你的知识库路径 sudo svnadmin create /var/svn/$REPOS sudo chown -R www-data:www-data /var/svn/$REPOS sudo chmod -R g+ws /var/svn/$REPOS
第六步添加基本的认证信息,$AUTH_USER给个自己喜欢的用户名即可。
sudo htpasswd2 -c -m /etc/apache2/dav_svn.passwd $AUTH_USER
并修改WebDav和svn配置文件 sudo vim /etc/apache2/mods-available/dav_svn.conf 添加如下内容
DAV svn SVNParentPath /var/svn AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd Require valid-user SSLRequireSSL
并取消这两行的注释
#<LimitExcept GET PROPFIND OPTIONS REPORT> #</LimitExcept>
唉!配置svn服务器还真是麻烦!不过幸好这已经是最后一步了。剩下的我们就重启一下apache来启用我们的配置吧。
sudo /etc/init.d/apache2 restart
如果一切正常,并且你没有敲错什么字母的话,apache应该能正常启动。那么我们就测试一下
在你的浏览器地址栏输入:https://localhost/svn/你的知识库名称。应该会有弹出提示输入用户名和密码对话框。通过认证后,你会看到如下界面(test.html是我自己导入的,默认应该没有任何文件)。
通常上面的步骤没有出错的话,这个界面会正常显示。如果失败,那么大多数情况是403错误,请检查端口和目录的权限。(PS:http协议我没有配置成功,可惜了)。