開発マシンにローカル git リポジトリがあります。
git を使用してコードを本番サーバーにプッシュしたいと考えています。コードがそこにプッシュされたら、Web サーバーの再起動をトリガーします。
これを行うコマンドは何ですか?私はデビアンを使用しています。
/var/www/example.com
私のローカルリポジトリです
本番ホスト名はproduction.example.com
、ssh + キーが既にセットアップされています。
通常、ライブ Web サイトにコードを直接プッシュすることはお勧めできません。このために、公開ディレクトリの外に、サーバー上にベア リポジトリを作成できます。このリポジトリは変更をライブ Web サイトのリポジトリにプッシュし、Web サイトの門番のようなものになります。セットアップするには、ライブ Web サイト ディレクトリの周りにリポジトリを作成します。
$ cd ~/www
$ git init
$ git add .
$ git commit -m"initial import of pre-existing web files"
これを作成したら、HTTP 経由でアクセスできないディレクトリに移動します。簡単にするために、このベア ディレクトリを HUB と呼び、Web サイト ディレクトリを LIVE と呼びましょう。ここでベア リポジトリを初期化します。
$ cd; mkdir site_hub.git; cd site_hub.git
$ git --bare init
次に、ライブ Web サイトの作業ディレクトリ内から、このベア リポジトリをリモートとして追加し、ライブ Web サイトのマスター ブランチをプッシュします。
$ cd ~/www
$ git remote add hub ~/site_hub.git
$ git remote show hub
* remote hub
URL: /home/rizwan/site_hub.git
$ git push hub master
変更をライブ リポジトリにコミットするには、フックが必要です。post-update
HUB リポジトリ内にフックを作成します。
#!/bin/sh
echo
echo "**** Pulling changes into Live [Hub's post-update hook]"
echo
cd $HOME/www || exit
unset GIT_DIR
git pull hub master
exec git-update-server-info
このフック内に、プルの完了後にサーバーを再起動するコードを含めることができます。
また、post-commit
LIVE リポジトリにフックを作成して、ライブ Web サイトに加えられた変更を HUB に送り返します。
#!/bin/sh
echo
echo "**** pushing changes to Hub [Live's post-commit hook]"
echo
git push hub
ローカル マシンで、HUB リポジトリをリモートとして追加し、変更をプッシュします。
git remote add hub <hub-repository-url>
これがどのように機能するかというと、いくつかのコードを記述してベア リポジトリにプッシュし、更新後のフックを使用して変更をライブ リポジトリにプッシュし、サーバーを再起動します。