zoukankan      html  css  js  c++  java
  • CentOS下安装配置SVN服务器并自动同步到web目录

    一、安装

    yum install subversion测试是否安装成功

    /usr/bin/svnserve --version如提示以下内容,说明已安装成功

    svnserve,版本 1.6.11 (r934486)
    编译于 May 14 2012,05:36:26

    版权所有 (C) 2000-2009 CollabNet。
    Subversion 是开放源代码软件,请参阅 http://subversion.tigris.org/ 站点。
    此产品包含由 CollabNet(http://www.Collab.Net/) 开发的软件。

    下列版本库后端(FS) 模块可用:

    * fs_base : 模块只能操作BDB版本库。
    * fs_fs : 模块与文本文件(FSFS)版本库一起工作。

    Cyrus SASL 认证可用。
    二、配置
    1、新建一个目录:repos,可用于存储SVN所有文件

    mkdir -p /opt/svn/repos

    2、新建一个版本仓库

    svnadmin create /opt/svn/repos

    3、初始化版本仓库中的目录

    mkdir project project/server project/client project/test(临时目录)
    svn import project/ file:///opt/svn/repos/project -m '初始化svn目录'
    rm -rf project (可选 如果project没用,可以删除)

    4、修改svn版本库的配置文件
    vim /opt/svn/repos/conf/svnserve.conf

    修改为如下内容:

    [general]
    anon-access = none
    auth-access = write
    password-db = /opt/svn/project/conf/passwd
    authz-db = /opt/svn/project/conf/authz
    realm = LAMP100 repos

    注意:对用户配置文件的修改立即生效,不必重启svn。

    5、添加用户
    要添加SVN用户非常简单,只需在/opt/svn/project/conf/passwd文件添加一个形如“username=password”的条目就可以了.为了测试,我添加了如下内容:

    [users]
    # harry = harryssecret
    # sally = sallyssecret
    pm = pm_pw
    server_group = server_pw
    client_group = client_pw
    test_group = test_pw

    6、修改用户访问策略
    /opt/svn/project/conf/authz记录用户的访问策略,以下是参考:

    [groups]
    project_p = pm
    project_s = server_group
    project_c = client_group
    project_t = test_group

    [project:/]
    @project_p = rw
    * =

    [project:/server]
    @project_p = rw
    @project_s = rw
    * =

    [project:/client]
    @project_p = rw
    @project_c = rw
    * =

    [project:/doc]
    @project_p = rw
    @project_s = rw
    @project_c = rw
    @project_t = rw
    * =以上信息表示,只有pm有根目录的读写权,
    server_group能访问server目录,
    client_group能访问client目录,
    所有人都可以访问doc目录.

    7、启动svn服务

    svnserve -d --listen-port 9999 -r /opt/svn (以root用户在运行)

    8、测试svn服务器

    cd /web/
    svn co svn://192.168.10.10/repos/project
    Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
    Password for 'root':
    Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
    Username: server_group
    Password for 'server_group':
    svn: Authorization failed ( server_group没用根目录的访问权 )

    # svn co svn://192.168.10.10/repos/project
    Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
    Password for 'root':
    Authentication LAMP100 repos: <svn://192.168.10.10:9999> 92731041-2dae-4c23-97fd-9e1ed7f0d18d
    Username: pm
    Password for 'pm':
    A project/test
    A project/server
    A project/client
    Checked out revision 1. ( 测试提取成功 )

    # cd project/server
    # vim index.PHP
    # svn add index.php
    # svn commit index.php -m "测试一下我的PHP程序"
    Adding index.php
    Transmitting file data .
    Committed revision 2. ( 测试提交成功 )

    三、配置post-commit,实现自动同步svn版本库文件到web目录
    为了可以在修改完代码提交到SVN服务器后,WEB服务器直接同步.需要配置SVN的钩子,打开hooks目录,
    可以看到有一个post-commit.tmpl文件,这是一个模板文件,
    复制一份放在此目录下,命名为post-commit,并将其用户组设为www,并设置为可执行:

    chown www:www post-commit
    chmod +x post-commit这样就有了访问www目录的权限。
    里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件.

    我的文件内容为:

    #!/bin/sh
    #设定环境变量,如果没有设定可能会出现update报错
    export LANG=zh_CN.UTF-8
    REPOS="$1"
    REV="$2"
    SVN_PATH=/usr/bin/svn
    WEB_PATH=/web/project
    LOG_PATH=/tmp/svn_update.log
    #/usr/bin/svn update --username user --password password $WEB_PATH --no-auth-cache
    echo "nnn##########开始提交 " `date "+%Y-%m-%d %H:%M:%S"` '##################' >> $LOG_PATH
    echo `whoami`,$REPOS,$REV >> $LOG_PATH
    $SVN_PATH update --username user --password password $WEB_PATH --no-auth-cache >> $LOG_PATH
    chown -R www:www $WEB_PATH

    说明:
    1、#!/bin/sh 说明是执行shell命令
    2、export LANG=zh_CN.UTF-8 是为了解决svn post commit 中文乱码。
    如果你是GBK编码可能会提示:Error output could not be translated from the native locale to UTF-8
    这是客户端和服务器编码的问题,默认是utf-8,可尝试设置export LANG=zh_CN.GBK或者export LANG=en_US.UTF-8
    #执行更新操作
    3、svn update –username 你版本库的用户名 –password 用户名的密码 svn://你的IP地址:端口/repos/project /web/project
    4、chown -R www:www $WEB_PATH 更改文件夹属主为适合Web Server的
    里面原有的代码全部注释掉.这里可以执行shell命令,每次commit完成后都会调用此文件。

  • 相关阅读:
    微信 token ticket jsapi_ticket access_token 获取 getAccessToken get_jsapi_ticket方法
    PHP 日志 记录 函数 支持 数组 对象 新浪 sae 环境 去掉 空格 换行 格式化 输出 数组转字符串
    原生 原始 PHP连接MySQL 代码 参考mysqli pdo
    PHP 数字金额转换成中文大写金额的函数 数字转中文
    使用PHPMailer发送带附件并支持HTML内容的邮件
    设置输出编码格式 header 重定向 执行时间 set_time_limit 错误 报告 级别 error_reporting
    html5 bootstrap pannel table 协议 公告 声明 文书 模板
    指向指针的指针
    二级指针
    c语言:当指针成为参数后
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/7053111.html
Copyright © 2011-2022 走看看