linux搭建svn自动更新测试环境

1.安装svn服务器端 

yum install subversion   

2. 配置svn并启动svn服务,可以使用svnserve --help查看启动帮助,其中箭头指出来的配置项比较常用

      指定svn的数据存储路径
      mkdir -p /var/svn/svnrepos
      指定svn的配置文件信息路径
      mkdir -p /var/svn/users/svnpasswd
      启动svn服务

      svnserve -d -r /var/svn/svnsvnrepos/

3.使用svnadmin建立svn项目版本库

      查看创建项目版本库命令
      svnadmin --help
      svnadmin help create
      创建mall版本库
       svnadmin create /var/svn/svnrepos/mall

4. 配置mall版本的权限

     进入mall版本库配置目录,并备份配置文件
    cd /var/svn/svnrepos/mall/conf/
    cp -p svnserve.conf svnserve.conf.default
进行详细配置
#匿名访问的权限,可以是read,write,none,默认为read
     anon-access = none //禁止匿名访问
     auth-access = write //使授权用户有写权限
     password-db = /var/svn/users/passwd //密码数据库的路径
     authz-db = authz //指定权限认证文件
#认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字
realm=/var/svn/svnrepos/mall

5. 复制passwd文件到/var/svn/users目录并修改权限

      执行如下命令完成操作
      cp -p authz passwd /var/svn/users/
      cd /var/svn/users/
      ll
      chmod 700 passwd
      ll

6. 为Svn版本库创建用户并授权访问指定项目版本库

      编辑passwd文件配置用户和密码
      vi passwd 
      xingmaogou = xingmaogou
      xingyuan  = xingyuan
      编辑authz文件配置读取权限
       [<版本库>:/项目/目录]
       @<用户组名> = <权限>
       <用户名>  = <权限>

7. 重新启动svn服务进行验证

      杀死svn服务
       pkill svnserve
       启动svn
       svnserve -d -r /var/svn/svnrepos
       备注:修改passwd和authz文件不需要重启svn服务而修改svnserve.conf则需要


8. 配置防火墙端口(如果需要)

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

9. 查看

a. 启动SVN
# svnserve -d -r /opt/svn/repositories
b. 查看SVN进程
# ps -ef|grep svn|grep -v grep
root 12538 1 0 14:40 ? 00:00:00 svnserve -d -r /opt/svn/repositories
c. 检测SVN端口
# netstat -ln |grep 3690
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN

10. 停止重启SVN:

# killall svnserve //停止
# svnserve -d -r /opt/svn/repositories // 启动
Svnserve.conf 配置示例
[general]
anon-access = none
auth-access = write
password-db = /var/svn/users/passwd
authz-db = authz
realm = /var/svn/svnrepos/mall
[sasl]
Authz配置示例
[aliases]
[groups]
[mall:/]
mjq = rw
auto_up = rw

11.使用post-commit实现自动部署

 搭建svn都不是仅仅为了把代码存到仓库,而是同步部署到对应的项目。
在 svn 目录的 /hooks里面有一堆tmpl,这些tmpl可以做很多事情,不过今天我们就说一下自动部署post-commit.tmpl。
tmpl文件是模版文件,我们要用post-commit需要手动复制对应tmpl里面的内容到新的post-commit里面
cp post-commit.tmpl post-commit
step.1:
然后打开文件清空内容,修改为以下代码:
#!/bin/sh
export LANG=zh_CN.UTF-8
/usr/bin/svn update --username **** --password **** /var/www/test
其中第一行意思是:用sh来解析这个脚本,因为各种shell的语法有细微的差别
第二行是编码格式:这里我使用的是UTF-8
最后一行/usr/bin/svn 是svn的路径,不是项目路径,应该都是一样的,后半句分别是用户名、密码、和项目路径。--username这个比较坑了,网上搜出来的很多都搞错了,前面其实是两个减号,英文输入法下的。
step.2:
修改post-commit的可执行权限
chmod 755 post-commit
step.3:
在服务器进入项目目录/var/www/test checkout 整个项目。
注意此处不要checkout文件夹,正确代码应该是这样:
svn checkout svn://{您的服务器地址}:{端口号}/test .   //注意目录后面还有一个点
注意:此处的/test 可不需要添加:( 添加的目的是为了实现多个项目。 )
svn checkout svn://{您的服务器地址}:3690 . //注意目录后面还有一个点

至此,如果按照此步骤搞下来,应该已经没有问题了,你可以本地commit代码,自动同步到项目了。


ps:常见错误,我遇到的
1. 255错误:post-commit没有给执行权限 或者 头部没有执行用sh执行,就是没有#!/bin/sh
2. 提示跳过目录:服务器目录没有checkout代码,记得一定要先checkout一次,才能同步(!,每次新建项目都需要)
3. 什么提示也没有:这种情况出现在用工具commit的时候,成功了,但是就是没有同步,建议你到linux下,使用./post-commit手动执行看报什么错误。如果乱码,请将文件内编码格式修改为GBK
4. 提示**** is a direcitory:/usr/bin/svn你把这个搞错了,他不是一个目录,是svn的路径




### 如何在Linux系统上搭建配置完整的Subversion(SVN)服务器 #### 一、安装SVN服务端软件 为了使Linux支持SVN,需先通过包管理器yum完成subversion的安装。执行`yum -y install subversion`可以自动下载并安装所需文件[^2]。 #### 二、创建仓库目录结构 建立用于存储项目数据的空间至关重要。通常建议新建一个专门存放所有版本库的位置,比如/home/svnrepo/,之后再在此基础上构建具体的工程档案夹。 ```bash mkdir -p /home/svnrepo/myproject ``` #### 三、初始化版本库 利用svnadmin工具对该路径下的新文件夹进行初始化处理,使之成为合法有效的版本库容器。 ```bash svnadmin create /home/svnrepo/myproject ``` #### 四、设置访问权限 编辑位于各项目根目录内的conf/authz文件定义不同用户的读写权限;修改passwd文档指定登录凭证信息;调整svnserve.conf更改基本认证方式及其他选项。 - **passwd**: 记录已注册成员的身份标识及其关联密钥; - **svnserve.conf**: 开启匿名访问限制以及设定加密传输模式等等特性[^1]。 #### 五、启动SVN守护进程 采用命令行形式激活后台监听程序,确保其绑定到正确的物理位置(/home/svnrepo/)并且指定了适当的服务端口号(通常是3690),以便接收来自外部网络请求。 ```bash svnserve -d -r /home/svnrepo/ ``` #### 六、验证部署成果 尝试从本地或其他远程主机发起checkout动作测试连通性和可用性状况。如果一切正常,则会提示输入事先准备好的账号密码组合以继续后续流程[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值