エス技研

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


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

      2017/06/16

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で管理する本番環境のドキュメントルートで、以下のコマンドを実行します。
 
$ git init
$ git remote add origin https://redmine.example.com/git_repository/example.git
$ git pull origin master
 
1行目、2行目は、ローカル環境で実行するコマンドと同じで、Gitを設置し、リモートリポジトリの URLを設定します。
2行目は、ローカルリポジトリを作成するときと同じく、ID、PASSの入力の手間を省くには、ID、PASSを含めた URLにしておくといいでしょう。
 
 
ここまでできれば、あとは、3行目の「pull」でファイルを取ってくるだけです。
 
「pull」コマンドを実行すると、リモートリポジトリからファイルが送られてきて、本番環境にファイルが反映されます。
 
この pullコマンドを実行することが「デプロイ」ということになります。
 
ただし、初めて pullコマンドを実行する際、ファイルが何もない環境にデプロイする場合は問題ありませんが、すでにファイルがある環境にデプロイすることはできません。

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

 
そのため、ちょっと手間にはなりますが、表示されるリストのファイルを削除してから改めて pullを実行してください。
 
 
また、pullコマンドを実行した場合、もともとの本番環境にあり、リモートリポジトリにはないファイルは、そのまま本番環境に維持されます。
 
例えば、先に書きましたが「.gitignore」に設定する「/config/app.php」ファイルなどが削除されるようなことはありません。
 
逆に、本番環境からファイルを削除したい場合は、Gitコマンドではなく、直接ファイルを削除する必要があります。
 
 
 

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とは関係なくなる、ということです。

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

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

mod_pagespeedカスタマイズで高速化を詳細解説・Google謹製

mod_pagespeedをデフォルトのまま使っていませんか?mod_pagespeedはデフォルトのままでも速い!でも仕組みを理解し設定し直せばより速くなる!

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

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

SyntaxHighlighterを導入してソースコードを見やすくしてみました

PHP、HTMLなどのソースコードをブログで紹介するとき、SyntaxHighlighterを利用することで見やすく提供することが出来ます。

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

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

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

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

Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド
Apacheの起動しているかの確認方法と起動、再起動、終了のコマンド

Apacheが起動しているかを確認する方法の解説に加え、Apacheの起動、停止、再起動のコマンドを解説。再起動のコマンドには restart、condrestart、reload、gracefulがあり、違いを解説。

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

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

EストアのショップサーブのWordPressサービスにメリット無し

ショップサーブのオプションサービスのWordPressを使ってみましたがデータベースには直接触れず使えないサービスでした。

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

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

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

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