概要
git push
コマンドのみでソースコードを本番サーバーにアップロードする手順について書いていきます。
EC-CUBE3系、または2系でも同様の手順で可能です。
画像はイメージです。
EC-CUBEをレンタルサーバーにアップロードする手順について
Google検索でEC-CUBE4 サーバー アップロード
で検索すると、記事のほとんどが、EC-CUBE公式ページからEC-CUBEのパッケージをダウンロードし、それをFileZilla等のFTPツールでソースコードをアップロード利用した記事がヒットするのですが、
EC-CUBEでECサイトを運用していく場合には、ほぼ間違いなくソースコードをgit管理したいんじゃないかなーと思うのです。
(※ EC-CUBEを実際に運用した経験がないため本当のところはわかっていません)
ローカル環境で開発し動作確認出来たソースコードを、gitだけで本番サーバーにアップロードする手順があれば良いなと思い、記事を書いてみました!
FTPクライアントツールを利用した場合のデメリット
FTPでファイルをアップする手順は直感的で簡単ですが、アップロード時に誤った操作をしてしまう可能性があります。
また、誤った操作を行うと本番ソースと同期が取れず、改修作業に時間がかかるといったことも予想されます。
人的ミスは必ず起こるので、ミスしないような仕組みを整えることが大事です。
改善策
ローカル環境で、git pushコマンドを実行するだけで、本番環境にソースをアップロードできる環境を整えます。
ソースコードのアップロードは、ローカル環境で1コマンド叩くだけなので、アップロードする際のミスを減らす事ができ作業時間も大きく削減します。
本番とローカル環境でソースコードの同期がとれ、
さらに、ローカル環境でソースコードのバージョン管理を行うため、万が一のときも安心です。
前提条件
- git
- ssh
が使用できるレンタルサーバーである必要があります。
2019年現在、主要なレンタルサーバー屋さんは対応しているかと思います。
今回はさくらレンタルサーバースタンダードプランの環境で行いました。
他のレンタルサーバーの方は、適宜読み替えてください。
また、コマンド内のuser_name
はご自身のユーザー名に置き換えるようにしてください。
コマンドプロンプトが$
の場合はローカル、%
の場合は本番サーバーでの作業となっています。
環境構築手順
sshでレンタルサーバーにログインします。
Windowsの方はputtyなどのターミナルツールを利用するようにしてください。
sshでログインし、サーバーのディレクトリを確認する
$ ssh user_name@user_name.sakura.ne.jp
$ user_name@user_name.sakura.ne.jp's password:*********
### さくらレンタルサーバの場合ホームディレクトリは/home/アカウント名/
% cd /home/user_name/
% pwd
/home/user_name
### ウェブ公開ディレクトリは/home/アカウント名/www/
% cd /home/user_name/www
% pwd
/home/user_name/www
ベアリポジトリの作成
eccube4.gitという名前のベアリポジトリを作成します。
% cd /home/user_name/
% mkdir -p git/eccube4.git
% cd git/eccube4.git/
% git init --bare
フックの設定を追加する
ベアリポジトリにpushされたとき、公開ディレクトリのリポジトリに対して、git pull
を実行するための設定を記述します。
% vim /home/user_name/git/eccube4.git/hooks/post-receive
post-receiveに書き込む内容は以下です。
#!/bin/sh
cd /home/user_name/www/eccube4
git --git-dir=.git pull origin sakura-server
ブランチ名をsakura-server
としていますが、任意の名前で構いません。
また、post-receiveに実行権限を与えておきます。
% chmod +x post-receive
ウェブ公開ルートでgitリポジトリを作成する
hookの設定によりgit pullされるリポジトリを作成します。
% cd /home/user_name/www
% git clone /home/user_name/git/eccube4.git
% ll eccube4/
total 4
drwxr-xr-x 6 user_name users 512 Dec 20 14:55 .git
ローカル環境でgitのリモート設定を行う
EC-CUBEのリポジトリ内で、sakura-server
(任意の名前/hookの設定したものと合わせる必要あり)という名前のブランチを作成し、リモートに追加します。
今回はEC-CUBE4最新バージョンを4.0.3のタグでチェックアウトしたいと思います。
$ git clone https://github.com/EC-CUBE/ec-cube.git
$ git checkout -b sakura-server refs/tags/4.0.3
$ git remote add sakura-server user_name@user_name.sakura.ne.jp:/home/user_name/git/eccube4.git
いざ本番環境にデプロイ
確認のため、README.mdを削除してコミットします。
$ rm README.md
$ git add README.md
$ git commit -m "README.mdを削除"
$ git push sakura-server sakura-server
$ user_name@user_name.sakura.ne.jp's password:
Enumerating objects: 1, done.
(省略)
remote: README.md
To user_name.sakura.ne.jp:/home/user_name/git/eccube4.git
8470a8d5c9..4c362102f9 sakura-server -> sakura-server
ターミナルのログにremote: README.mdと表示されます。
本番のウェブ公開ルート内のリポジトリからREADME.mdが削除されることを確認してみてください。
おわりに
git push
コマンドを実行するだけで、FTPツールを利用せずにリモート環境のソースコードのバージョン管理が可能になり、アップロード手順が単純になりました。
本番反映時の時短、ミスの軽減、gitによる履歴管理が可能になる等メリットが多いと思いますので、ぜひお試しいただければと思います。
私自身は実際に本番運用した経験が無く、実際にされている方はどういったやり方でやっているのかはすごく気になっています。もし、こんなやり方あるよとかあれば是非コメント等で教えていただけるととてもウレシイです!