2018-04-28 08:02:05 Arvinzr 阅读数 1076
  • 带你玩转SVN

    SVN是版本控制利器,团队协作工具之一。本课程主要面向开发人员,帮助初学者意识到版本控制的重要性,掌握SVN环境的搭建,以及SVN客户端工具的使用。

    19215 人正在学习 去看看 刘运强

现实开发少不了svn或者git相关的代码管理工具,现在先说一下svn的服务器搭建,亲测可用,整理出来方便大家使用!

 

一、实验环境:

[root@node02 ~]# uname -a

Linux node02 2.6.32-504.el6.x86_64 #1 SMP Wed Oct 15 04:27:16 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

[root@node02 ~]# cat /etc/redhat-release 

CentOS release 6.6 (Final)

[root@node02 ~]#

[root@node02 ~]# ifconfig eth0

二、SVN Apache安装

这里我直接用yum安装

[root@node02 ~]# yum install subversion apr apr-util   mod_dav_svn  httpd

[root@node02 ~]#

[root@node02 ~]# rpm -qa subversion apr apr-util   mod_dav_svn  httpd

apr-util-1.3.9-3.el6_0.1.x86_64

subversion-1.6.11-15.el6_7.x86_64

apr-1.3.9-5.el6_2.x86_64

httpd-2.2.15-55.el6.centos.2.x86_64

mod_dav_svn-1.6.11-15.el6_7.x86_64

[root@node02 ~]# 

查看目录结构:

 

[root@node02 ~]# tree /etc/httpd/

/etc/httpd/

├── conf

│   ├── httpd.conf

│   └── magic

├── conf.d

│   ├── passwd

│   ├── README

│   ├── subversion.conf

│   ├── subversion.conf.bak

│   └── welcome.conf

├── logs -> ../../var/log/httpd

├── modules -> ../../usr/lib64/httpd/modules

└── run -> ../../var/run/httpd

5 directories, 7 files

[root@node02 ~]# 

目录配置:

(1)svn目录配置

[root@node02 ~]# mkdir -p /application/svn/svndata

[root@node02 ~]# mkdir -p /application/svn/svndata/svnpasswd/

[root@node02 ~]# 

[root@node02~]# touch /application/svn/svndata/svnpasswd/authz

[root@node02 ~]# touch /application/svn/svndata/svnpasswd/passwd

 

 

注意:这里的/application/svn/svndata是SVN的项目目录,该目录下就是我们平常的项目存放位置

目录/application/svn/svndata/svnpasswd/是用用户认证和权限文件存放路径,结构如下:

[root@node02 ~]# tree /application/svn/svndata/svnpasswd/

/application/svn/svndata/svnpasswd/

├── authz

└── passwd

 

 

0 directories, 2 files

[root@node02 ~]# 

(2)启动SVN

[root@node02 ~]# svnserve -d -r /application/svn/svndata/

[root@node02 ~]# ps -ef|grep svn

root     13512     1  0 18:48 ?        00:00:00 svnserve -d -r /application/svn/svndata/

root     14068  1977  0 22:49 pts/0    00:00:00 grep svn

[root@node02 ~]# netstat -lnput|grep svn

tcp        0      0 0.0.0.0:3690                0.0.0.0:*                   LISTEN      13512/svnserve      

[root@node02 ~]# 

(3)创建项目

 

[root@node02 ~]# svnadmin create /application/svn/svndata/project001

[root@node02 ~]# tree /application/svn/svndata/project001/

/application/svn/svndata/project001/

├── conf

│   ├── authz

│   ├── passwd

│   └── svnserve.conf

├── db

│   ├── current

│   ├── format

│   ├── fsfs.conf

│   ├── fs-type

│   ├── min-unpacked-rev

│   ├── rep-cache.db

│   ├── revprops

│   │   └── 0

│   │       └── 0

│   ├── revs

│   │   └── 0

│   │       └── 0

│   ├── transactions

│   ├── txn-current

│   ├── txn-current-lock

│   ├── txn-protorevs

│   ├── uuid

│   └── write-lock

├── format

├── hooks

│   ├── post-commit.tmpl

│   ├── post-lock.tmpl

│   ├── post-revprop-change.tmpl

│   ├── post-unlock.tmpl

│   ├── pre-commit.tmpl

│   ├── pre-lock.tmpl

│   ├── pre-revprop-change.tmpl

│   ├── pre-unlock.tmpl

│   └── start-commit.tmpl

├── locks

│   ├── db.lock

│   └── db-logs.lock

└── README.txt

 

 

10 directories, 28 files

[root@node02 ~]# 

(3)修改项目配置文件

 

[root@node02 ~]# cd /application/svn/svndata/project001

[root@node02 project001]# ls

conf  db  format  hooks  locks  README.txt

[root@node02 project001]# 

[root@node02 project001]# cd conf/

[root@node02 conf]# ll

total 12

-rw-r--r-- 1 root root 1080 Dec 31 22:53 authz

-rw-r--r-- 1 root root  309 Dec 31 22:53 passwd

-rw-r--r-- 1 root root 2279 Dec 31 22:53 svnserve.conf

[root@node02 conf]# 

[root@node02 conf]# vim svnserve.conf

anon-access = none         ------------------->12行去掉注释,并修改read为none

auth-access = write        ------------------->13行去掉注释

password-db = /application/svn/svndata/svnpasswd/passwd ------------>18行去掉注释

authz-db = /application/svn/svndata/svnpasswd/authz ---------------->25行去掉注释

[root@node02 conf]#

提示:svnserve.conf中每个参数都要顶格写,开头不能有空格

或者执行如下命令修改:

[root@node02 conf]# sed -i 's/# anon-access = read/anon-access = none/g' svnserve.conf  

[root@node02 conf]# sed -i 's/# auth-access = write/auth-access = write/g' svnserve.conf  

[root@node02 conf]# sed -i 's%# password-db = passwd%password-db = /application/svn/svndata/svnpasswd/passwd%g' svnserve.conf

[root@node02 conf]# sed -i 's%# authz-db = authz%authz-db = /application/svn/svndata/svnpasswd/authz%g' svnserve.conf  

修改完之后可以运行如下命令进行检查

 

[root@node02  conf]# egrep "\-access|\-db =" svnserve.conf                                                          

anon-access = none

auth-access = write

password-db = /application/svn/svndata/svnpasswd/passwd

authz-db = /application/svn/svndata/svnpasswd/authz

[root@node02  conf]#

确认配置修改无误后,拷贝用户认证文件passwd和权限管理文件authz到刚才创建的目录下:

[root@node02 conf]# cp authz  passwd  /application/svn/svndata/svnpasswd/

[root@node02 conf]# tree /application/svn/svndata/svnpasswd/

/application/svn/svndata/svnpasswd/

├── authz

└── passwd

 

 

0 directories, 2 files

[root@node02 conf]# 

(4)创建用户admin、user001并设置密码,格式:用户名 = 密码

[root@node02 svnpasswd]# cat passwd 

### This file is an example password file for svnserve.

### Its format is similar to that of svnserve.conf. As shown in the

### example below it contains one section labelled [users].

### The name and password for each user follow, one account per line.

 

 

[users]

# harry = harryssecret

# sally = sallyssecret

admin = admin

user001 = 123456

[root@node02 svnpasswd]# 

访问权限:

[root@node02 svnpasswd]# cat authz 

-----省略部分-------------

 

 

[aliases]

# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

 

 

[groups]

# harry_and_sally = harry,sally

# harry_sally_and_joe = harry,sally,&joe

users = admin,user001

# [/foo/bar]

# harry = rw

# &joe = r

# * =

 

 

# [repository:/baz/fuz]

# @harry_and_sally = rw

# * = r

[/]

@users = rw

zhangpeng=rw

[root@node02 svnpasswd]# 

说明:users= admin,user001将admin、user001两个用户赋值用户组users,@user = rw 是让用户组对跟目录有读写权限,也就是说用户admin、user001这两个用户对根目录有读写的权限。

最好在最后加上

zhangpeng=rw  

这样是指对某个单独的用户放开了读写权限,然后重启服务,在客户端连接即可。

到这里svn服务器算搭建完成。如有疑问请留言!

2018-07-09 13:59:47 qq_38085855 阅读数 55
  • 带你玩转SVN

    SVN是版本控制利器,团队协作工具之一。本课程主要面向开发人员,帮助初学者意识到版本控制的重要性,掌握SVN环境的搭建,以及SVN客户端工具的使用。

    19215 人正在学习 去看看 刘运强
本文是在CentOS中采用yum安装方式。优点:简单,一键安装,不用手动配置环境变量等。缺点:安装位置为yum默认,比如我们公司服务器上安装软件有自己的规定,一般会采用压缩包安装。

以下是我在CentOS7.2(阿里云服务器)下部署方式,安装步骤如下:

whereis svn 查看svn安装目录

一、yum安装subversion

    1. 安装subversion yum install subversion
    2. 查看安装版本,检查安装是否成功 svnserve --version  ,我装的版本为  1.7.14

    3. 查看安装位置  rpm -ql subversion

二、创建版本库

    1、建立SVN根目录 

        mkdir /data/svn

    2、新建版本库:TestCode 
        svnadmin create /data/svn/TestCode
        注:执行完后,/data/svn/TestCode目录下文件说明
        README.txt   版本库的说明文件
        conf              配置文件件夹(后续操作最多的文件夹)
        db                SVN数据文件文件夹
        format          当前版本库的版本号
        hooks           SVN的钩子脚本文件夹

        locks            SVN的文件锁相关的文件夹

三、修改配置 进入conf目录(该svn版本库配置文件)

    authz文件是权限控制文件
    passwd是帐号密码文件
    svnserve.conf SVN服务配置文件

    1、设置帐号密码

        vi passwd     在[users]块中添加用户和密码,格式:帐号=密码,如 czyczy=czyczy

        

    2、设置权限

        vi authz

        

        在末尾添加如下代码:

        [groups]

        admin = czyczy

        [/]
        admin=rw
        意思是版本库的根目录对其有读写权限,w只有读权限。

    3、修改svnserve.conf文件

        vi svnserve.conf
        打开下面的几个注释:
        anon-access = read #匿名用户可读
        auth-access = write #授权用户可写
        password-db = passwd #使用哪个文件作为账号文件
        authz-db = authz #使用哪个文件作为权限文件

        realm = /var/svn/svnrepos # 认证空间名,版本库所在目录

        

四、启动svn版本库

    svnserve -d -r /data/svn/TestCode

    配置防火墙

    不一定每个人都需要设置,可以先测试后再看是否需要打开端口
    # vi /etc/sysconfig/iptables
    添加一下内容:
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
    保存后重启防火墙

    # service iptables restart

    或者关闭防火墙

    1. 永久性生效
    开启:chkconfig iptables on
    关闭:chkconfig iptables off
    2. 即时生效,重启后失效
    开启:service iptables start
    关闭:service iptables stop

五、linux/unix下svn自动更新

    1.找到svn的所在目录:
    我的目录在/usr/local/svn/myproject

    2.新建post-commit 

    vim hooks/post-commit

    #!/bin/sh
    REPOS="$1"
    REV="$2"
    export LANG=en_US.UTF-8
    SVN_PATH=/usr/bin
    WEB_PATH=/var/www/html
    SVN_USER=xiaowang
    SVN_PASS=123456
    LOG_PATH=/tmp/svn.log
    echo `date "+%Y-%m-%d %H:%M:%S"` >> $LOG_PATH
    echo `whoami`,$REPOS,$REV >> $LOG_PATH
    $SVN_PATH/svn update $WEB_PATH --username $SVN_USER --password $SVN_PASS --no-auth-cache >>     $LOG_PATH

    exit 0

    3.给post-commit文件设置权限

        首先检查代码中是否有可执行命令 #!/bin/sh
        然后 检查post-commit权限
        post-commit 脚本文件的权限不对,post-commit 脚本必须有 +x 权限。
        chown svn:svn post-commit
        chmod +x post-commit

    配置完成后重新启动

查看svn是否启动

 ps -ef|grep svnserve

kill -9 24872 终止该条进程








2019-08-27 11:54:43 SIMBA1949 阅读数 37
  • 带你玩转SVN

    SVN是版本控制利器,团队协作工具之一。本课程主要面向开发人员,帮助初学者意识到版本控制的重要性,掌握SVN环境的搭建,以及SVN客户端工具的使用。

    19215 人正在学习 去看看 刘运强

Linux 安装与配置 SVN 服务器

一、下载安装 SVN 服务器

yum -y install subversion

二、创建 SVN 工作根目录

mkdir -p /home/svn/repos

三、使用 svnadmin 创建 SVN 仓库

svnadmin create /home/svn/repos/project

四、配置 project 用户/权限

cd /home/svn/repos/project
cd conf
  • authz:权限配置文件
  • passwd:用户名密码文件
  • svnserve.conf:资源库管理配置文件

4.1 编辑 conf/passwd 文件,配置用户密码

test1 = 123456
test2 = 123456

4.2 编辑 conf/authz 文件,用户权限配置

[/]
test1 = rw
test2 = r
* =
  • [/] 表示针对这个文件夹的权限
  • rw 和 r 分别代表 可读可写 和 只读
  • * 表示 任何用户
  • 空表示不可读

4.3 编辑 conf/svnserve.conf,资源库管理配置,需要取消四个注释即可

anon-access = read
auth-access = write
password-db = passwd
authz-db = authz
# realm = My First Repository 可以选择取消注释或者不取消
realm = My First Repository
  • anon-access = read :表示非授权(游客)用户访问范围 默认值:read
  • auth-access = write : 表示授权用户访问范围 默认值:write
  • password-db = passwd :passwd 文件相对路径,默认指向当前目录的 passwd 文件
  • authz-db = authz :authz 文件相对路径,默认指向当前目录的 authz 文件
  • realm = My First Repository :指定版本库认证域,可以随意设置,默认即可

4.4 注意,SVN 默认端口是 6390,需要释放 6390 端口

五、启动 SVN 服务

svnserve -d -r /home/svn/repos

六、访问测试

浏览器或者 TortoiseSVN 访问:

svn://192.168.3.133/project
或者
svn://192.168.3.133:3690/project
2018-02-07 22:07:00 NRatel 阅读数 88
  • 带你玩转SVN

    SVN是版本控制利器,团队协作工具之一。本课程主要面向开发人员,帮助初学者意识到版本控制的重要性,掌握SVN环境的搭建,以及SVN客户端工具的使用。

    19215 人正在学习 去看看 刘运强

以项目名为monkey为例

1.安装svn

ubuntu下: sudo apt-get install subversion
centos下: sudo yum install subversion

2.仓库目录

提前创建好 /home/niehongqiang/svn/repository
修改读写权限

sudo chmod -R 777 /home/niehongqiang/svn/repository

3.创建项目仓库

sudo svnadmin create /home/niehongqiang/svn/repository/monkey

(若要删除,直接删除创建出的monkey目录)
修改读写权限

sudo chmod -R 777 /home/niehongqiang/svn/repository/monkey/db

4.修改svnserve.conf 去掉下面几条#注释

vi /home/niehongqiang/svn/repository/monkey/conf/svnserve.conf
[general]
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz

5.修改passwd,添加用户名=密码

vi /home/niehongqiang/svn/repository/monkey/conf/passwd

6.修改authz,设置用户权限

vi /home/niehongqiang/svn/repository/monkey/conf/authz

方便粘贴, 可以直接拷贝使用,然后更改项目名称和各组成员:

[groups]
admin=niehongqiang
developer_client=niehongqiang
developer_server=niehongqiang
developer_design=guocheng,wangyao
developer_art=haoshuying,dongqiaowen,yangzhihua

[monkey:/]
@admin=rw

[monkey:/monkey-client]
@admin=rw
@developer_client=rw

[monkey:/monkey-server]
@admin=rw
@developer_server=rw

[monkey:/monkey-design]
@admin=rw
@developer_design=rw
*=r

[monkey:/monkey-art]
@admin=rw
@developer_art=rw
@developer_client=r
@developer_design=r

[monkey:/monkey-others]
*=rw

这里用的是游戏开发习惯(严格)
1).管理员有所有目录读写权限;(事实上管理员权限也无法限制,因为可以改所有人的权限)
2).客户端目录允许客户端程序员读写;
3).服务端目录允许服务端程序员读写;
4).策划目录允许策划读写、其他所有人可读;
5).美术目录允许美术读写、客户端程序员和策划可读;
6).备用目录允许所有人读写。
根据实际情况,可放宽权限。
注意:当单独定义了子目录的权限时,用户拥有的对父目录的访问权限,对子目录不适用。如仍需要这些权限。需要分别添加权限至各子目录, 如上边代码的admin。

7.启动

sudo svnserve -d -r /home/niehongqiang/svn/repository/

常用参数:(使用 svnserve --help 查看详细)
-d : daemon mode
-r : root of directory to serve
--listen-port ARG : listen port. The default port is 3690. [mode: daemon, listen-once]
--listen-host ARG : listen hostname or IP address
By default svnserve listens on all addresses. [mode: daemon, listen-once]

查看svn进程

ps aux | grep svn

停止

sudo killall svnserver      或      sudo kill -9 进程号 

8.本地检出

svn co svn://localhost/monkey --username niehongqiang --password niehongqiang

注意: 默认svn服务器端口是3690。 访问的时候不用加上端口号。

9.mkdir创建子目录, svn ci -m ""提交

monkey-client
monkey-server
monkey-design
monkey-art
monkey-others

10.外网检出

windows下安装svn后 checkout
如,检出客户端文件,输入:
svn://59.110.226.33:3690/monkey/monkey-client
注意,阿里云要在实例安全组规则中 开启入方向的3690的端口号。
阿里云安全组设置帮助文档: https://help.aliyun.com/document_detail/58746.html?spm=a2c4g.11186623.6.707.3HNgHH

--------------------------------------------------NRatel割--------------------------------------------------


NRatel
转载请说明出处,谢谢


2017-03-03 17:30:09 jiedao_liyk 阅读数 568
  • 带你玩转SVN

    SVN是版本控制利器,团队协作工具之一。本课程主要面向开发人员,帮助初学者意识到版本控制的重要性,掌握SVN环境的搭建,以及SVN客户端工具的使用。

    19215 人正在学习 去看看 刘运强

linux下svn服务器的安装,及一个项目的创建

  1. yum install subversion

  2. 输入rpm -ql subversion查看安装位置

  3. 创建svn版本库目录 mkdir -p /var/svn/svnrepos

  4. 创建版本库 svnadmin create /var/svn/svnrepos
    执行了这个命令之后会在/var/svn/svnrepos目录下生成如下这些文件
    这里写图片描述

  5. 进入conf目录(该svn版本库配置文件)
    authz文件是权限控制文件
    passwd是帐号密码文件
    svnserve.conf SVN服务配置文件

  6. 设置帐号密码
    vi passwd
    在[users]块中添加用户和密码,格式:帐号=密码,如dan=dan

  7. 设置权限
    vi authz
    在末尾添加如下代码:
    [/]
    dan=rw
    w=r
    意思是版本库的根目录dan对其有读写权限,w只有读权限。

  8. 修改svnserve.conf文件
    vi svnserve.conf
    打开下面的几个注释:
    anon-access = read #匿名用户可读
    auth-access = write #授权用户可写
    password-db = passwd #使用哪个文件作为账号文件
    authz-db = authz #使用哪个文件作为权限文件
    realm = /var/svn/svnrepos # 认证空间名,版本库所在目录

  9. 启动svn版本库
    svnserve -d -r /var/svn/svnrepos

以上完成了一个项目的创建,但是往往svn是要来管理多项目的,那么看以下步骤:

  1. 创建两个svn仓库
    mkdir -p /opt/svn/project1
    mkdir -p /opt/svn/project2
    svnadmin create /opt/svn/project1
    svnadmin create /opt/svn/project2

  2. 根据上方说明,分别对每个项目的配置文件进行配置(如用户名密码分配等)

  3. 启动svn服务 svnserve -d -r /opt/svn/
    注意:如果在一台服务器上同时启动多个版本管理,那么启动路径必须是所有项目仓库的根路径
    比如/opt/svn/project1以及/opt/svn/project2这两个目标需要在/opt/svn/下启动

没有更多推荐了,返回首页