Drupal 8 クラウド環境からローカル環境にデータを移行でドハマリする

Drupal のイベントに行って参りました~。

cmslabo.doorkeeper.jp

 

DrupalPHPで動くものなので、composer を使ってのインストールが良いようです。

前回インストールしたAcquia Dev Desktop2 は、内部でcomposerを使っているようです。

 

新たにDBを作って、インポートすべし

ローカル環境で、他のサーバ上で構築されていたDrupal環境を再現するには、

必要なデータとしては、

  • データベースのdumpファイル
  • Drupalのファイル一式

があれば良いそうです。Drupalプラグインを使ってデータを移行する場合は、上記のファイルを用意する必要は無いそうです。

 

とりあえず、phpMyAdmin で新しいデータベースを作り、ダンプファイルをインポートするのが大事と。

f:id:ts0818:20190220214803p:plain

講師の方のご温情により、zipファイルを用意していただいので、展開。

f:id:ts0818:20190220214646p:plain

んで、Acquia Dev Desktop 2 で、f:id:ts0818:20190220225257p:plain をクリックし、

f:id:ts0818:20190220225234p:plain

「Import local Drupal site...」で。

f:id:ts0818:20190220214923p:plain

「Change...」をクリック。

f:id:ts0818:20190220215118p:plain

展開しておいたDrupalのサイトを選択し(coreってフォルダを含んだディレクトリを選択すれば良いかと)、

f:id:ts0818:20190220225520p:plain

f:id:ts0818:20190220215014p:plain

f:id:ts0818:20190220215230p:plain

「OK」で。 

f:id:ts0818:20190220215047p:plain

インポートできました。

f:id:ts0818:20190220215333p:plain

PHPのバージョンをAcquia Dev Desktop 2 で利用できる中の最新バージョンにしときます。 

f:id:ts0818:20190220215408p:plain

setting.php のデータベースの設定も変えときます。データベース名、ユーザー名、パスワードを自分の作成したデータベースに合わせときます。

そしたらば、local site:のURLにアクセス。

「Save and continue」クリックで。

f:id:ts0818:20190220220058p:plain

 デフォルトのまま、「保存して次へ」。

f:id:ts0818:20190220220132p:plain

Drupalのインストールが始まります。 

f:id:ts0818:20190220220210p:plain

翻訳ファイルとかも整えてくれるようです。 

f:id:ts0818:20190220220307p:plain

サイトの情報を適当に入力し、 「保存して次へ」。

f:id:ts0818:20190220220359p:plain

インストール処理の続きが進行。

f:id:ts0818:20190220220554p:plain

無事、インポートが完了しました。 

f:id:ts0818:20190220220625p:plain


ドハマリした内容は、NG集で。

今回はこのへんで。

 

 

NG集:とりあえず、ローカルに、が悪夢の始まり...

作業自体は、講師の方が、「さくらクラウド」上に環境を用意してくれていましたので、そこで作業した分のデータを、scpなんかでWindowsにコピーしてます。

必要なデータとしては、

  • データベースのdumpファイル
  • Drupalのファイル一式

があれば良いそうです。Drupalプラグインを使ってデータを移行する場合は、上記のファイルを用意する必要は無いそうです。

f:id:ts0818:20190216200724p:plain

前回、インストールした

ts0818.hatenablog.com

 「Acquia Dev Desktop 2」を起動し、

「Local code:」のリンクをクリックすると、

f:id:ts0818:20190216200845p:plain

Drupalがインストールされてるディレクトリが表示されるので、

f:id:ts0818:20190216201147p:plain

上書きしたくない場合は、1つ上の階層に行って、

f:id:ts0818:20190216201335p:plain

⇧  「C:\Users\[ユーザー名]\Sites\devdesktop」に、クラウド上のDrupalのデータを展開(解凍)します。

で、拡張子が「.tar.gz」のファイルは、tar 状に圧縮されたファイルを、更にgz 状に圧縮した、2段階圧縮されてるものらしいです。

Windows 10 からは、

kledgeb.blogspot.com

tar コマンドが使えるようになったらしく、展開(解凍)ができるんじゃと。

teratail.com

⇧  上記サイト様でも言及されてますが、たしかに、このへん気になりますよね。

まぁ、とりあえず、Windows 10からは、Windowsでもtar が使えるそうなので、ワンライナー(コマンド一発)で展開(解凍)できるじゃろうて。

まぁ、とりあえず、圧縮されたファイルを下記フォルダにコピって、

f:id:ts0818:20190216204306p:plain

コマンドプロンプトで、ファイルを配置したディレクトリに移動し、

cd C:\Users\[ユーザー名]\Sites\devdesktop

 んで、展開(解凍)

tar xvzf demo4.tar.gz

 

んで、はい、エラー。展開が上手くできず...

 

 

そんでは、先にデータベースのデータをインポートしてみようということで...やっちまいました...。

その前に、phpMyAdminが、相変わらずの、アップロードできるファイルサイズの制限がかかっているという...なんだろう、ダンプしたsqlファイルとかのアップロードを想定してないってことですかね?

stackoverflow.com

⇧  上記サイト様によりますと、php.ini を修正すればOKとのこと。

自分の場合だと、『Acquia Dev Desktop 2』の中のPHPを使ってるので、

f:id:ts0818:20190219230006p:plain

⇧  上記のphp.ini の項目で、

post_max_size=500M

upload_max_filesize=500M

memory_limit=900M

⇧  のように修正後、

f:id:ts0818:20190219230306p:plain

⇧  「Stop」をクリックし「Apache」「MySQL」を一旦、停止し、「Start」で。

で、「Local database」のリンクをクリックで、ブラウザ上からphpMyAdminにアクセスし、インポート。

f:id:ts0818:20190219230652p:plain

「ファイルを選択」をクリックし、ダンプしたsqlファイルをアップ。

f:id:ts0818:20190219230823p:plain

で、見事に、サイトにアクセスできなくなるという...

f:id:ts0818:20190219231022p:plain

⇧  おそらく、ダンプしたsqlファイルのインポートの影響で、ローカルのDrupal用のデータベースの情報が上書きされた影響ですかね...

 

7016ch.panpi-fu-fu.com

⇧  上記サイト様によりますと、

Drupal6や7ではsettings.phpにてbase_urlを設定することで解決していたので同様に設定しようにもDrupal8ではsettings.phpからbase_urlが無くなった模様。

調べてみるとDrupal8ではSymfonyの機能で、リクエストヘッダより自動的にホストを取得するとのこと。

Drupal8でbase_urlを設定する方法 | 7016.ch

⇧  Drupal 8 からの仕様でややこしいことになっているようです。

というか、

It is possible to spoof the HTTP Host header for nefarious purposes, and trick Drupal into using a different domain name in several subsystems (particularly link generation). The Symfony framework provides a trusted host mechanism, where site administrators can whitelist hostnames. This mechanism can now be configured through settings.php.

https://www.drupal.org/node/2410395

結局、settings.php で制御しとるという...

$settings['trusted_host_patterns'] = array(
  '^example\.com$',
  '^.+\.example\.com$',
  '^example\.org',
  '^.+\.example\.org',
);

⇧  URLを追加しろってことらしい...なんだかなぁ~

で、なんかデータベースの設定とかも記載が無かったので、

modulesunraveled.com

⇧  上記サイト様を参考に追加してみるも、駄目でした...。

f:id:ts0818:20190220214330p:plain

Trusted host setting for Acquia Dev Desktop 2 (tested with Drupal 8.6.2 and PHP 7.2.8)

If you are using Acquia Dev Desktop 2, try the following trusted host pattern. Change "sitename" to the name of your site:

$settings['trusted_host_patterns'] = array(
    '^sitename\.dd$',
);

https://www.drupal.org/docs/8/install/trusted-host-settings

⇧  Acquia Dev Desctop 2 を使ってる場合は、localhost ではないらしい...XAMPPとかでもDrupal 導入できたのね...

はい、駄目でした...

f:id:ts0818:20190220214501p:plain

ということで、時間があるときに調べてみたいと思います。