今回は「既に運用中のEC-CUBE4サイトを改修するため、本番と全く同じサイトを同サーバー上に複製(コピー)する」というイメージで進めてみます。
はじめに
構成
今回はこのような構成で、サブディレクトリに複製を作っていきたいと思います。
[A・本番環境]
https://example.com/prod/
※公開URLは https://example.com とする。
(参考)【EC-CUBE4】サブディレクトリにインストールしたEC-CUBEをドメイン直下に表示させる
[B・コピー先]
https://example.com/dev/
★ドメイン変更の操作は不要!
EC-CUBE4では、ドメインの情報はDB内で保有せず、$_SERVER で取得しているよう。そのため、WordPressのようにDBの書き換えは必要ありません。素晴らしい。
★varディレクトリ内のフォルダ(cache・log・sessions)は削除!
varディレクトリには、本番環境の「キャッシュ・ログ・セッションファイル」などが入っています。これらを残しておくとコピー先で不具合が起きる可能性があるので事前に削除しておきます。
事前準備 (本番環境の完全バックアップ)
念のため、本番環境の「ファイル一式」と「DB(sql)」を、全てバックアップしておきます。
量が多いのでzipで圧縮してからSSHでダウンロードするのが良いですね。
※過去、圧縮せずFTPでダウンロードしようとしたら死ぬほど時間がかかりました。
// 例) Xサーバーからローカルのデスクトップにprod.zipをダウンロードする
scp -i ~/.ssh/(公開鍵) -r -P 10022 (サーバーID)@(サーバー番号).xserver.jp:/home/(ファイルまでのパス)/prod.zip /Users/(デスクトップまでのパス)/Desktop
作業工程
①空のデータベースを用意
お使いのサーバー上で作成しておきます。
②本番ディレクトリ /prod/ をまるっと複製。
//コマンドで実行すると楽です
cp -r prod dev
サブディレクトリ形式であれば、この1工程でコピー完成。新しいディレクトリのまま管理画面にも入れます。
③コピー先の .env の編集
//接続先のデータベースを変更
DATABASE_URL=mysql://(ユーザー名):(パスワード)@(ホスト名)/(DB名)
DATABASE_URL= の データベース接続先を変更します。
※ちなみに、この状態(DB内が空のまま)でサイトにアクセスすると「システムエラーが発生しました。」と表示されます。
④データベースのインポート
コピー元 /prod/ で使用していたデータベースを、コピー先 /dev/ で使用するデータベースにインポートします。
これで、コピーが完了しました。だいぶお手軽ですね。