Ubuntu搭建SVN服务器多版本库

1  介绍
  Subversion是一个自由,开源的版本控制系统,这个版本库就像一个普通的文件服务器,不同的是,它可以记录每一次文件和目录的修改情况。这样就可 以很方面恢复到以前的版本,并可以查看数据更改细节。目前,Subversion已成为主流的开源代码版本管理软件之一,简称SVN。
2.  安装和服务器搭建
    执行下列指令安装 
sudo apt-get install subversion
3  创建版本库
   3.1先创建目录文件夹
sudo mkdir /home/svn
sudo mkdir /home/svn/project1
sudo mkdir /home/svn/project2
   3.2创建第一个项目project1 第二个项目project2
svnadmin create /home/svn/project1
svnadmin create /home/svn/project2
4. 为了便于管理,将所有版本库的密码和权限设置在同一个文件下面,操作步骤如下:
    4.1 取出project1下面conf文件夹下的authz和passwd两个文件到svn根目录下面
    4.2 修改每个版本库目录conf文件夹下面的svnserve.conf文件, 将
         # anon-access = read ,#auth-access = write ,# password-db = passwd,#authz-db = authz 修改为:
           anon-access = none ,auth-access= write,password-db = ../../passwd,authz-db = ../../authz
           (password-db = ../../passwd,authz-db = ../../authz代表相对路径而非绝对路径)
5. 定义一下几个角色用来测试
    5.1 配置管理员(svnadmin),用来管理整个库
    5.2 项目经理(manage),用来相关管理文档
    5.3 开发人员 (dev),测试开发是否正常
 6. 下面添加角色
       打开svn目录下的passwd文件,创建方法是在[user]下面添加 username = passwd,记得“=”前后的空格,如下图:
    (svnadmin控制所有项目,统一管理)
 
7. 为角色分配权限:
       假设(quxin是project1的项目经理,huzhixin是project2的项目经理,dev1、dev2是project1 的开发人员,dev3、dev4是project2的开发人员,test1是             project1的测试人员,test2是project2的测试人员)
       库目录及具体权限如下图所示:
       
    具体权限:(根目录下,svnadmin拥有所有权限,其他人只有读权限,要设置子目录权限,需设置子目录上级的权限方可,设置个别文件权限如下:)
   
8启动svn服务
   一次启动  sudo svnserve -d -r /home/svn
查看是否启动成功,可看的监听3690端口
sudo netstat -antp |grep svnserve
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 28967/svnserve
如果想关闭服务,可使用pkill svnserve
    开机自启动svn
在/etc/init.d目录建立一个脚本文件svnd.sh
cd /etc/init.d
touch svnd.sh
chmod +x svnd.sh
vi svnd.sh
输入如下内容:
#!/bin/bash
#svnserve startup
svnserve -d -r /ysh/svn
更新修改权限:
update-rc.d svnd.sh defaults
(若提示权限不足,请用sudo执行)
9 工具
SVN 服务器端:Subversion 1.5 ,客户端 TrotoiseSVN 1.5 (https://tortoisesvn.net/downloads.html)
10访问版本库地址
svn://ip/project1
svn://ip/project2
 
阿里云Ubuntu系统搭建SVN版本库浏览服务器
(4)sudo apt-get install apache2-utils libapache2-svn
其中subversion是SVN必须的,apache2和libapache2-svn是为了配置SVN服务器支持通过HTTP访问
##SVN服务器配置
1、相关用户、组的设定
sudo addgroup subversion
sudo usermod -G subversion -a www-data
2、配置Subversion
(1)配置dav_svn.conf文件
vim /etc/apache2/mods-available/dav_svn.conf
按照下面的步骤进行配置即可
<1>删除<Location /svn>和DAV svn这两行前面的注释
 
<2>删除SVNParentPath ...前面的注释,并且把后面的路径替换成创建的SVN的项目路径/home/svn 
 
<3>删除AuthType Basic、AuthName “Subversion Repository”前面的注释,去掉AuthUserFile所在行前面的注释,并且修改后面的路径为/etc/subversion/dav_svn.passwd,去掉AuthzSVNAccessFile所在行前面的注释,并且修改后面的路径为/etc/subversion/dav_svn.authz,删除Require valid-user和</Location>前面的注释,具体如下所示:
其中:
/etc/subversion/dav_svn.passwd文件是SVN用户名和密码的配置,指定基本用户验证的密码文件存放的位置
/etc/subversion/dav_svn.authz文件是访问权限配置
重启Apache 2 WEB服务器
sudo /etc/init.d/apache2 restart
3、更改版本库所示的用户、组
sudo chown -R root:subversion project1
赋予组成员对所有新加入文件仓库的文件拥有相应的权限
sudo chmod -R g+rws project1
4、用户和权限配置
(1)创建dav_svn.passwd文件并添加用户admin001,执行命令后会提示要输入密码
sudo htpasswd -c /etc/subversion/dav_svn.passwd admin001
继续添加新用户,去掉-c,否则会覆盖本文件
sudo htpasswd /etc/subversion/dav_svn.passwd admin002
(2)创建授权文件
vim /etc/subversion/dav_svn.authz
里面加入project1的权限配置,如
[groups]
administrator=admin001,admin002
[project1:/]
@administrator=rw
5、重启SVN服务器
killall svnserve
svnserve -d -r /home/svn/
至此SVN服务器搭建完成,可以在终端执行
svn checkout http://hostname/svn/project1   project1 --username 用户名 --password 密码 来checkout项目了
 
svn co svn://hostname/project1  /var/www/html/project1
sudo chmod -R 777 /var/www/html/XXX/ 
配置post-commit,实现自动同步svn版本库文件到web目录 
为了可以在修改完代码提交到SVN服务器后,WEB服务器直接同步.需要配置SVN的钩子,进入hooks目录,
cd /opt/svndata/repos/hooks
ls
可以看到有一个post-commit.tmpl文件,这是一个模板文件,复制一份放在此目录下,命名为post-commit,并将其用户组设为www,并设置为可执行:
cp post-commit.tmpl post-commit
chmod +x post-commit
这样就有了访问www目录的权限。
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件.
文件内容参考以下:
vi post-commit
 
#!/bin/sh
LANG=en_US.UTF-8
REPOS="$1"
REV="$2"
SVN_PATH=/usr/bin/svn
WEB_PATH=/var/www/html/XXX
LOG_PATH=/tmp/svn_update.log
#此行已注释
#/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache
echo "\n\n\n##########开始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >>$LOG_PATH
echo `whoami`,$REPOS,$REV >> $LOG_PATH
#注意将此行user和password改为你具体的user和password
$SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH
#chown -R www:www $WEB_PATH
关闭:killall svnserve svn
开启: svnserve -d -r /home/svn/
里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件。
 
问题解决:

1、阿里云服务器Ubuntu14系统搭建svn服务时候注意配置安全组中的规则

入站和出站  3690/3690   0.0.0.0/0

https://help.aliyun.com/document_detail/25475.html?spm=5176.2020520101.121.1.417f9c6cF8FDFw

2、阿帕奇配置apache2 配置文件记得添加ServerName  IP

https://askubuntu.com/questions/329323/problem-with-restarting-apache-2

3、Sudo问题:修,改/etc/hosts 添加/etc/hostname中的字符串

4、 解决svnserve: Can't bind server socket: Address already in use

/etc/init.d/svnserve start

netstat -antple | grep svn

killall  svnserve

解决办法:

# svnserve -d -r /mnt/westos --listen-port 3691

 
 

ubuntu搭建svn服务器并htpp访问版本库并svn与web同步的更多相关文章

  1. Ubuntu 搭建 LAMP 服务器

    /******************************************************************** * Ubuntu 搭建 LAMP 服务器 * 说明: * 想 ...

  2. CentOS搭建svn服务器支持https访问

    在CentOS6.3 64位机器上配置SVN服务器,并设置只允许HTTPS连接,可以配置多个repos源,每个源都拥有自己的组和成员,用于权限控制. 安装相关软件 Apache yum install ...

  3. Ubuntu搭建Anki服务器

    Ubuntu搭建Anki服务器 第一步安装Anki 阿里云的服务器,xshell远程登录上 #以root用户进行操作 #安装Akni服务 easy_install AnkiServer #添加名为an ...

  4. Ubuntu搭建NFS服务器,NFS协议详细分析

    目录 1. Ubuntu搭建NFS服务器 2. NFS协议分析 2.1 实验拓扑: 2.2 在kali抓包分析 1. Ubuntu搭建NFS服务器 ​ NFS(Network FileSystem,网 ...

  5. Git版本控制之ubuntu搭建Git服务器

    Git是一个开源的分布式版本控制系统,可以有效.高效的处理从很小到非常大的项目版本管理.使得开发者可以通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库,也可以将代码提交到Git服务 ...

  6. win10用filezilla server搭建ftp服务器一直无法访问

    win10用filezilla server搭建ftp服务器一直无法访问?? 是防火墙导致的,防火墙中允许filezilla server程序的

  7. 【转】SVN管理多个项目版本库

    转载地址:http://blog.163.com/zhangxuemin_zy/blog/static/10178565520115704031799/ SVN管理多个项目版本库:   安装SVN服务 ...

  8. VisualSVN Server安装后,TortoiseSVN远程无法访问版本库。

    修正!重演了一遍,发现总结有误,重新整理下.首先访问版本库的路径不清楚的话可以在VisualSVN Server的版本库上右键“Copy URL to Clipboard”.访问版本库失败的几种情况: ...

  9. SVN管理多个项目版本库 (windows,linux 通用)

    SVN管理多个项目版本库: . 安装SVN服务器软件,路径: C:\Program Files\Subversion . 在D盘创建svn根目录D:\SVN-CM . 在D:\SVN-CM下创建SVN ...

随机推荐

  1. Java修饰符final总结

    final 的意思是最终的,不可改变的. final可以用来修饰 a.类. b.方法(包括类方法和对象方法). c.变量(包括成员变量.局部变量). 1. final修饰类: 用final修饰的类不能 ...

  2. WinForm中使用BackgroundWorker异步加载数据并使用进度条

    在WinForm程序中,有时会因为加载大量数据导致UI界面假死,这种情况对于用户来说是非常不友好的.因此,在加载大量数据的情况下,首先应该将数据加载放在另一线程中进行,这样保证了UI界面的响应:其次可 ...

  3. http请求方法之options请求方法

    需预检的请求”要求必须首先使用 OPTIONS   方法发起一个预检请求到服务器,以获知服务器是否允许该实际请求. https://developer.mozilla.org/zh-CN/docs/W ...

  4. 创建一个dynamics 365 CRM online plugin (五) - Images in Plugin

    Snapshots of the primary entity's attributes from database before(pre) and after (post) the core pla ...

  5. 如何下载github子目录文件

    比如下载pai子目录下dockerfile文件,可以在浏览器键入 https://raw.githubusercontent.com/Microsoft/pai/master/src/dev-box/ ...

  6. celery+Rabbit MQ实战记录

    基于以前的一篇文章,celery+Rabbit MQ的安装和使用, 本文更加详细的介绍如何安装和使用celey, Rabbit MQ. 并记录在使用celery时遇到的一些问题. 1.安装 Rabbi ...

  7. C#使用CH341 SPI模块读写SD卡

    SD卡相关CMD命令 ;//卡复位 ; ;//命令9 ,读CSD数据 ;//命令10,读CID数据 ;//命令12,停止数据传输 ;//命令16,设置SectorSize 应返回0x00 ;//命令1 ...

  8. json2.js JSON解析程序

    源码: /* http://www.JSON.org/json2.js 2010-03-20 Public Domain. NO WARRANTY EXPRESSED OR IMPLIED. USE ...

  9. 按固定元素数目分割数组- perl,python

    要求:把40个元素的数组,按每行8个,分5行打印出来.如下图 1 2 3 4 5 6 7 89 10 11 12 13 14 15 1617 18 19 20 21 22 23 2425 26 27 ...

  10. JeeCMS v7 SSRF导致任意文件写入

    前言: 学习大佬的思路. from先知社区:https://xz.aliyun.com/t/4809 00X1: 是/ueditor/getRemoteImage.jspx 接口 通过构造upfile ...