2013-01-14 72 views
0

我有PHP編寫的基於Web的項目更新程序腳本,該項目被分配到5臺不同的服務器。PHP的網站

是什麼讓我做出改變更新這些服務器5臺的最佳方式?

我想編寫一個cron shell腳本,會讀我的源文件夾,並可能通過FTP將更新傳播到單獨的服務器。

回答

0

不能使用cron的

0

我使用稱爲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需要安裝在本地和遠程機器上。

+0

那麼這意味着rsync命令將不得不在本地機器上運行,而不是在生產服務器上運行? – ChaoticLoki

+0

是的,你在上面看到的命令在本地機器上,而不是服務器上運行。但是,您可以重寫rsync命令以在服務器上運行,並從本地計算機上獲取最新文件。 –

0

我會使用git(http://git-scm.com/)。您可以爲每個服務器的遙控器(https://github.com/resmo/git-ftp)。然後,您可以將git repos推送到每個服務器。