svn 服务端

1 概述

本文详细描述了Ubuntu 环境下,SVN Apache SSL架构的SVN服务器的搭建过程。通过https来访问SVN服务器,采用基于Apache的用户认证管理。用户的权限使用authz配置。

2 安装Ubuntu 8.10服务器

可以是Ubuntu 8.10 Server或者是Desktop。安装过程中创建一个用户名为administrator的系统帐户,作为本服务器日常管理帐户。另外,为了方便后续的说明,假设服务器的ip地址为192.168.19.3。

安装完成后,需要先运行更新管理器,以获得最新的源列表。

3 安装Apache服务器

在新立得软件包管理器里面,搜索apache2并选择安装Apache2,libapache2-svn。安装完成后,确认能通过http访问http://192.168.19.3。正常情况下,会得到如下界面:

说明apache已经正常工作了。

4 创建SVN服务器

4.1 安装SVN

在新立得软件包管理器里面,搜索subversion,并选择安装subversion,subversion-tools。安装好之后,进入下一步。

4.2 增加组

方法如下:

l 在 Ubuntu 菜单上选择“系统->系统管理->用户和组”;

l 切换到“组”标签;

l 点击“添加组”按钮;

l 组名为“subversion”;

l 将您自己(administrator)和“www-data”(Apache 用户)加入组成员中;

l 点击“OK”以确认修改,关闭该程序。

或者直接使用命令,增加组和成员:

sudo addgroup subversion

sudo usermod -G subversion -a www-data administrator

当然,修改组也可以直接修改组文件: sudo vi /etc/group。

然后需要注销(我都是直接重新启动)再登录以便能够真正成为 subversion 组的一员。

4.3 创建SVN仓库

现在执行下面的命令

# cd /home

# sudo mkdir svn

#/usr/local/svn# sudo chown -R www-data:subversion svn

#/usr/local/svn# sudo chmod -R g rws svn

最后的一条命令赋予组成员对所有新加入文件仓库的文件拥有相应的权限。

下面的命令用于创建 SVN 文件仓库:

#sudo svnadmin create /home/svn

4.4 配置Apache服务器

先备份一下Apache2的配置文件,执行如下命令:

#/usr/local/svn# sudo cp -R /etc/apache2 /etc/apache2_bak

通过 WebDAV 协议访问 SVN 文件仓库,您必须配置您的 Apache 2 Web 服务器。您必须加入下面的代码片段到您的 /etc/apache2/mods-available/dav_svn.conf中:(加在文件最后面即可)

<Location /svn >

DAV svn

SVNPath /home/svn

AuthType Basic

AuthName "welcome to subversion repository"

AuthUserFile /etc/subversion/passwd

#<LimitExcept GET PROPFIND OPTIONS REPORT>

Require valid-user

#</LimitExcept>

</Location>

如果需要用户每次登录时都进行用户密码验证,请将<LimitExcept GET PROPFIND OPTIONS REPORT>与</LimitExcept>两行注释掉。

当您添加了上面的内容,您必须重新启动 Apache 2 Web 服务器,请输入下面的命令:

sudo /etc/init.d/apache2 restart

接下来,您需要创建 /etc/subversion/passwd 文件,该文件包含了用户授权的详细信息。要添加用户,您可以执行下面的命令:

sudo htpasswd -c /etc/subversion/passwd superman

它会提示您输入密码,当您输入了密码,该用户就建立了。您可以通过下面的命令来访问文件仓库:

你还可以继续创建其他用户,但是不能再用-c选项了,因为-c选项表示创建一个新的用户授权文件,一旦选用,原有的授权文件就被覆盖了。

sudo htpasswd /etc/subversion/passwd user_name

此时,应该就可以通过web方式访问svn服务器了。在浏览器的地址栏输入http://192.168.19.3/svn/会弹出用户验证的窗口:

输入正确的用户名和口令后,就能看到如下界面:

 

 

5 配置SSL

这里可以参考:http://www.cnblogs.com/passos/archive/2006/02/18/332992.html

关于SSL的配置很多,这里我根据实际情况,做了一个简单实用的SSL加密机制。方法如下:Apache2在Ubuntu 系统内的基本情况如下:

l 默认站点在 /var/www/

l 配置文件在 /etc/apache2/

l 日志在 /var/log/apache/

l 启动脚本是 /usr/sin/apache2ctl 或者 /etc/init.d/apache2

 

 

Apache2已经在前面第2步安装好了,下面安装SSL模块:

安装SSL模块

sudo a2enmod ssl

我们可以使用openssl来创建,这里我就是此方法创建SSL证书的。

#sudo openssl req -x509 -newkey rsa:1024 -keyout apache.pem -out apache.pem -nodes -days 999

注:在要求输入Common Name (eg, YOUR name) 时,输入你的主机名。

示例过程如下:

#sudo openssl req -x509 -newkey rsa:1024 -keyout apache.pem -out apache.pem -nodes -days 999

Generating a 1024 bit RSA private key

.....................

..

writing new private key to 'apache.pem'

-----

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----

Country Name (2 letter code) [AU]:China

string is too long, it needs to be less than 2 bytes long

Country Name (2 letter code) [AU]:CN

State or Province Name (full name) [Some-State]:Beijing

Locality Name (eg, city) []:Haidian

Organization Name (eg, company) [Internet Widgits Pty Ltd]:ABC

Organizational Unit Name (eg, section) []:Dep9

Common Name (eg, YOUR name) []:SvnServer

Email Address []:111@gmail.com

此时/home/administrator目录下就有了一个apache.pem的文件

创建目录,存放证书文件

sudo mkdir /etc/apache2/ssl

复制一份站点配置做为SSL配置的原型

#sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl

#sudo ln -s /etc/apache2/sites-available/ssl /etc/apache2/sites-enabled/ssl

然后编辑SSL的配置

#sudo vi /etc/apache2/sites-enabled/ssl

把端口改为443(默认是80),加入SSL认证配置,其它的根据需要自己定制 与普通配置无异,以下蓝色字体为新添加的:

<VirtualHost *:443>

ServerSignature On

SSLEngine On

SSLCertificateFile /etc/apache2/ssl/apache.pem

ServerAdmin webmaster@localhost

DocumentRoot /var/www/

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /var/www/>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory "/usr/lib/cgi-bin">

AllowOverride None

Options ExecCGI -MultiViews SymLinksIfOwnerMatch

编辑Apache端口配置,去掉80端口的监听:

#sudo vi /etc/apache2/ports.conf

NameVirtualHost *:80

#Listen 80

<IfModule mod_ssl.c>

# SSL name based virtual hosts are not yet supported, therefore no

# NameVirtualHost statement here

Listen 443

</IfModule>

这里可以不用加“Listen 443”因为SSL默认认证的443端口已经打开。

别忘了把前面生成的SSL密钥文件拷贝过来

sudo cp /home/administrator/apache.pem /etc/apache2/ssl/

最后重新启动apache服务:

sudo /etc/init.d/apache2 restart

然后

netstat –an|grep :443

如果443已经打开,则说明https服务已经启动了。在浏览器上再验证一下:

https://192.168.19.3/svn

选择“是”则弹出如下验证窗口:

输入superman和口令之后:

说明加密的http访问svn也成功了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值