更新程序脚本的php网站


Update program Script for php sites

我有一个用PHP编写的基于web的项目,这个项目正在分发到5个不同的服务器。

当我进行更改时,保持这5个服务器更新的最佳方法是什么?

我正在考虑写一个cron shell脚本,它可以读取我的源文件夹,并可能通过FTP将更新传播到不同的服务器。

不可能通过FTP使用cron

我使用一个脚本调用rsync从我的本地机器上传我的网站到服务器。下面是一个例子:

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,用户是"user"。

——delete参数告诉rsync删除本地机器上不存在的远程机器上的文件(例如我删除的文件)

我使用公钥-私钥身份验证,因此脚本运行时无需询问密码。如果希望使用密码,则需要更改

-e "ssh -l user1"

-e "sshpass -p password SSH -l user"

我可以想象你会这样做:

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推送到每一个服务器。