linux下svn+apache+ssl搭建
这几天折腾搭建了个SVN服务器,这里记录下。
svn官方文档 http://svn.apache.org/repos/asf/subversion/tags/1.6.19/INSTALL
我这里建立的是配合apache的,发现当前的apache没有dav,没有ssl,只好重新编译apache:
./configure -prefix=xxx/apache2_2 -enable-so -enable-dav --enable-ssl --enable-rewrite -enable-mods-shared=all
make clean && make && make install
可以看到加载了dav,ssl (这里假设已经安装了openssl,如果没有还要安装openssl)
然后下载svn,编译安装
wget http://subversion.tigris.org/downloads/subversion-1.6.19.tar.gz
tar zxvf subversion-1.6.19.tar.gz
wget http://subversion.tigris.org/downloads/subversion-deps-1.6.19.tar.gz
tar zxvf subversion-deps-1.6.19.tar.gz
cd subversion-1.6.19
./configure --prefix=/xxxx/svn --with-apxs=/xxxx/apache2_2/bin/apxs --enable-dav --enable-so && make clean && make && make install
查看svn是否装好
/xxx/svn/bin/svnserve --version
创建svn仓库根目录和一个仓库
#根目录
mkdir -p /xxxx/svn
#创建个仓库
svnadmin create /xxxx/svn/projects
#创建密码用户名
htpasswd -c /xxxxx/svn/mymeho ignet
#上面的命令创建了一个ignet的svn用户,密码存储在文件/xxxxx/svn/mymeho中。
配置apache
(如果只使用svnserve方式,则使用/xxxx/svn/projects/conf/svnserve.conf 中的配置,参见http://blog.51yip.com/server/901.html)
LoadModule ssl_module modules/mod_ssl.so
<Location /mymesvnhoho/repos>
DAV svn
SVNPath /xxxxx/svn/projects #仓库目录
SSLRequireSSL #需要ssl方式
AuthType Basic
AuthName "my svn" #取个名字
AuthUserFile /xxxx/svn/mymeho #指定用户密码文件
Require valid-user
</Location>
ssl相关:
#创建私钥
openssl genrsa 4096 > svn.mymeho.key
#创建自签名证书30年
openssl req -new -key svn.mymeho.key -x509 -days 10950 -out svn.mymeho.crt
apache ssl配置
Listen 20080
NameVirtualHost *:880
<VirtualHost *:880>
SSLEngine On
SSLCertificateFile conf/ssl/svn.mymeho.crt #指向证书
SSLCertificateKeyFile conf/ssl/svn.mymeho.key #指向私钥
DirectoryIndex index.php index.html
#这里880端口专门用于svn,如果指明了目录(DocumentRoot)则需要配置Directory权限,否则无法访问,这些和普通apache一样。
ServerName 127.0.0.1:880
</VirtualHost>
启动apache
apache2_2/bin/apachectl start
到这里就配置好了。
我测试了一下我的服务器提交速度,惨不忍睹,不堪使用,这里只是尝试一下。
参见:
http://mark.koli.ch/2010/03/howto-setting-up-your-own-svn-server-using-apache-and-mod-dav-svn.html