以下は、git-powered-website の更新とバックアップの戦略を構築する方法です。
Web サイトがホストされている Linux VPS に SSH アクセスできます。これが私がしたことです:
1) ウェブサイト サーバーで - 適切なウェブサイト フォルダー (パブリック ルートの 1 レベル前) に git リポジトリを作成しました。
cd /path/to/website
git init
git add -A
git commit -m "Website as of today."
2) バックアップ サーバーで - バックアップ目的で、別の VPS でミラー リポジトリを作成しました。
git clone --mirror ssh://user@example.com/path/to/website website_backup
ミラー リポジトリもベア リポジトリであることに注意してください (チェックアウトされた作業ツリーはありません)。
3) CRONJOBS のセットアップ - Web サイト サーバーに 1 つ。Web サイト ファイル システムの変更を吸収します (変更は、スクリプト、FTP などによって行うことができます)。次の bash スクリプトを毎日実行します。
#!/bin/bash
date=$(date +%d/%m/%Y)
cd /path/to/website
git add -A -v
git commit -m "Changes done at to website at ${date}"
exit 0
このようにして、ライブ Web サイトの変更がリポジトリ マスター ブランチにコミットされます。
別の cron ジョブがバックアップ サーバーにセットアップされます。上記のスクリプトの直後に、次のスクリプトを毎日実行します。
#!/bin/bash
cd /path/to/website_backup
git fetch -u ssh://user@example.com/path/to/website
exit 0
このようにして、バックアップサーバーに毎日更新される「バックアップ」があり、これは git リポジトリでもあり、必要に応じて時間をさかのぼることができます。誤って上書きしたり削除したりしてデータを失うことを恐れる必要はありません...そしてプロセスは自動化されています!
cronjobs から毎日数通の電子メールを受け取ります。Web サイトで何が変更されたかを確認し、両方の cron ジョブが正しく実行されていることを確認できます。(データベースのバックアップを実行するために、別の cron ジョブが設定されます。)
4) 開発のセットアップ (ローカル レポ + ワーキング ツリー) - Web サイトからコピーを直接チェックアウトし、「dev」という名前の新しいローカル ブランチを作成しました。
git clone ssh://user@example.com/path/to/website website_local
git checkout -b dev
これで、開発ブランチで遊んで仕事をすることができます。
この点から、私は知りたいです:
- 変更をライブ Web サイトにプッシュする方法は?
- Web サイトから変更を元に戻し、開発ブランチにマージするにはどうすればよいですか?
要するに、物事を台無しにすることなく、ライブサイトを開発ブランチと適切に同期する方法は?