• rsync + git发布项目


    前言:

      更新项目的时候需要将更改的文件一一上传,这样比较麻烦,用版本控制器git +rsync 搭建一个发布服务器,以后发布文件非常方便

       首先说下,我这边的更新流程,本地写完之后,git push 到测试服,测试服测试完毕,运行脚本rsync.sh(此脚本先将代码 git pull到测试服,再rsync传到正式服,正常情况肯定不会pull 完直接提交到正式服,我只是模拟的情况,我这边的测试服当做临时服务器,正式服当做测试服)

    搭建步骤:

      安装需求:

        服务器说明:

           本地电脑:local

           测试服:test

           正式服:online

        架构说明:

          1、本地local写完代码之后,push

          2、测试服test pull,进行测试

          3、 次测试没问题,rsync到服务器online

        优势:

          1、用户rsync提交文件很快,比自己上传快

          2、rsync会自行比对文件,一样的不会再次上传

          3、rsync是可以添加忽略文件的

       安装流程

        搭建git:

          可以参考我博客的git搭建教程

        安装rsync

        需要安装rsync服务端和客户端,服务端和客户端安装流程一样,不过服务器多一个配置

        1、安装rsync客户端:  

        ①下载rsync安装包
        可以到https://rsync.samba.org/ftp/rsync/ 去下载安装包,解压之后进行安装

    # tar -zxvf rsync-3.1.2.tar.gz
    # cd rsync-3.1.2
    # ./configure --prefix=/usr/local/rsync
    # make && make install

        客户端到此就安装结束了,很简单

        2、安装rsync服务端

        和上面步骤一样,先安装,安装完之后,进行如下操作

    # cd /usr/local/rsycn/
    # mkdir etc
    # cd etc
    # vim rsyncd.conf

        配置内容如下:(特别注意的是你们如果复制我的conf ,最好吧# 注释去掉,我之前加#出错了,我服务器配置没有#,#注释是写博客加的)

    pid file = /var/run/rsync.pid
    lock file=/var/run/rsync.lock
    address = 0.0.0.0 #这个是rsync服务监听地址,我填的是所有,你们可以填写自己服务器的IP
    port = 873
    uid = root
    gid = root
    use chroot = no
    read only = no
    max connections = 10
    motd file = /usr/local/rsync/etc/rsyncd.motd
    log file = /var/log/rsync.log
    transfer logging = yes
    log format = %t %a %m %f %b
    syslog facility = local3
    timeout = 300
    [wechat]#这个是目录别名,下面是目录配置这个在使用rsync传输的时候用的到,就是你想传达哪个目录
    path = /data/wwwroot/wechat_center/
    [yiiadmin] # 和上面的wechat一样,这个可以配置多个
    path = /data/wwwroot/wechatadmin/
    list = yes
    list = yes
    ignore errors
    comment = demo
    secrets file = /usr/local/rsync/etc/rsync-demo.password # 密码文件

      

    创建相关文件
    
    1、# vim /usr/local/rsync/etc/rsyncd.motd
    内容随便写,这个是客户端连接上来之后给的提示
    
    2、secret 文件
     # vim /usr/local/rsync/etc/rsync-demo.password
    格式是 账号:密码 如
    # root:123456
    修改密码文件的权限
    # chmod 600 /usr/local/rsync/etc/rsync-demo.password

        上述配置完成之后,启动服务

    #  /usr/local/rsync/bin/rsync --daemon --config /usr/local/rsync/etc/rsyncd.conf

      可以查看873端口情况

    传输文件测试

      将本地文件夹/home下的文件,传输到刚刚配置文件 wechat的下面

    #rsync --password-file=/usr/local/rsync/etc/rsync-demo.password -zarv /home/ rsync@X.X.X.X::wechat

      总结:

        到此就搭建结束了,文末再附上我的rsync.sh 脚本(我传的是PHP文件,有个校验流程,你们不是PHP的可以删除那段代码)

    #!/bin/bash
    dir_path="/home/wwwroot/wechatadmin/"
    remote_path="106.14.18.151/yiiadmin"
    
    cd "$dir_path" && git pull 2>&1 >/dev/null
    rsync_option=-avn
    already_execute=0
    if [ $# -eq 1 ];then
    case "$1" in
            execute)
                    already_execute=1
                    rsync_option=-av
    esac
    fi
    
    file_list=`rsync "$rsync_option" "$dir_path" rsync://"$remote_path" --exclude-from="/home/caol/exclude_yii.list" --delete`
    echo "传输的文件为:"
    echo "$file_list"
    
    echo "开始校验文件"
    for i in $file_list
    do
            if [[ $i =~ ".php" ]]&&[ -f $dir_path$i ];then
                    phpl_res=`php -l $dir_path$i`
                    is_normal=`echo "$phpl_res" | grep "No syntax errors"`
                    if [ ! -n "$is_normal" ];then
                            echo "$dir_path$i语法错误,请调整代码"
                            exit 0
                    fi
            fi
    done
    
    echo "开始传输"
     rsync --password-file=/usr/local/rsync/etc/rsync-demo.password -zarv $dir_path rsync://"$remote_path"   --exclude-from="/home/caol/exclude_yii.list" --delete
  • 相关阅读:
    (转贴).net中组件拒绝访问解决办法
    也写写我的 XP+sp2 不能安装Sqlserver 2000 解决办法!
    不是技巧的技巧,让web.config也能智能感知.
    终于搜了一个.net项目开发的版本控制工具
    网上选课系统分析与设计
    写一下最近发现的自认为的好东东
    你心目中的Edu2.0是什么样的?(转载)
    内容管理系统(CMS)的设计和选型
    开源blog的取舍
    收藏的国内外网站设计资源
  • 原文地址:https://www.cnblogs.com/IT--Loding/p/10439310.html
Copyright © 2020-2023  润新知