PHP で記述された Web ベースのプロジェクトがあり、このプロジェクトは 5 つの異なるサーバーに配布されています。
変更を加えたときに、これら 5 つのサーバーを最新の状態に保つ最善の方法は何ですか?
ソースフォルダーを読み取り、おそらくFTP経由で別のサーバーに更新を伝達するcronシェルスクリプトを作成することを考えていました。
PHP で記述された Web ベースのプロジェクトがあり、このプロジェクトは 5 つの異なるサーバーに配布されています。
変更を加えたときに、これら 5 つのサーバーを最新の状態に保つ最善の方法は何ですか?
ソースフォルダーを読み取り、おそらくFTP経由で別のサーバーに更新を伝達するcronシェルスクリプトを作成することを考えていました。
rsyncを呼び出すスクリプトを使用して、ローカルマシンからサーバーにWebサイトをアップロードします。次に例を示します。
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 リポジトリをプッシュできます。
cron を使用して ftp 経由で行うことはできません