對於phper來說部署項目和更新項目是很方便的,只要直接將寫好的項目覆蓋到項目的根目錄就可以啦。但是平時項目開發的時候肯定不是只部署一個環境,一般是三套環境(開發環境、測試環境、生產環境),我們每次在開發環境開發完之後要將項目更新到測試環境和生產環境上,如果每次更新的話都是將項目複製然後手動的去覆蓋 ...
對於phper來說部署項目和更新項目是很方便的,只要直接將寫好的項目覆蓋到項目的根目錄就可以啦。但是平時項目開發的時候肯定不是只部署一個環境,一般是三套環境(開發環境、測試環境、生產環境),我們每次在開發環境開發完之後要將項目更新到測試環境和生產環境上,如果每次更新的話都是將項目複製然後手動的去覆蓋到項目的根目錄下的話就太麻煩啦,而且也容易出錯所以我們應該有一套項目管理系統來方便的管理項目的更新迭代,大致結構如下:
畫的不好但是意思是對的,這樣的話就可以通過一個腳本文件直接更新代碼啦,更重要的是我們可以通過php中的 exec() 函數來操作腳本,這意味著我們可以使用php來開發這個項目管理平臺,今天只說如何配置rsync。
實驗環境:
docker(ubuntu鏡像)實例化兩台虛擬器
在兩台虛擬機上都安裝好 rsync 工具,rsync 使用分兩種情況,一種是客戶端使用(直接執行 rsync 相關命令)另一種是伺服器端使用(以daemon模式執行)
配置 rsync 服務端
首先要在 `/etc` 目錄下手動添加個 rsyncd.conf 文件並填寫相關配置,配置選項解釋如下:
port=837 #監聽埠預設 873 log file=/var/log/rsync.log #rsync日誌 pid file=/var/run/rsync.pid #rsync運行時生成的pid存放目錄 [abc] #模塊名稱 path=/var/www/html #模塊對應的目錄 use chroot=yes #是否限定為模塊預設目錄 max nonections=4 #指定最大可以連接的客戶端數 read only=no #yes 為改模塊內容只允許讀,no 為該模塊允許讀寫 list=yes #是否允許 使用 `rsync ip地址::` 列出模塊名 uid=root #以哪個用戶的身份來傳輸 gid=root #以哪個組的身份來傳輸 auth users=root #指定驗證用戶名,如果不設置則可以不用密碼進行傳輸 secrets file=/etc/rsync.passwd #指定用戶名和密碼的存放文件 註:文件需要以 "用戶名:密碼"的形式存儲 並且需要設置許可權 chmod 600 rsync.passwd
從客戶端讀取伺服器端文件
rsync --port=837 -avz [email protected]::abc /myweb
這時會將服務端 /var/www/html 目錄下的文件同步到 客戶端的 /web 目錄下
從客戶端推送文件到服務端
rsync --port=837 -avzH /myweb/ [email protected]::abc
這時會將客戶端的 /web 目錄下的文件同步到 服務端 /var/www/html 目錄下
對於 rsync 命令各個選項的含義 建議看下這篇文章吧,這哥們寫的翻譯的挺詳細的 @駿馬金龍 man rsync翻譯(rsync命令中文手冊)