您的位置:首页 > 其它

Ubuntu 9.10 Server 配置基于SSL的Subversion

2010-02-09 20:06 459 查看
1 配置准备

Ubuntu 9.10 Server 英文版。服务器版还是以稳定高效为主,也没有安装图形界面,另外主要是通过putty.exe远程访问。没有采用中文版的原因是,在shell下,中文字体可能没有安装总显示乱码,拜过谷哥大神,未解决。

2 安装软件及模块一览

(1)Apache2.2.14 自己下载编译。未用ubuntu 9.10 server 下apt-get安装的apache2 是因为这个版本的apache2在启用ssl的时候总是报undefined symbol apr_ldap_ssl_init错误,此处我怀疑可能是ubuntu9.10 server的问题,我在虚拟机ubuntu 8.04 desktop下配置成功。

(2)OpenSSL 通过apt-get install openssl 安装即可

(3)Subversion 自己编译下载。很不幸,我无法使用ubuntu的subversion来成功配置SSL。

3 Ubuntu & Linux

鉴于大家可能对不同发行版的linux不太了解,我简单介绍一下,并比较apache2的Ubuntu版本和自主安装的安装及配置文件路径

以下摘自Wiki


One can distinguish between commercially backed distributions, such as Fedora (Red Hat), openSUSE (Novell), Ubuntu (Canonical Ltd.), and Mandriva Linux (Mandriva) and entirely community-driven distributions such as Debian and Gentoo, though there are other distributions that are driven neither by a corporation nor a community, perhaps most famously Slackware.


简单翻译一下,就是说linux有商业支持的发行版如Fedora,openSUSE,Ubuntu和社区推动的版本如Debian和Gentoo。另外Ubuntu本身又是基于Debian的,这点大家应该清楚。

Ubuntu Apache2自主安装Apache2
安装目录/etc/apache2
指定路径
例如:
/usr/local/apache2
应用程序/etc/sbin/apache2
/etc/lib/apache2
/usr/local/apache2/bin/httpd
服务/etc/init.d/apache2 restart/usr/local/apache2/bin/httpd –k restart
(不知还有没有别的方式?)
配置文件/etc/apache2/apache2.conf
/etc/apache2/httpd.conf (通常为空)
/etc/apache2/ports.conf
/etc/apache2/mods_available/
/etc/apache2/sites_available/
apache2.conf负责调用其他的配置文件
/usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/extra/
httpd.conf负责调用extra文件夹下的配置文件
4 自主安装Apache2

#sudo wget http://apache.etoak.com/httpd/httpd-2.2.14.tar.gz
#sudo tar -zxvf httpd-2.2.14.tar.gz
#cd httpd-2.2.14
#sudo ./configure --enable-dav --enable-dav-fs --enable-so --enable-ssl --enable-maintainer-mode -prefix=/usr/local/apache2 --enable-mods-shared=all
#sudo make
#sudo make install

注意./configure 时确保enable-dav和enable-ssl,其中dav模块是通过apache2存储文件的基础。
5 安装OpenSSL

#sudo apt-get install openssl

6 安装Subversion

# sudo apt-get install build-essential openssl ssh expat libxyssl-dev libssl-dev
# sudo apt-get remove subversion
# sudo dpkg --purge subversion
# wget http://subversion.tigris.org/downloads/subversion-1.6.2.tar.gz
# wget http://subversion.tigris.org/downloads/subversion-deps-1.6.2.tar.gz
# tar xvfz subversion-1.6.2.tar.gz
# tar xvfz subversion-deps-1.6.2.tar.gz
# cd subversion-1.6.2/neon/
# ./configure --prefix=/usr/local --with-ssl --with-pic
# make
# sudo make install
# ./configure --prefix=/usr/local --with-ssl --with-neon=/usr/local
# make
# sudo make install

注意:首先移除ubuntu自带的subversion,随后进行编译安装。其中subversion-deps-1.6.2.tar.gz是Subversion客户端使用的Neon库,它不仅仅可以用来验证服务器证书,也可以必要时提供客户端证书,因此也要安装上

7 配置http访问subversion

参考了主题:ubuntu下安装svn提供HTTP版本管理服务Install Subversion with Web Access on Ubuntu

(1)#sudo svnadmin create /svn

可以看一下/svn下是不是增加了些文件
(2)#sudo vim /usr/local/apache2/conf/httpd.conf

增加
<Location /svn>
DAV svn
SVNPath /svn
AuthzSVNAccessFile /svn/conf/authz
AuthType Basic
AuthName "Subversion.Tracker"
AuthUserFile /svn/conf/passwd Require valid-user
</Location>

这部分应该也可以放置到 conf/extra/httpd_dav.conf文件中,然后将httpd.conf中的 include conf/extra/httpd_dav.conf 注释去掉,不过奇怪的是httpd_dav.conf文件中的示例使用<Directory>而不是<Location>,我未作尝试。

(3)#sudo htpasswd -m /svn/conf/passwd <username>

注意-c的参数会重新创建新文件(谨慎使用,可能覆盖)
增加一个用户名,可以打开passwd文件查看是否创建成功
同时在Ubuntu上创建同名用户和相同密码 (此处待验证,网络上有的文章没有强调这一点
sudo useradd <username>
sudo passwd <password>

(4)#sudo chown www-data:www-data -R /svn

将/svn的所有者和所在的组更改为www-data(ubuntu下apache2的账户)

#sudo chmod –R g+ws /svn

(5)#sudo /usr/local/apache2/bin/httpd –k restart

看看http://localhost/svn 是否可以访问了

8 配置ssl访问subversion

参考了Linux SVN+Apache+SSL 安装配置Apache SSL配置

openssl genrsa -des3 -out ca.key 1024
//按提示输入密码:****
chmod 400 ca.key
//生成证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
//按提示分别输入如下内容:
//Country Name: CN
//State or Province Name:
//Locality Name:
//Organization Name:
//Organizational Unit Name:
//Common Name:
//Email Address: your email
chmod 400 ca.crt
openssl genrsa -des3 -out server.key 1024
//按提示输入密码:
chmod 400 server.key
openssl req -new -key server.key -out server.csr
//按提示分别输入如下内容:
//Country Name: CN
//State or Province Name:
//Locality Name:
//Organization Name:
//Organizational Unit Name:
//Common Name:
//Email Address: your email
(ca.crt 和server.csr 的Common Name不能一样)
openssl req -noout -text -in server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
chmod 400 server.crt

vim /usr/local/apache2/conf/httpd.conf
取消Include conf/extra/httpd-ssl.conf前的注释#

打开httpd-ssl.conf文件查看如下两行,确保前面生成的证书放置在该路径下

SSLCertificateFile "/usr/local/apache2/conf/server.crt"

SSLCertificateKeyFile "/usr/local/apache2/conf/server.key"

重启httpd服务

查看https://localhost/svn/ 浏览器显示此网站的安全证书有问题,忽略它,输入用户名和密码,至此基于SSL的Subversion配置完成。

9 总结

配置过程中应该了解ubuntu和其他linux发行版安装软件的不同,掌握make和make install。如碰到apache2不能启动,阅读错误提示以及查看日志(/usr/local/apache2/logs/error.log).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: