svn相关配置及学习

一:svn独立安装配置

svn服务器有2种运行方式

1.独立服务器 (例如:svn://xxx.com/xxx);
2.借助apache。(例如:http://svn.xxx.com/xxx);

1.svn安装

#最新版本svn需要sqlite的版本最低为3.7.15,yum自带sqlite版本为3.7.12,所以需要手动编译安装最新版本sqlite

wget http://www.sqlite.org/2013/sqlite-autoconf-3071700.tar.gz

tar xf sqlite-autoconf-3071700.tar.gz

cd sqlite-autoconf-3071700

./configure && make && make install && echo OK

编译安装subversion需要apr,apr-util这里apr apr-util安装略

wget http://mirrors.cnnic.cn/apache/subversion/subversion-1.8.1.tar.bz2

tar subversion-1.8.1.tar.bz2

cd subversion-1.8.1

./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util

make && make install

为了方便下操作,把svn相关的命令添加到环境变量中:
echo “export PATH=$PATH:/usr/local/subversion/bin/” >> /etc/profile
source /etc/profile

/usr/local/subversion/bin/svnserve --version

如果显示如下,svn安装成功:

2.svn配置

1)创建svn库

创建 svn专用户  # useradd pocsvn

创建SVN版本库目录  #mkdir /home/pocsvn/project

创建SVN仓库 # svnadmin create /home/pocsvn/project/poc

版本仓库创建成功后,会在/home/pocsvn/project/poc/conf目录下生成三个配置文件:

authz       #权限配置

passwd    # 用户和口令配置

svnserve.conf # SVN服务配置

将目录 project 目录拥有者修改为 pocsvn 用户:

#chown -R pocsvn:pocsvn /home/pocsvn/project

#chmod 755 /home/pocsvn/project

2)配置passwd文件

vim /home/pocsvn/project/poc/conf/passwd

fuquanjun = fuquanjun    #配置允许访问svn库的帐户,前面是用户名,后面是密码

3)配置authz(详细配置参考svn+apache)

4)配置svnserve.conf

vim /home/pocsvn/project/poc/conf/svnserve.conf

anon-access = read        #匿名用户只读

auth-access = write                                      #认证用户访问版本库的权限

password-db = /home/pocsvn/project/poc/conf/passwd  #指定用户口令配置文件名
        authz-db = /home/pocsvn/project/poc/conf/authz            #指定权限配置文件名

5)启动svn

切换到pocsvn用户

#/usr/local/subversion/bin/svnserve -d -r /home/pocsvn/project

#默认的启动端口号为3690

-d 表示以 daemon 方式(后台运行)运行

-r 指定根目录是/home/pocsvn/project

#/usr/local/subversion/bin/svnserve -d –listen-port 9999 -r /home/pocsvn/project

–listen-port 9999表示使用9999端口,可以换成你需要的端口。但注意,使用1024以下的端口需要root权限;

这里编写一个svn服务启动脚本

#!/bin/bash
# build this file in /etc/rc.d/init.d/svn
# chmod 755 /etc/rc.d/init.d/svn
# centos下可以用如下命令管理svn: service svn start(restart/stop)
SVN_HOME=/home/pocsvn/project
if [ ! -f "/usr/local/subversion/bin/svnserve" ]
then
    echo "svnserver startup: cannot start"
    exit
fi
case "$1" in
    start)
        echo "Starting svnserve..."
        /usr/local/subversion/bin/svnserve -d -r $SVN_HOME
        echo "Finished!"
        ;;
    stop)
        echo "Stoping svnserve..."
        killall svnserve
        echo "Finished!"
        ;;
    restart)
        $0 stop
        $0 start
        ;;
    *)
        echo "Usage: svn { start | stop | restart } "
        exit 1
esac

6)查看后台进程

$ ps -ef | grep svn

root      2983     1  0 09:19 ?        00:00:00 svnserve -d -r /home/pocsvn/project

jackie    4570  2496  0 10:51 pts/1    00:00:00 grep svn

其实也可以将svn加入到开机启动
编辑rc.local文件:vi /etc/rc.d/rc.local
加入如下启动命令:
/usr/local/svn/bin/svnserve -d –listen-port 9999 -r /home/pocsvn/project
11、如果想停止svn,则使用如下命令:
killall svnserve

客户端连接SVN

在windows下比较好用的客户端是 TortoiseSVN ,下载地址:http://tortoisesvn.net/downloads.html

安装TortoiseSVN 在Windows下新建一个文件夹svn,右键点击文件夹,选择SVN Checkout:

地址如下:
svn://{your-server-ip}:9999/poc 或者 svn://{your-server-ip}/poc

二:源码配置svn+apache

1. 安装apache

pcre apr apr-util安装略

wget http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.6.tar.bz2

tar zxf httpd-2.4.6.tar.bz2

cd /usr/local/httpd-2.4.6

./configure --prefix=/usr/local/apache --enable-dav --enable-so --enalbe-maintainer-mode --enable-rewrite --with-deflate --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre

make && make install

2. 安装svn

#最新版本svn需要sqlite的版本最低为3.7.15,yum自带sqlite版本为3.7.12,所以需要手动编译安装最新版本sqlite

wget http://www.sqlite.org/2013/sqlite-autoconf-3071700.tar.gz

tar xf sqlite-autoconf-3071700.tar.gz

cd sqlite-autoconf-3071700

./configure --prefix=/usr/local/sqlite

make && make install

wget http://mirrors.cnnic.cn/apache/subversion/subversion-1.8.1.tar.bz2

tar subversion-1.8.1.tar.bz2

cd subversion-1.8.1

./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-sqlite=/usr/local/sqlite

make && make install

3. 在apache配置文件中加载svn模块

cp subversion-1.8.1/subversion/mod_authz_svn/.libs/mod_authz_svn.so /usr/local/apache/modules/

cp subversion-1.8.1/subversion/mod_dav_svn/.libs/mod_dav_svn.so /usr/local/apache/modules/

vim /usr/local/apache/conf/httpd.conf

LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module    modules/mod_dav_svn.so
LoadModule authz_svn_module  modules/mod_authz_svn.so
注:必须要先加载mod_sav_svn再加载mod_authz_svn,否则报错
4.配置 svn+apache

1)创建svn库

创建svn专用户  # useradd pocsvn

创建SVN 版本库目录  #mkdir /home/pocsvn/project

创建SVN仓库 # svnadmin create /home/pocsvn/project/poc

将目录 project 目录拥有者修改为 pocsvn 用户:

#chown -R pocsvn:pocsvn /home/pocsvn/project

#chmod 755 /home/pocsvn/project

2)配置svn依赖apache

sed -i ‘s/User daemon/User pocsvn/‘ /usr/local/apache/conf/httpd.conf

sed -i ‘s/Group daemon/Group pocsvn/‘ /usr/local/apache/conf/httpd.conf

sed -i ‘s/#ServerName.*/ServerName localhost/‘ /usr/local/apache/conf/httpd.conf

sed -i ‘s/[email protected]/[email protected]/‘ /usr/local/apache/conf/httpd.conf

vim /usr/local/apache2/conf/httpd.conf

<Location /home/pocsvn/project>
DAV svn
SVNParentPath /home/pocsvn/project   #svn库的根目录,表示根目录下每个子目录都是一个版本库
AuthType Basic
AuthName "welcome to project"      #浏览器登陆时的提示信息。随便写
AuthUserFile /home/pocsvn/project/passwd    #用户的密码信息
AuthzSVNAccessFile /home/pocsvn/project/poc/conf/authz      #指向svn库的conf目录下authz
Require valid-user      #告诉apache在authfile中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问新建库
</Location>

3)生成passwd文件

htpasswd -bc /home/pocsvn/project/passwd  hello  hello123

#在/home/pocsvn/project/下生成passwd文件,用户名为hello,密码为hello123

htpasswd -b /home/pocsvn/project/passwd  hello2  hello123

#在/home/pocsvn/project/passwd文件中添加用户名为hello,密码为hello123

4)编辑用户权限文件 authz

vi /home/pocsvn/project/poc/conf/authz

[groups]          #表示群组设置
admin = hello     #表示admin群组里的成员有hello,如果要配置多个,用逗号分隔
develop = hello2  #表示develop群组里的成员有hello2,如果要配置多个,用逗号分隔
[poc:/]           #表示仓库poc的根目录下的访问权限
hello = rw        #poc仓库hello用户具有读和写权限
hello2 = r        #poc仓库hello2用户具有只读权限
@admin = rw       #表示群admin的成员都具有读写权限
@develop = r      #表示群poc的成员都具有只读权限
[/]               #表示在所有仓库的根目录下
* = r             #表示对所有的用户都具有读权限

注:在编辑authz时,所有行都必须要顶头写,不能有缩进,否则报错。

5)修改权限

chmod 644 /home/pocsvn/project/passwd

chown -R pocsvn:pocsvn  /home/pocsvn/project/passwd

6)启动apache

service httpd start

7)通过http访问方式

http://ip地址/home/pocsvn/project/poc 会提示输入用户名密码,进去以后就可以看到相关文件了。

8)linux客户端访问方式  svn co svn://192.168.2.185/poc

三:svn多版本配置实例

既可以通过Windows客户端访问,也可以通过http访问

代码仓库有三个仓库:project1,project2,project3

假设人员有3个人:eg1,eg3,eg5,

eg1,只能访问project1;

eg3,只能访问project2;

eg5,只能访问project3;

二 实现

创建svn用户  useradd svn

创建版本库/home/svn

mkdir /home/svn

cd /home/svn

//创建三个代码仓库

svnadmin create project1

svnadmin create project2

svnadmin create project3

//把两个权限配置文件复制到SVN

//根路径下,统一管理所有代码仓库

cd/projcet1/conf

cp authz passwd /home/svn

//打开配置文件

vi svnserve.conf

修改成如下:

anon-access = none               //禁止匿名访问

auth-access = write

password-db = /home/svn/passwd   //统一使用密码文件

authz-db = /home/svn/authz

realm =   project1               //权限域名,很重要,写你的工程名

分别修改project2的svnserve.conf和上面一样,最后一行分别写

anon-access = none               //禁止匿名访问

auth-access = write

password-db = /home/svn/passwd   //统一使用密码文件

authz-db = /home/svn/authz

realm =   project2              //权限域名,很重要,写你的工程名

分别修改project3的svnserve.conf和上面一样,最后一行分别写

anon-access = none               //禁止匿名访问

auth-access = write

password-db = /home/svn/passwd   //统一使用密码文件

authz-db = /home/svn/authz

realm =   project3              //权限域名,很重要,写你的工程名

修改两个权限管理文件:

passwd文件

//用户名 = 密码

[users]

eg1 = 123

eg3 = 123

eg5 = 123

authz文件

[groups]                  //分组

admin = eg1

guest = eg3

guset1 = eg5

[/]                 //管理者拥有所有读写权限

* =

@admin = rw

[project1:/]                 //工程1的访问控制,guest1,2无法访问

@admin = rw

eg1 = rw

[project2:/]

@guest = rw

eg3 = rw

[project3:/]

@guest1 = rw

eg5 = rw

三 重启

svnserve -d -r /home/svn

停止命令  killall svnserve

实际测试:各组成员只能访问自己的项目,无权限查看别人的项目,只有管理员能查看所有项目工程。

四:http访问方式配置

vim /usr/local/httpd/conf/httpd.conf

<Location /home/svn>
DAV svn
SVNParentPath /home/svn 
AuthType Basic
AuthName "welcome to project"      
AuthUserFile /home/svn/passwd_web    
AuthzSVNAccessFile /home/svn/authz     
Require valid-user     
</Location>

因为http方式访问需要的密码文件需要加密,所以这里重新创建了一份用户名和密码的文件

htpasswd -bc /home/svn/passwd_web eg1 123

htpasswd -b /home/svn/passwd_web eg3 123

htpasswd -b /home/svn/passwd_web eg5 123

将目录 project 目录拥有者修改为 pocsvn 用户:

#chown -R svn:svn /home/svn

#chmod 755 /home/svn

#chmod 644 /home/svn/passwd_web  ###加强文件安全

采用http访问 http://ip地址/home/svn/project1 或者 http://ip地址/home/svn/project2

linux客户端访问 svn co svn://192.168.2.185/project1

假设在/home/svn/share下面还有二个项目game,mobile

方法如下:

mkdir /home/svn/share

svnadmin create /home/svn/share/game

svnadmin create /home/svn/share/mobile

修改相关文件

vim /home/svn/share/game/conf/svnserve.conf

anon-access = none               //禁止匿名访问

auth-access = write

password-db = /home/svn/passwd   //统一使用密码文件

authz-db = /home/svn/authz

realm =   game             //权限域名,很重要,写你的工程名

vim /home/svn/authz

[/]                 //管理者拥有所有读写权限

* =

eg1 = rw

[share/game:/]

eg5 = rw

[share/mobile:/]

eg1 = rw

vim /usr/local/httpd/conf/httpd.conf

<Location /home/svn>
DAV svn
SVNParentPath /home/svn 
AuthType Basic
AuthName "welcome to project"      
AuthUserFile /home/svn/passwd_web    
AuthzSVNAccessFile /home/svn/authz     
Require valid-user     
</Location>

<Location /home/svn/share>
DAV svn
SVNParentPath /home/svn/share
AuthType Basic
AuthName "welcome to project"      
AuthUserFile /home/svn/passwd_web    
AuthzSVNAccessFile /home/svn/authz     
Require valid-user     
</Location>

重新启动httpd服务

访问方式:http://ip/home/svn/share/game   http://ip/home/svn/share/mobile输入用户密码就可

以看到相关内容。

Linux客户端访问 svn co svn://192.168.2.185/share/game

svn co svn://192.168.2.185/share/mobile

四:svn迁移

svnadmin 命令用法:

create :创建版本库

dump :数据备份

verify :版本校验

1,进入原始svn库所在路径

cd /data/svn

2,使用svnadmin将需要迁移的项目dump出来

svnadmin dump test > test.bak

3,在新服务器上安装服务端和客户端程序

yum install -y subversion

4,确定svn版本库存放路径,并使用svnadmin创建版本库

mkdir -p /data/svn

cd /data/svn

svnadmin create test

5,将备份出来的数据,导入到新的数据库

svnadmin load test < test.bak

6,数据导完后,确定conf下的几个文件:authz,passwd,svnserve.conf

7,配置svn启动脚本,并开启服务。

vim /etc/init.d/svnserve

args="--daemon --root /data/svn --pid-file=${pidfile} $OPTIONS"

参考:http://songxj.blog.51cto.com/620981/396113

时间: 2024-11-10 15:40:27

svn相关配置及学习的相关文章

一起学ASP.NET Core 2.0学习笔记(二): ef core2.0 及mysql provider 、Fluent API相关配置及迁移

不得不说微软的技术迭代还是很快的,上了微软的船就得跟着她走下去,前文一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx.supervisor.mysql环境搭建搭建好了.net core linux的相关环境,今天就来说说ef core相关的配置及迁移: 简介: Entity Framework(以下简称EF) 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,EF Core是Entity

IDEA 从SVN检出项目相关配置

1.新建好一个工程,然后通过SVN检出项目 2.检出后一般tomcat的环境是配置好的,点击上方Project Structure按钮,弹出窗体,查看Project项,一般没问题,如果要配置就配置Project SDK 3.查看Modules项,一般也会自动添加,如果没有就通过上方加号点击导入,导入后点击项目名称,查看右边被标记为Source的文件,Source文件就是将要被编译到根路径下的文件,也就是对应eclipse中的JavaResource文件下的文件.如果有没有被标记的在此处点击上方S

Maven学习二:使用Nexus搭建Maven私服及相关配置

处于安全等原因的考虑,一些企业内部网络是不允许访问外部网络的,但是项目内部搭建的项目又是Maven架构,这样就需要企业在内部网络中搭建自己的Maven仓库服务,再者一些大型企业或者内部模块化组件化划分的比较清楚的企业开发的一些独立组件就需要使用Maven自建仓库来存放独立组件了. 使用Nexus搭建Maven私服主要有一下步骤: 1.首先需要准备好Java环境和Maven环境环境 2.到Nexus官方网站下载最新版本的Nexus https://www.sonatype.com/download

Linux学习总结(三十七)lamp之禁止php解析 user_agent 访问控制 php相关配置

一 禁止php解析 为了使某些网站更加安全,防止不法之徒上传某类伪装过的恶意木马文件,(比如php文件),盗取服务器重要资源,我们要针对一些目录做保护,禁止其解析php核心配置文件内容 <Directory /data/wwwroot/www.123.com/upload> php_admin_flag engine off </Directory> 修改虚拟主机配置文件,-t ,graceful 后测试我们发现将123.php放在其他在位置,可以正常解析,放在upload目录下,

SVN详细配置与使用 ——一步步教会您使用

项目管理在项目开发活动中起到非常重要的作用,而对于初学者来说学习有一定的难度,且不说如何使用,就是搭建过程恐怕也要费一般周折,介于此下面就通过图解的方式一步一步详细的教大家如何使用SVN,你只要耐心的一步步去实践就能掌握 目录: 一.SVN介绍 二.SVN服务器安装 三.SVN客户端安装 四.SVN服务配置 五.SVN客户使用 六.Eclipse SVN客户端插件安装 一.SVN介绍 SVN是个自由.开源的版本控制系统,绝大多数开源软件都使用SVN作为代码版本管理软件. SVN的官方网站http

SVN教程 -- 基于自己学习记录

SVN教程 -- 基于自己学习记录 1. 概述 a. 什么是SVN? Apache Subversion 通常被缩写成 SVN,是一个开放源代码的版本控制系统.相较于 git ,svn 是集中式版本控制系统. SVN官网链接 b. 什么是集中式版本控制系统? 集中式版本控制系统可以这样理解:所有的源代码都放在统一的服务器上,开发者从服务器下载项目组的最新代码,进入自己的分支进行开发工作,提交代码,最后再把自己的分支合并到服务器主分支上,更新服务器源代码.由于源代码最后都是放在服务器上的,服务器统

PHP面试 PHP基础知识 十一(开发环境及相关配置)

开发环境及相关配置 版本控制软件 集中式和分布式 集中式:集中式版本控制工具,版本库集中存放在中央服务器,团队成员里的每个人工作时从中央服务器下载代码,个人修改后再提交到中央服务器 分布式:分布式版本控制工具,没有中央服务器,每个开发人员都通过clone,在本地拷贝一个完整的仓库. Git 与 Svn Svn的特点(集中式) 1.每个版本库有唯一的URL,每个用户都从这个地址获取代码和数据 2.获取代码的更新,也只能连接到这个唯一的版本库,同步以取得最新数据 3.提交必须有网络连接(非本地版本库

TODO:Windows 10 下SVN简单配置

简单介绍一下SVN是什么?SVN是Subversion的简称,是一个开放源代码的版本控制系统,它采用了分支管理系统.说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的.svn服务器有2种运行方式:独立服务器和借助apache运行.两种方式各有利弊,用户可以自行选择.小O采用的时候独立服务器模式,配置简单. 下载Subversion 1.9.5 (Windows 64-bit) Includes all Subversion command-line binaries.zip包,解

Linux下SVN服务器安装配置及客户端安装说明

原文地址:http://wenku.baidu.com/link?url=h3dVAMx4azpOXEND5HQEE6nliE8-zc0GSQ03yv4cUs1vXMALXF64UsK7kT7kXm_zf7k6J6EHSszq4ZU_Tyn0JimTKV8SzI9Ac4veaxCG3im Linux 下 SVN 服务器安装配置 第一章 安装 1. 采用源文件编译安装.源文件共两个,为: subversion-1.6.1.tar.gz ( subversion 源文件) subversion-de