Ubuntu 下安装 Subversion https 服务器

首先是安装 Apache2,Ubuntu 上默认安装的 Apache2 就已经带上 ssl 模块。
sudo apt-get install apache2
使用 a2emod 开启模块。
sudo a2enmod ssl
https 必须提供一个站点密钥,一般情况下使用如下命令即可。
apache2-ssl-certificate
但是当前的 ubuntu 版本存在 Bug 遗失了该工具,只能使用 openssl 手工生成。
sudo openssl req -x509 -newkey rsa:1024 -keyout apache.pem -out apache.pem -nodes -days 999
记得在 Common Name 中填写你的域名。
Common Name (eg, YOUR name): larryli.vicp.net
完成后将当前目录下的 apache.pem 文件复制到 apache2 配置目录。
sudo mkdir /etc/apache2/ssl
sudo cp apache.pem /etc/apache2/ssl/apache.pem

在 Windows 下貌似要进行下列的操作(直接使用 Apache msi 安装):
openssl req -new -out server.csr -config ..confopenssl.conf
openssl rsa -in privkey.pem -out server.key -config ..confopenssl.conf
openssl x509 -in server.csr -out server.crt -req -signkey server.key -days 999 -config ..confopenssl.conf

复制的文件是 server.crt 和 server.key 到 conf 目录下。
完成后还需要修改虚拟主机设置。
sudo nano /etc/apache2/sites-available/default
修改 NameVirtualHost * 为:
NameVirtualHost *:80
NameVirtualHost *:443

然后增加新的虚拟主机配置文件。
sudo mkdir -p /var/larryli
sudo nano /etc/apache2/sites-available/larryli

内容如下:
<VirtualHost *:443>
ServerSignature On
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
ServerName larryli.vicp.net
ServerAdmin webmaster@localhost
DocumentRoot /var/larryli/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/larryli/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/larryli-error.log
LogLevel warn
CustomLog /var/log/apache2/larryli-access.log combined
</VirtualHost>

需要在 sites-enable 做一个符号链接才能启动该虚拟主机设置。
sudo ln -s /etc/apache2/sites-available/larryli /etc/apache2/sites-enable/001-larryli
001 是序数,以便 apache2 启动时按照正确的顺序加载配置
重新启动 apache2 即可使用 https 访问
sudo /etc/init.d/apache2 restart

然后安装 Subversion。
sudo apt-get install subversion
sudo apt-get install libapache2-svn

创建 svn 仓库。
sudo svnadmin create /var/larryli
因为要配置为通过 https 访问,更改文件属主。
sudo chown -R www-data:www-data /var/larryli
然后创建一个密码文件。
sudo htpasswd -c /etc/subversion/passwd larryli
(有文档写的是 htpassd2 命令)
可以增加多个用户。
然后修改虚拟主机配置文件。
sudo nano /etc/apache2/sites-available/larryli
内容如下:
<VirtualHost *:443>
ServerSignature On
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
ServerName larryli.vicp.net
ServerAdmin webmaster@localhost
<Location />
DAV svn
SVNPath /var/larryli
AuthType Basic
AuthName "larryli subversion repository"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
ErrorLog /var/log/apache2/larryli-error.log
LogLevel warn
CustomLog /var/log/apache2/larryli-access.log combined
</VirtualHost>

上面的设置允许匿名用户访问 svn 库,但只允许认证用户提交修改。
如果不需要限制,将 LimitExcept 段代码全部删除即可。
如果要限制匿名用户访问,则删除 LimitExcept 但保留下面的代码:
Require valid-user
最后重新启动 Apache2。
sudo /etc/init.d/apache2 restart

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据