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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM