前言: 更新項目的時候需要將更改的文件一一上傳,這樣比較麻煩,用版本控制器git +rsync 搭建一個發佈伺服器,以後發佈文件非常方便 首先說下,我這邊的更新流程,本地寫完之後,git push 到測試服,測試服測試完畢,運行腳本rsync.sh(此腳本先將代碼 git pull到測試服,再rsy ...
前言:
更新項目的時候需要將更改的文件一一上傳,這樣比較麻煩,用版本控制器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/ [email protected]::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