我有PHP編寫的基於Web的項目更新程序腳本,該項目被分配到5臺不同的服務器。PHP的網站
是什麼讓我做出改變更新這些服務器5臺的最佳方式?
我想編寫一個cron shell腳本,會讀我的源文件夾,並可能通過FTP將更新傳播到單獨的服務器。
我有PHP編寫的基於Web的項目更新程序腳本,該項目被分配到5臺不同的服務器。PHP的網站
是什麼讓我做出改變更新這些服務器5臺的最佳方式?
我想編寫一個cron shell腳本,會讀我的源文件夾,並可能通過FTP將更新傳播到單獨的服務器。
不能使用cron的
我使用稱爲rsync從我的本地機器上載我的網站服務器的腳本通過FTP可能。這裏有一個例子:
rsync -razv --exclude '.svn' --exclude '.settings' --exclude '.buildpath' -e "ssh -l user" --delete ~/workspace/website/ www.example.com:/var/www/
我必須排除.svn文件,.settings,& .buildpath文件和文件夾,因爲我不希望那些打算在網站上。我的服務器將是www.example.com。服務器上的路徑是/ var/www,用戶將是「用戶」。
的--delete參數告訴rsync將刪除遠程計算機上的文件沒有在本地機器上存在(即我刪除前的文件)
我用酒館私鑰認證,使該腳本運行沒有要求輸入密碼。如果你想使用一個密碼,您將需要更改
-e 「的ssh -l user1的」
到
-e 「sshpass -p密碼的ssh -l用戶」
我能想象你會做這樣的事情:
rsync -razv --exclude '.svn' --exclude '.settings' --exclude '.buildpath' -e "ssh -l user1" --delete ~/workspace/website/ www.server1.com:/var/www/
rsync -razv --exclude '.svn' --exclude '.settings' --exclude '.buildpath' -e "ssh -l user2" --delete ~/workspace/website/ www.server2.com:/var/www/
rsync -razv --exclude '.svn' --exclude '.settings' --exclude '.buildpath' -e "ssh -l user3" --delete ~/workspace/website/ www.server3.com:/var/www/
rsync -razv --exclude '.svn' --exclude '.settings' --exclude '.buildpath' -e "ssh -l user4" --delete ~/workspace/website/ www.server4.com:/var/www/
rsync -razv --exclude '.svn' --exclude '.settings' --exclude '.buildpath' -e "ssh -l user5" --delete ~/workspace/website/ www.server5.com:/var/www/
注:sshpass將需要在本地機器上安裝,如果密碼被使用。 Rsync需要安裝在本地和遠程機器上。
我會使用git(http://git-scm.com/)。您可以爲每個服務器的遙控器(https://github.com/resmo/git-ftp)。然後,您可以將git repos推送到每個服務器。
那麼這意味着rsync命令將不得不在本地機器上運行,而不是在生產服務器上運行? – ChaoticLoki
是的,你在上面看到的命令在本地機器上,而不是服務器上運行。但是,您可以重寫rsync命令以在服務器上運行,並從本地計算機上獲取最新文件。 –