rsync + git發佈項目

来源:https://www.cnblogs.com/IT--Loding/archive/2019/02/27/10439310.html
-Advertisement-
Play Games

前言: 更新項目的時候需要將更改的文件一一上傳,這樣比較麻煩,用版本控制器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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • GTID主從簡介 GTID是基於mysql生成的事務ID,由伺服器ID和事務ID組成。 這個ID在主庫及從庫上都是唯一的。 這個特性可以讓mysql的主從複製變得更加簡單,一致性更加可靠。 GTID優勢 1. 更簡單的實現同步,不需要再找log_file和log_pos 2. GTID是連續的,沒有 ...
  • exa 是 ls 文件列表命令現代化替代品。 官網:https://the.exa.website/ GitHub:https://github.com/ogham/exa 後續整理中…… ...
  • 今日在處理數據存儲的問題中,數據占用的空間較大,在詢問之下,提及迴圈隊列。 沒有學習過的我,想想就是頭大,只能慢慢從網上找資料,一個字母一個字母的敲,最後,還是慢慢的對隊列有了一些理解 對於迴圈隊列有幾個操作: 1、初始化 2、入隊 3、出隊 4、遍歷隊列 5、判隊列空,判隊列滿 具體如何實現,我會 ...
  • 本篇文章主要介紹了VMware安裝Centos7超詳細過程(圖文),具有一定的參考價值,感興趣的小伙伴們可以參考一下 1.軟硬體準備 軟體:推薦使用VMwear,我用的是VMwear 12 鏡像:CentOS7 ,如果沒有鏡像可以在官網下載 :http://isoredirect.centos.or ...
  • [TOC] 虛擬機環境:centos 7 一、環境準備 1、關閉 selinux firewalld 二、OPENLDAP服務搭建 1、安裝LDAP伺服器和客戶端,migrationtools工具包 2、設置openldap管理員密碼 3、更改openldap配置 查看安裝了哪些文件 修改配置 4、 ...
  • 下班前領導忽然要求我將客戶的日誌伺服器上一些日誌拷貝到測試伺服器中,不過領導只提供給我FTP的連接方式,很明顯就是要我用FTP方式去做啦 一般來說FTP批量下載也就上網隨便找個腳本的事,但是卻成了我瘋狂踩坑的開始 1、mget命令完全不能用 首先,為了保證命令是可以正常執行的,我們先連接FTP伺服器 ...
  • 主從簡介 在現代企業中,數據顯得尤為重要,而存儲數據的資料庫選擇又五花八門,但無論是何種資料庫,均存在著一種隱患。 當數據規模非常大,讀寫量也很高時,一臺資料庫已經無法負擔全部讀寫任務,就需要多台資料庫同時運作分擔負載。 主從作用 實時災備,用於故障切換 讀寫分離,提供查詢服務 備份,避免影響業務 ...
  • 一個由 Python 編寫的強大的配置管理解決方案。儘管市面上已經有很多可供選擇的配置管理解決方案,但他們各有優劣,而 ansible 的特點就在於它的簡潔。 讓 ansible 在主流的配置管理系統中與眾不同的一點便是,它並不需要你在想要配置的每個節點上安裝自己的組件。同時提供的一個優點在於,如果 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...