ubuntu下搭建web svn

2014-03-04 by Brant Xiong

前言

嗯,为了方便开发,需在VPS(环境为ubuntu 12.04)搭建svn服务。本文主要记录下搭建的整体步骤~

步骤

安装svn

过程主要参考:https://help.ubuntu.com/community/Subversion

首先安装subversion

sudo apt-get install subversion subversion-tools

安装完成后,需建立subversion用户组来拥有资源目录,然后将nginx的用户添加到该用户组(假设nginx的配置为user www-data;),具体操作如下:

sudo groupadd subversion
sudo usermod -a -G subversion www-data
#验证
sudo groups www-data

下面建立svn资源库,以myproject为例

sudo mkdir ~/svn
cd ~/svn
sudo mkdir myproject    
sudo svnadmin create ~/myproject

更改目录权限

cd ~/svn
sudo chown -R www-data:subversion myproject
sudo chmod -R g+rws myproject

下面就可以测试下安装是否OK了~

 svn co file://localhost/home/diors/svn/myproject

通过http访问svn

因为目前服务器采用的是nginx,但是由于nginx现在暂时不支持subversion,所以只能安装apache集成subversion,然后通过nginx proxy给apache来访问代码仓库。

安装apache2及subversion模块

sudo apt-get install apache2 libapache2-svn

修改端口并启动

sudo vim /etc/apache2/ports.conf
sudo /etc/init.d/apache2 restart

/etc/apache2/mods-available/dav_svn.conf中添加如下配置:

# Subversion版本可用的URL是http://域名或IP/svn
<Location /svn/myproject>
    # 告诉Apache是哪个模块响应哪个URL的请求,在这里是Subversion模块
    DAV svn

    #告诉Subversion需要查看的版本库在/home/svn之下。
    #如果不希望为每个单独的项目都进行单独的设置,可以把所有项目都存放在统一的资源库目录
    #使用SVNParentPath指令来指定存放所有项目的路径。否则使用SVNPath
    SVNParentPath ~/svn/

    #认证类型为基本认证,就是用户名和密码
    AuthType Basic

    #认证名称,将在浏览器界面弹出一个对话框,标题为Subversion repository
    AuthName "Subversion repository"
    AuthUserFile /etc/subversion/passwd

    #禁止匿名访问
    Require valid-user

</Location>

创建认证用户:

# first user
sudo htpasswd -c /etc/subversion/passwd user_name
# second user
sudo htpasswd /etc/subversion/passwd second_user_name

之后重启apache2就可以了,接下来就是配置nginx转发啦~

安装WebSVN

首先下载最新版本的WebSVN(官网:http://www.websvn.info/download/)

wget http://websvn.tigris.org/files/documents/1380/49056/websvn-2.3.3.tar.gz

解压后放到nginx的 wwwroot目录下,并配置nginx (这里就略去了~..)

之后,需修改配置文件:

cp ~/websvn/include/distconfig.php ~/websvn/include/config.php

vim ~/websvn/include/config.php

$config->addRepositorySubpath('myproject', 'file:///home/../myproject', 'myproject');

在nginx中增加访问控制:

 auth_basic "Restricted";
 auth_basic_user_file /etc/subversion/passwd;

结语

嗯,到这里,整个安装配置过程就算结束了~还算比较辛苦吧~O(∩_∩)O~


Comments

Follow me on GitHub