fedora core 6 用apache搭建svn的安全服务器
以前公司的源代码通过Subvision管理,通过https协议访问版本库,今天心血来潮,在自己的fedora core 6虚拟机上搭建svn安全服务器,并实现了在Windows下用TortoiseSVN访问。
1.配置svn版本库。
默认情况下,FC6安装了svn软件。通过rpm -qa | grep svn来查看是否安装,如果没有安装,通过yum install svn来安装。下面配置一个版本库,库名repository。
svnadmin create /usr/local/repository 建立版本库
svnserve -d -r /usr/local/repository 启动svn服务
netstat -l | grep svn 查看svn服务是否成功启动,正常情况下会出现一个svn的监听套接字
tcp 0 0 *:svn *:* LISTEN
将本地的项目import到版本库中
svn import project file:///usr/local/repository/project -m "随便写点什么"
2.安装并配置apache
yum install httpd
Subversion需要版本化的控制,标准的 Http 协议不能满足需求。要让Apache与Subversion协同工作,需要使用 WebDAV(Web 分布式创作和版本控制, WebDAV 是 HTTP 1.1 的扩展)。为了使 Subversion 与 dav 模块通信,需要安装 mod_dav_svn 插件
yum install mod_dav_svn
接下来就是配置 Apache 的 httpd.conf 文件,让 Apache 在启动的时候加载上述模块。
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module modules/mod_dav_svn.so
<Location /repository>
DAV svn
SVNPath /usr/local/repository
</Location>
重新启动 Apache,打开浏览器,输入 http://服务器IP/repository,就可以看到目录树
上述是匿名用户均可以访问代码库,如何实现密码验证用户访问呢?Apache 提供了一个工具 htpasswd,用于生成用户文件,可以在 Apache 的安装目录下找到。
具体使用方法如下:
htpasswd etc/svn/passwordfile username
接下来修改 httpd.conf,在 Location 标签中加入如下内容:
AuthType Basic
AuthName "svn repository"
AuthUserFile /etc/svn/passwordfile
Require valid-user
重启apache,打开浏览器,就可以实现用户的密码鉴权访问了。
3.配置ssl
yum install mod_ssl
配置httpd.conf文件,让Apache在启动的时候加载ssl模块
LoadModule ssl_module modules/mod_ssl.so
生成SSL 的证书和密钥了。首先,找到 openssl 程序及其配置文件 openssl.cnf,运行如下命令来生成 128 位的 RSA 私有密钥文件
openssl genrsa -des3 -out server.key 1024 其中需要用户输入并确认自己的密码
openssl req -new -key my-server.key -x509 -out server.crt -config /etc/pki/tls/ openssl.cnf 生成一个自签名的认证证书
上述命令都需要用户输入那个 key 文件的密码,以及一些网络设置信息,如域名,邮箱等。现在,我们可以在 Apache 的 ssl.conf 文件的路径下新建一个 ssl 目录,将 server.key 和 server.crt 文件都移动到 ssl 目录里面。然后修改 ssl.conf 文件,将 SSLCertificateKeyFile 和 SSLCertificateFile 项指向这两个文件。
最后,在httpd.conf配置文件的最后,加上如下 SSL 相关配置项:
SSLMutex default
SSLRandomSeed startup builtin
SSLSessionCache none
ErrorLog logs/SSL.log
LogLevel info
<VirtualHost 你自己的域名:443>
SSLEngine On
SSLCertificateFile /etc/httpd/conf.d/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/server.key
</VirtualHost>
重启apache,其中需要输入认证的密码
在Windows下的TortoiseSVN中checkout:https://ip/repository/project