エス技研

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.

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

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

  関連記事

Selenium WebDriver、Pythonをインストールしブラウザ自動操作の環境構築手順のまとめ

ブラウザを自動操作しテストを実行するロボットをselenium WebDriver+Pythonの環境を構築し、動作確認までの手順のまとめ。初心者向けに詳細解説。サンプルソースも。

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

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

Selenium WebDriverでFirefoxをプライベートウィンドウ/Chromeをシークレットモードで起動する方法・言語はpython

Seleniumでは初期状態でブラウザを起動する   Seleniumでブラウザ …

PythonでURLの有無、存在をチェックするスクリプト

PythonでURLが存在するか否かのチェックスクリプト。ライブラリ「urllib2」を使い、指定のURLにアクセスしそのレスポンスコードを判別するという仕組み。

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

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

chromedriver.exe - ディスクがありませんと出てSeleniumの設定が上手くいかない
chromedriver.exe – ディスクがありませんと出てSeleniumの設定が上手くいかない

Selenium WebDriverを使ってChromeを自動操作する仕組みを作る際、chromedriver.exeを利用しますが、ディスクがありません、というエラーが発生する場合があります。その対処方法を解説します。

Gitはフォルダ自体を管理対象にはできない。空のフォルダを設定する手順
Gitはフォルダ自体を管理対象にはできない。空のフォルダを設定する手順

Gitはフォルダだけを管理対象にすることはできない。そのため空の.gitkeepファイルを作成し管理対象にすることで、それが入っているフォルダも管理対象にする、と言う手順で管理を行う。

Beautiful Soupを利用してPythonでスクレイピングを行う環境構築方法の解説

BeautifulSoupはPythonでスクレイピングを行う際に便利なツール。インストール方法も簡単。ただ、事前にpipのインストールが必要でその解説もしてます。

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

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

Webサイト公開時に重複コンテンツを排除する.htaccessのリダイレクトの設定のまとめ

サイトを公開する際にはURLの正規化は必須です。正規化とは何かを解説し、.htaccessに設定すべきリダイレクトの設定を具体的に説明します。