序章
Gitの紹介とインストール方法については、紹介チュートリアルを参照してください。
この記事では、アプリケーションをデプロイするときにGitを使用する方法を説明します。 Gitを使用してアプリケーションをデプロイする方法はたくさんありますが、このチュートリアルでは、最も簡単な方法に焦点を当てます。 ローカルマシンでリポジトリを作成して使用する方法をすでに知っていると思います。 そうでない場合は、このチュートリアルを参照してください。
Gitを使用する場合、ワークフローは通常、バージョン管理のみを対象としています。 作業するローカルリポジトリと、すべての同期を維持し、チームやさまざまなマシンで作業できるリモートリポジトリがあります。 ただし、Gitを使用してアプリケーションを本番環境に移行することもできます。
サーバーのセットアップ
架空のワークスペース:
サーバーのライブディレクトリ: /var/www/domain.com
サーバーリポジトリ: /var/repo/site.git
site.git にプッシュし、同時にすべてのコンテンツを /var/www/domain.com で利用できるようにする場合は、どうすればよいですか?
リポジトリの作成
コマンドラインからVPSにログインし、次のように入力します。
cd /var mkdir repo && cd repo mkdir site.git && cd site.git git init --bare
--bare
これは、フォルダにソースファイルがなく、バージョン管理のみが含まれることを意味します。
フック
Gitリポジトリには、‘hooks’というフォルダがあります。 このフォルダーには、ユーザーが設定したカスタムアクションをフックして実行できる、可能なアクションのサンプルファイルがいくつか含まれています。
Gitドキュメントは、3つの可能なサーバーフックを定義します:‘pre-receive’ 、‘post-receive’ 、‘update’。 ‘Pre-receive’ は、サーバーが‘push’ を受信するとすぐに実行され、‘update’ も同様ですが、ブランチごとに1回実行されます。 ‘post-receive’ は、‘push’ が完全に終了したときに実行され、これが私たちが関心を持っているものです。
次のように入力すると、リポジトリに次のように入力します。
ls
‘hooks’フォルダーを含むいくつかのファイルとフォルダーが表示されます。 それでは、‘hooks’フォルダーに移動しましょう。
cd hooks
次に、次のように入力して、ファイル‘post-receive’を作成します。
cat > post-receive
このコマンドを実行すると、入力したすべてのものがこのファイルに保存されることを示す空白行が表示されます。 それでは、次のように入力してみましょう。
#!/bin/sh git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
入力が終わったら、‘control-d’を押して保存します。 ファイルを実行するには、以下を使用して適切な権限を設定する必要があります。
chmod +x post-receive
ドキュメントで、‘git-dir’がリポジトリへのパスであることがわかります。 ‘work-tree’ を使用すると、ファイルが実際に転送される場所への別のパスを定義できます。
‘post-receive’ ファイルは、プッシュが完了するたびに調べられ、ファイルが/var/www/domain.comにある必要があると表示されます。
ローカルマシン
ローカルリポジトリを作成しましょう。 パスと名前を選択した方に変更する必要があります。 VPSを使用している場合は、次のように入力します。
exit
そして、リポジトリを作成します。
cd /my/workspace mkdir project && cd project git init
次に、リポジトリのリモートパスを構成する必要があります。 ‘live’というリモコンを追加するようにGitに指示します。
git remote add live ssh://user@mydomain.com/var/repo/site.git
ここでは、ライブフォルダではなくリポジトリリンクを指定する必要があります。
このフォルダにいくつかのすばらしい作業が用意されていると仮定しましょう。 ファイルを追加する通常の手順を実行し、メッセージを送信してコミットする必要があります。
git add . git commit -m "My project is ready"
覚えておいてください。‘gitadd’ の後のドットは、すべてのファイルをステージに追加していることを意味します。 ‘git commit’ の後に、‘-m’ があります。これは、メッセージを入力することを意味します。 完了するには、すべてをサーバーに「プッシュ」するだけです。 リモコンの設定時に使用した‘live’エイリアスを使用します。
git push live master Counting objects: 7, done.Delta compression using up to 4 threads.Compressing objects: 100% (7/7), done.Writing objects: 100% (7/7), 10.56 KiB, done.Total 7 (delta 0), reused 0 (delta 0)To ssh://user@mydomain.com/var/repo/site.git* [new branch] master -> master
ここでは、Gitに‘master’ブランチの‘live’リモートにプッシュするように指示します。 ブランチとその使用方法の詳細については、このチュートリアルをお読みください。
ベータ
すべてを1つのステップでデプロイしたくない場合はどうなりますか? たぶん、最初にそれをテストして、ベータディレクトリを持ちたいと思うでしょう。
そのための方法の1つは、別のリポジトリを作成することです。 VPSに再度ログインして、ディレクトリを作成しましょう。
cd /var/www/ mkdir beta
リポジトリを作成するには:
cd /var/repo mkdir beta.git && cd beta.git git init --bare
ベータディレクトリにプロジェクトを表示したいので、ここでも‘post-receive’ファイルを作成する必要があります。
cd hooks cat > post-receive
ファイルの内容を入力します。
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f
入力が終わったら、‘control-d’を押して保存します。 ファイルを実行するには、以下を使用して適切な権限を設定する必要があります。
chmod +x post-receive
ローカルリポジトリに戻りましょう。
exit cd /my/workspace/project
これで、ベータリポジトリを指す別のリモートを設定できます。
git remote add beta ssh://user@mydomain.com/var/repo/beta.git
これにより、2段階のプロセスを実行できます。 まず、ベータ版にプッシュしてチェックし、すべてが正常である場合は、ライブにプッシュします。
git add . git commit -m "New version" git push beta master
以降:
git push live master
サーバーから稼働する
同じプロジェクトで作業しているチームがいて、他の人もライブに移行する時期だと判断できるようにしたい場合があります。 これを行うには、サーバー上のベータ版とライブリポジトリをリンクします。 VPSにログインして、次のように入力します。
cd /var/repo/beta.git git remote add live ../site.git
これで、ベータ版からサーバー上で稼働するようにプッシュできます。
cd /var/repo/beta.git git push live master
おめでとう! これで、VPSがGitで自動的にデプロイされるように設定されました。