エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説

      2019/02/24

Gitで基本的なデプロイ環境を構築する方法

 

Gitで基本的なデプロイ環境を構築する方法を書くに至った経緯

 
Gitで基本的なデプロイ環境を構築する方法の解説記事です。
 
ローカルリポジトリから pushでリモートリポジトリにファイルをアップし、本番環境から pullでリモートリポジトリにあるファイルを本番環境に公開する環境ですので、Gitの使い方としては、非常に基本的な部分です。
 
ですが、簡単すぎるためか、こういう基本的な手続きについては解説している記事がありませんでしたので、解説記事にしました。
 
 
デプロイとは、ファイルを設置するという意味で、Web環境の場合は、本番環境などに FTPでファイルをアップロードする、という意味に近い感じです。
 
 

今回構築するデプロイ環境のイメージ

 
Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説 
1.プログラム開発をしている環境に Gitを導入する
2.Github(Redmine)などのリモートに pushする
3.すでに稼働している本番環境に pullする
 
という非常に基本的な手続きについて解説します。
 


 

Gitで基本的なデプロイ環境を構築する手順

 

Gitをインストールする

 
まず最初に、Gitをインストールしてください。
 
開発している環境が、Linuxで、yumコマンドが実行できる場合は、下記のコマンドでインストールが可能です。

 
「-y」は、インストールする際の質問(「Is this ok [y/N]:」のような質問)に全て「yes」と自動的に答えるオプションで、一気にインストールを実行するオプションです。
 
yumコマンドがつかえない環境であったり、Windows環境などである場合は、Gitのインストール方法はググってください。
 
Gitのインストールは、開発環境のローカルリポジトリを置く環境と、本番環境との、両方にインストールする必要があります。
 
 

Gitがインストールされていることを確認する

 
Gitがインストールされているかどうかを確認する場合は、下記のとおり「git --version」コマンドを実行してください。
下記の通り、バージョンが表示される場合は、Gitはインストールされています。
 

 
下記の様に「git: command not found」と表示される場合は、Gitはインストールされていませんので、インストールしてください。

 
 

「.gitignore」ファイルの設定確認

 
「.gitignore」ファイルの設定内容を確認します。
「.gitignore」ファイルは、Gitでは管理しないファイルを指定するファイルです。
 
 
下記は、CakePHP3をインストールすると自動的に生成される「.gitignore」ファイルですが、内容はこのようになっています。
 

 
CakePHP3の場合、「/config/app.php」は設定ファイルとなりますが、ローカル環境と本番環境とは違う内容になっていることが多々ありますので、ローカル環境の設定ファイルは、本番環境にはアップしないファイルです。
そのようなファイルを、この「.gitignore」ファイルに記載していきます。
 
ちなみに、CakePHP3の場合は、下記のファイルも追加しておく方がよさそうです。
 

 
 

ローカルリポジトリの Gitの設定を実施

 
Gitを設置したいフォルダ(ローカルリポジトリを設定するフォルダ)に移動します。
そのフォルダで下記を入力します。
 

 
1行目は、フォルダに Gitの設置するコマンドです。
フォルダ内に「.git」フォルダが生成されます。
 
2行目は、リモートリポジトリを指定します。
指定した内容が「/.git/config」のファイルの中に記載されます。
 
リポジトリの URLは、各自で設定した URLを指定してください。
今回は Redmineにリモートリポジトリを作成しましたが、Githubなどでもリモートリポジトリの URLは管理画面などに表示されると思いますので、それを指定します。
 
また、Gitを登録した際、ID、PASSを登録していない場合は、下記の様に ID、PASSを含めたURLを登録する方法がいいでしょう。

 
3行目は、ローカルリポジトリ内にあるファイルをすべてステージングエリア(インデックス)に登録します。
ファイルを「.」(ドット)で指定する場合と「-u」「-A」「-all」で指定するときの違いは、後述の「git add -all と git add -A と git add . と git add -u の違い」に書いていますので合わせて参考にしてください。
 
4行目は、コミットです。
メッセージは必要に応じて登録してください。
 
5行目は、2行目で指定したリモートリポジトリにファイル一式を pushします。
 
これで、リモートリポジトリにファイル一式がアップロードされていますので、ブラウザなどで確認できるリモートリポジトリのファイル一覧画面を確認してみてください。
 
 

デプロイする本番環境の Gitの設定を実施

 
デプロイする本番環境では、Gitコマンドの pullを実行することで、デプロイします。
そのため、本番環境にも pullを実行するための Gitの設定を行います。
 
 

Gitをインストールする

 
先にも書きましたが、本番環境でも Gitコマンドを実行しますので、まず最初に Gitをインストールします。
インストール方法については割愛します。
 
 

Gitの設定のコマンドを実行

 
Gitで管理する本番環境のドキュメントルートで、以下のコマンドを実行します。
 

 
1行目、2行目は、ローカル環境で実行するコマンドと同じで、Gitを設置し、リモートリポジトリの URLを設定します。
2行目は、ローカルリポジトリを作成するときと同じく、ID、PASSの入力の手間を省くには、ID、PASSを含めた URLにしておくといいでしょう。
 
 
ここまでできれば、あとは、3行目の「pull」でファイルを取ってくるだけです。
 
「pull」コマンドを実行すると、リモートリポジトリからファイルが送られてきて、本番環境にファイルが反映されます。
 
この pullコマンドを実行することが「デプロイ」ということになります。
 
ただし、初めて pullコマンドを実行する際、ファイルが何もない環境にデプロイする場合は問題ありませんが、すでにファイルがある環境にデプロイすることはできません。

具体的には、下記の様に「下記のファイルは上書きできません。削除するか移動してください。」というメッセージが表示され、pullがエラーになります。

 
 

「git pull」するときのエラーを「git fetch」で解消する

 
初めて「git pull」を実行するときなど、前項の例の様にすでにファイルがあるためエラーになることがあります。
 
初めて環境を作る場合など、すでにあるファイルは強制的に上書きをしていい場合も多々あるでしょう。
 
そういう場合は、下記のコマンドを実行すると、強制的にリモートリポジトリにあるファイルに置き換えることで、エラーを回避できます。
 

 
 
もちろん、手間はかかりますが、重複しているとして表示されているファイルを手作業で一つずつ削除していく方法でも問題ありません。
重複しているファイルは、pullコマンドで最新ファイルを取得できます。
 
 
また、pullコマンドを実行した場合、もともとの本番環境にあり、リモートリポジトリにはないファイルは、そのまま本番環境に維持されます。
 
例えば、先に書きましたが「.gitignore」に設定する「/config/app.php」ファイルなどが削除されるようなことはありません。
 
逆に、本番環境からファイルを削除したい場合は、Gitコマンドではなく、直接ファイルを削除する必要があります。
 
 

「git remote add」コマンドで設定したリポジトリの設定を削除したい場合

 
先に解説した「git remote add」コマンドで設定したリポジトリの設定を削除したい場合は、下記のコマンドを実行します。
設定したリポジトリの URLが間違っていてリポジトリにアクセスできない、と言う場合などです。
 

 
 
また、例えば、指定したリモートリポジトリの URLに ID、PASSを設定していないため、毎回入力するのが面倒なので、登録している URLを変えたい、という場合は、下記のコマンドで変更することができます。
 

 


 
 

git add -all と git add -A と git add . と git add -u の違い

 
更新したファイルを、ステージングエリア(インデックス)に登録する際には、下記のように「git add」コマンドでファイルを追加します。
 

 
 
ですが、一つ一つファイルを指定するのは手間であったり、抜け漏れの原因にもなりますので、一括して登録するコマンドのオプションも用意されています。
 
それが、「git add -all」「git add -A」「git add .」「git add -u」ですが、それぞれ少しずつ処理の内容が違いますので解説をしていきます。
 

 
 
「git add .」は、新規作成されたファイル、または、変更になったファイルを追加します。ただし、削除されたファイルは処理しません。
 
「git add -u」は、ひとつ前のステージングから変更があったものを追加します。そのため、削除されたファイルも含めて処理します。ですが、新規作成されたファイルは、ひとつ前のステージングにはありませんので処理しません。
 
「git add -all」は、「git add .」と「git add -u」を足したようなもので、新規作成されたファイルも削除されたファイルも処理します。
「git add -A」は、「git add -all」の省略形で同じオプションです。
 
一括してステージングエリア(インデックス)に登録する addのオプションには細かな違いがありますので、それを理解していないと、抜け漏れが発生する可能性もありますので注意しましょう。
 
 

Gitのリポジトリを削除する方法

 
最後に、Gitのリポジトリを削除する方法を解説します。
 
検証のために、Gitのテスト用にローカルリポジトリを作成したり、ミスで想定していたところではないところにローカルリポジトリができてしまったりしたとき、そのローカルリポジトリを削除したい場合もあるでしょう。
 
そういう時は、「git init」を実行したときに作成される「.git」フォルダを削除すれば OKです。
コマンド「rm -rf .git」を実行して削除してもいいですし、FTPツールなどで削除しても問題ありません。
 
つまりは、「.git」フォルダがあることで Gitのリポジトリとして処理されるということで、それを削除すれば Gitとは関係なくなる、ということです。
 
 

Gitの設定した内容を確認する方法

 
これまで、Gitの設定した内容を確認するには下記のコマンドを実行します。
 

 
このコマンドを実行すると、登録してあるリモートリポジトリの URLやユーザ名などを確認することができます。
 
 

Git関連の記事

Gitはフォルダ自体を管理対象にはできない。空のフォルダを設定する手順
.gitignoreを更新しても反映されないときは「git rm -r --cached .」でキャッシュを削除
.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点
Gitで「fatal: Authentication failed for 'https://example.com/git_repositories/example.git/'」のエラーが出た場合の対処方法の一つ
Gitで基本的なデプロイ(push、pullで本番公開)環境を作る手順解説
 
その他の「git」に関する記事一覧
 
 

 - プログラミング・Web関連技術

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

X Serverへの引越しの注意点まとめ。ロリポップとの違いと対処方法 6事例

ロリポップからX Serverに引越し。ロリポップとX Serverの違いに注目することでX Serverの設定方法を明確にします。またX Serverならではの設定ポイントなども解説。

直リンク禁止の.htaccessを超分かりやすく解説。日本語じゃなくてPHPで説明

直リンクを禁止する.htaccessの記述内容を日本語ではなくPHPで解説!私自身もこの方法ですっかり理解できました。.htaccessって簡単!って思えますよ。

XSERVERにCakePHP3をインストール。コマンドラインのPHPのバージョンを変更する方法で解決

XSERVERにCakePHP3をインストールするときに問題となるのはサーバーパネルとSSH接続の時とで認識されるPHPのバージョンの違いがあるため。その解消方法を解説する。

日本語は2バイト文字?3バイト文字?

日本語は2バイトという理解でしたが、UTF-8では事情が違います。その説明です。

サイト更新、引越時に.htaccessでリダイレクトする方法解説

サイト更新,引越しなどでサイトのURLが変わった場合のリダイレクトを.htaccessのRewriteEngineを使って処理する方法の解説です。

PythonでUTF-8など日本語(全角文字)を使う方法。コメントにも必要。

Pythonの標準では日本語(全角文字)を利用できないので、利用する際は文字コードを宣言する必要がある。「# coding: utf-8」の様に記述すればOK。

FTPでダウンロード時にファイルが重複するため上書きしますか?と表示される問題

FTPでファイルをダウンロードする際に「ファイルが重複しています。上書きしますか?」というメッセージが出る場合がありますが、これの原因と対策、解決策の記事です。

So-netのレンタルサーバHSはヤバイ・借りてはいけないレンタルサーバリスト

餅は餅屋。サーバはサーバ屋が提供するサービスを利用するべきという記事で、単独でSo-netを紹介。OEMでサービスの提供を受けているだけなので何とも残念すぎる内容。

mod_pagespeedでWebサイトを超簡単高速化・Google謹製の最終兵器

Webサイトの表示スピード高速化の最終兵器、Google謹製mod_pagespeedの解説です。レンタルサーバではX-Serverでしか利用できませんが、ワンクリックで高速化します。

さくらサーバのmb_send_mailでメール送信時にmalformed header from script 'xxx.php': Bad header: xxxのエラーが
さくらサーバのmb_send_mailでメール送信時にmalformed header from script ‘xxx.php’: Bad header: xxxのエラーが

さくらインターネットのレンタルサーバからPHPのmb_send_mail()関数を利用してメールを送信するとInternal Server Errorが発生。その原因は、メールアドレスが登録されていないこと。