Subversion是新一代的开源版本控制系统,用以取代CVS。在安装配置SVN时,遇到了一些问题,在网上搜集资料得到解决。由于资料比较杂乱,所以特此重新整理了一下。
第一步 安装测试subversion
1.安装
# apt-get update
# apt-get install subversion subversion-tools
2.创建存储库
# mkdir /home/svn
# svnadmin create --fs-type fsfs /usr/local/svn/pos
3.设置权限
# chown –R www-data:www-data /home/svn/*
# chmod –R 770 /home/svn/*
4.从本地导入源代码:
# mkdir –p /var/svn/test
# touch /var/svn/test.txt
# cd /var/svn
# svn import ./test http://hi.baidu.com/home/svn/test -m “Initial import.”
如果出错,可能是路径的问题。
5.察看代码库内容:
# svn list http://hi.baidu.com/home/svn/test
如果以上没有报错,说明subversion已经正确安装。
第二步 通过http方式访问subversion
为了远程访问SVN,通常使用apache服务器。
1.安装组件
# apt-get install apache2 libapache2-svn
2.测试apache2
http://服务器地址
3.修改配置文件/etc/apache2/mods-enable/dav_svn.conf
# vim /etc/apache2/mods-enabled/dav_svn.conf
# dav_svn.conf - Example Subversion/Apache configuration
#
# For details and further options see the Apache user manual and
# the Subversion book.
#
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
4.创建/etc/apache2/dav_svn.authz
[test:/]
*=
Zhangsan=rw
Lisi=r
5.设置用户口令:
# htpasswd –c –m /etc/apache2/dav_svn.passwd zhangsan
# htpasswd –c –m /etc/apache2/dav_svn.passwd lisi
6.测试:
http://服务器地址/svn/test
第三步 添加SSL支持
为了提供比较安全的远程访问,需要开启apache2的SSL支持。
1. 运行命令 a2enmod ssl 。打开 apache2 的 SSL 支持。
2. 编辑 /etc/apache2/ports.conf 文件。 在此文件中,缺省只有 Listen 80,也就是apache 只接受 80 端口的普通 http 访问。我们再添加一项 "Listen 443",443 是 https 的端口。
3. 编辑 /etc/apache2/sites-available/default 文件,把 “NameVirtualHost *" 改为 "NameVirtualHost *:80" , "" 改为 ""。
4. 运行命令 apache2-ssl-certificate, 根据提示回答问题, 生成 SSL 的证书,自动被放置在 /etc/apache2/ssl/。
5. 在 /etc/apache2/sites-available/ 下建立一个新的文件,名字可以叫做 ssl . 这个文件可以拷贝 /etc/apache2/sites-availbale/default 获得。 但是要修改 VirtualHost 和 NameVirtualHost 的端口为 443。 在这个文件中加入以下两行:"SSLEngine On" 和 "SSLCertificateFile /etc/apache2/ssl/apache.pem"。
6. 使用 a2ensite ssl 来使我们的 ssl 虚拟主机生效。
7. /etc/init.d/apache2 force-reload 重新启动 apache2 的系统服务。
8. 使用其他机器的浏览器来登陆本服务器,注意要使用 https 协议来测试我们的 apache 服务器是否接受 https 连接。
9. 使用 a2enmod dav_svn 来加载 subversion 模块。
10. subversion 模块的配置文件在 /etc/apache2/mods-available/dav_svn.conf 中。 为了限制非 SSL 用户登陆,我们可以使用如下一句 "SSLRequireSSL" 来限制。 为了禁止匿名用户登陆,加上 "Require valid-user" 一句。
在创建证书时,发现系统没有apache2-ssl-certificate命令,查找资料发现这是系统的漏洞。解决方法如下:
Ubuntu feisty中的apache2安装包有BUG,安装后缺少apache2-ssl-certificate命令,这样如果我们要启用apache的 ssl服务,就生成不了站点证书。
不过,现在已经有人做了这个工作了,我们可以通过自己编译apache2源码来安装,安装方法如下:
首先下载并解压这个修复包:
wget http://librarian.launchpad.net/6917265/files.tar
tar xvf files.tar
然后安装Apache2 deb源代码及相关编译依赖包,然后编译安装apache2:
sudo apt-get build-dep apache2
sudo apt-get source -d apache2
dpkg-source -x apache2_-3.2build1.dsc
cd apache2-
fakeroot debian/rules binary(如果没有安装fakeroot,请先安装)
sudo dpkg -i ../*.deb(您也可以选择性的安装您需要的Apache2 deb包)
这样安装的apache2包含完整的工具,下面我们来配置Apache2 ssl支持:
先生成站点证书:
sudo apache2-ssl-certificate -days 365
接着启用Apache2 的ssl模块:
sudo a2enmod ssl