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).