エス技研

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.

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

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

  関連記事

PythonでMySQLへの接続ライブラリMySQL-pythonの簡単インストール方法

PythonはMySQLに接続するライブラリは別途インストールが必要。なのでMySQL-pythonライブラリのインストール方法とサンプルスクリプトで動作検証までを解説。

本当に?GMO系ロリポップ・ヘテムルを無料で運用する方法があった!

ロリポップ、ヘテムルを株主優待を利用して実質無料で運営しよう!という解説記事です。株主優待で提供されるサービスの内容を解説し、無料になる仕組みを解説します。

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

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

直リンクとは何か?直リンクとディープリンクの違いと著作権問題

直リンクは著作権違反なのか?議論の前にまず「直リンク」の意味を正しく理解しよう。直リンクは他のサイトの画像を読み込む、ディープリンクなど多様な意味がある。

Gitで「fatal: Authentication failed for 'https://example.com/git_repositories/example.git/'」のエラーが出た場合の対処方法の一つ
Gitで「fatal: Authentication failed for ‘https://example.com/git_repositories/example.git/’」のエラーが出た場合の対処方法の一つ

Gitのリモートリポジトリにアクセスする際、Authentication failedのエラーが。しかし、ID、PASSが間違っているのではなく、リモートリポジトリのURLが間違っている場合もあるので再度確認を。

CentOS環境に ntpdをインストールして自動的に時刻を取得する設定にする
CentOS環境に ntpdをインストールして自動的に時刻を取得して合わせる設定にする

VirtualBoxに構築した CentOSの環境の時計がずれているとき、ntpdをインストールし、時計を合わせる方法を解説。NTPサーバを指定する方法や ntpdを自動起動する設定も解説。

.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点
.gitignoreで無視フォルダの中の特定のファイルを除外「!(否定文)」を使う場合の注意点

Gitで管理する対象、対象外のファイル、フォルダの指定は .gitignoreに記述する。その基本的な記述の方法に加え、無視対象にしたフォルダの中の特定のファイルを管理対象にする記述方法を解説。

コピーコンテンツ・直リンクの3つの対策Google通報などのまとめ

コピーコンテンツを発見したときにやること!Googleに通報、画像の直リンクを禁止、RSSの全文配信を停止。この対策をしないとあなたのサイトの評価も下がるかも!

WordPress、Webサイトの表示高速化!画像を軽くする基本的な考え方

画面表示の高速化には画像のファイル容量を小さくする方法があります。ツールを使わなくても小さくするための基本的な考え方を解説します。

さくらサーバの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が発生。その原因は、メールアドレスが登録されていないこと。