ようやくトンネルの先に出口が見えてきたような気がする。
懸案事項はまだまだあるものの、
WPサイトがローカルとリモートで同期できるところまでこぎつけた。
数日来格闘しているWebMarix + Expressweb である。
あれこれのメモと検討課題について。
(これもローカルで書いてDB「発行」でやってみる。)
WebMatrix はようやく慣れてきた。
少したるい時もあるけれど、許せる範囲。
躓きと原因~解決
ExpressWeb をリモート先設定するのにまず躓いた。
解説ブログには、EWの管理画面>Web/Webサイト>自サイト選択>で管理タブを開きパスワード設定➾有効 とし、その後 PublishSettings をダウンロードする、とある。
このファイルをWebMatrix のリモート>設定>で開けばOK、のはずなのだがこれで「接続の検証」をクリックしても接続されない。
(私の場合)最終的には以下の手順で完遂となった。
①EWでデータベースを作成。
管理画面>データベース/MySQL5.1>ユーザーの作成➾データベースの作成
②管理画面>Web/Webサイトの作成>自サイトをクリック
(Webサイトプロパティを開く)>「管理」タブ ➾ パスワード設定、有効化
③同Webサイトプロパティ>「Web配置」タブ ➾ パスワード設定、有効化
➾Re-build Publishing Profile for this web site をクリックし、
DBネームとユーザーを選択
➾Download Publishing Profile for this web site でプロファイルをダウンロード
④WebMatrix のリモート>設定/新しい設定>発行プロファイルのインポート>
ダウンロードした③のファイルを選択
ただし「接続の検証」でエラーとなる。サーバー名が 無料サブドメインのサイト名となっているのをサーバー名に変更すると接続できた。このサーバー名がよくわからなかったのだが、Webサイトプロパティの「管理」タブからダウンロードしたPublishSettingsファイルにあるpublishUrl がそれである。
つまり、サイト名.my-site.co ではなく、******.datajapan.ne.jp にしたのだ。
これで接続は出来たものの、リモート>互換性のチェックをクリックするとデータベース以外は使用不可となる。不安はあるものの「発行」してみる。と、データは問題なくアップロードされた。が、サイトが表示されずWPの管理画面にも入れない。ここが二回目の躓きであった。
DNSの問題らしい、ということはなんとなくわかったけれど、どうすればいいのかが皆目わからない。EWのファイルマネージャーで一旦ファイルを全削除し、再度EWにWPをインストール、もう一度WMから差分の「発行」をしてみたり、「管理画面>ドメイン を見るとドメインが0となっていたので無料提供されているドメインを追加してみたりした。これによりドメイン数は0から1になった。これは必要な作業だったのだろうか?
とにかくググっても何もヒットせず、仕方なくメールで問い合わせる。回答は1時間強で返ってきた。曰く、
こちらの原因ですが、6月15日にお客様にてご利用Webサイトを削除されようとし、 失敗となっているログを確認いたしました。 通常、Webサイトを削除されますとドメインのDNSレコード(Aレコード)が同時に削除されますが、 Webサイトの削除に失敗した際に、DNSレコードのみ削除されてしまったものと存じます。
とりいそぎ、担当にて、コントロールパネルから、DNSを一度無効化し、再度有効にする事で、 削除されましたAレコードを再登録いたしました。 これにより、弊社環境からは、Webサイトが表示される事を確認いたしましたので、ご連絡申し上げます。 (DNS情報の伝播に時間がかかる場合がございます。お客様環境から確認いただけない場合は、 少々お時間を置いていただきましてから、再度ご確認くださいませ)
なお、Webサイトの削除に関しましてご案内申し上げます。 Webサイトを削除する際、WebMatrixからWeb配置をする際のリモート管理ユーザー([Web配置][管理]タブで設定)が有効の場合、 Webサイトを削除いただく事が出来ません。 また、[Web配置]タブにて作成いただきましたリモート管理ユーザー(_deploy)は、 コントロールパネルから無効化する事が出来ますが、 現在、[管理]タブにて作成いただきました管理ユーザー(_admin)は、 コントロールパネルの既知の問題により、お客様にて無効化する事が出来ません。 ご不便をおかけし申し訳ございません。 その為、Webサイトの削除をご希望の際は、お手数でございますが、 サポートまで、[管理]タブのリモート管理ユーザーの無効化をご依頼くださいますようお願い申し上げます。
とのことであった。
分かったのは、私があれこれやったのが悪かった、ということだけれど、そもそも最初に解説ブログ通りにやって接続できなかったことがある。それとよくわからないのは、[管理]タブと[Web配置]タブで有効化すると別の名前の管理ユーザーが出来ること。このいずれもWMのリモートユーザーに設定できる、ということだろうか。私の場合は[管理]タブの管理ユーザー(_admin)ではうまくいかなかったわけだけれど。で、今はこの二つの管理ユーザーともが有効となっていて、それでまあいいんだろうけれど、なんだかそれによって制限がある、と。
(この問題が解決した後は、[Web配置]のユーザープロファイルの設定のみで接続できるようになった)
分かりにくい。いや、さっぱり分からない。が、対応は早かったし、さらっと修正してくれて問題は解決されたし、その後WMのリモートで「互換性のチェック」をしてみたら、無事すべてが使用可能となっていた。めでたしめでたし、か。
大事なことがひとつ。最初はそのまま.htaccessも「発行」してしまっていた。が、これはしてはいけないものだった。Windowsサーバーで.htaccessは使えないという(これ以外にもLinuxサーバーと異なる点がありそう)。二度目の「発行」時には.htaccessは隠しファイルとし、「発行」されないように設定(WM>オプション>発行>「ソースコントロールファイルなどの非表示のファイルおよびフォルダを発行しない」にチェックを入れる)。
懸案事項と対応
① DBを「発行」(更新)するとリモートのheader画像がデフォルトに戻ってしまう
➾ テーマのカスタマイズで画像を選択するのではなく、子テーマのCSSで画像を参照させるように変更してみた。その際、テーマのカスタマイズで画像なしにするとサイトタイトル文字が表示されてしまう。これの回避のため、textのindentを-9999に。これで大丈夫だろう、たぶん。
➾ これだとヘッダー画像からHOMEへのリンクが効かない。リンクはテーマのカスタマイズで画像を選択すれば画像に、何も選択しない場合はブログ名にリンクされるのだが、そのブログ名が画像にかぶって表示されるのを防ぐために画面外に外してしまったからだ。
しばし解決策に悩んだ結果、header.php で読み込んでいるfunctions.phpの修正を試してみることに。まず親テーマのfunctions.phpの/***** Logo / Header Image Fallback *****/内を子テーマにコピペ。ただし、mh_logo(二か所) をmh_logo_nに修正し、リンクタグの位置を以下のように入れ替え、<div class=”logo-wrap”>全体にリンクを貼る設定とする。
/***** Logo / Header Image Fallback *****/ if (!function_exists('mh_logo_n')) { function mh_logo_n() { echo '<a href="' . esc_url(home_url('/')) . '" title="' . get_bloginfo('name') . '" rel="home">' . "n"; $header_img = get_header_image(); echo '<div class="logo-wrap" role="banner">' . "n"; if ($header_img) { echo '<a href="' . esc_url(home_url('/')) . '" title="' . get_bloginfo('name') . '" rel="home"><img src="' . $header_img . '" height="' . get_custom_header()->height . '" width="' . get_custom_header()->width . '" alt="' . get_bloginfo('name') . '" /></a>' . "n"; } else { echo '<div class="logo">' . "n"; echo '<h1 class="logo-name">' . get_bloginfo('name') . '</h1>' . "n"; echo '<h2 class="logo-desc">' . get_bloginfo('description') . '</h2>' . "n"; echo '</div>' . "n"; } echo '</div>' . "n"; echo '</a>' . "n"; } }
その後、子テーマのheader.php の<?php mh_logo(); ?>を<?php mh_logo_n(); ?>に修正で結果OK。この際 functions.php で不要なタグを削除した方がいいのかもしれないが、とりあえずそのままにしておく。
画像はCSSの背景画像のまま読み込ませているが、これだとレスポンシブで画像が縮小されない。画像リンクとソースを併せて<div class=”logo-wrap”>以下に書き込んでみたがうまく作動しなかったため、この状態で良しとする。
いつか修正する気になったときのため、画像リンク用コードをメモしておこう。
echo '<a href="' . esc_url(home_url('/')) . '" title="' . get_bloginfo('name') . '" rel="home"><img src="' . esc_url(home_url('/')) . 'wp-content/themes/mh-magazine-lite-kid/images/headerLogo021.jpg" />' . "n"; echo '</a>' . "n";
② ナヴィゲーションがデフォルトに戻ってしまう件
➾ リモート(ローカルも)>メニュー>位置の管理>(Topnaviを)選択でOK?
③ プラグイン設定は問題ないか
④もし移行するとして、プラグイン WordPress Popular Posts のカウント数を引き継げるのか
➾ 移行する際には本サイトの最新状態をダウンロード~発行(もしくはデータベースをクスポート~インポート) すれば引き継げる?
などがとりあえず気になるところ。②以下の検証は今後ということでとりあえず。
あとは
⑤ ドメインをどうするか➾独自ドメイン取得?
⑥ Azure はお試し期間内に削除しておくこと
くらいか…。
参考サイト
・ExpressWeb オンラインマニュアル – データ・ジャパン株式会社
・「WebMatrix で Web アプリをはじめよう!」のダウンロード
・窓の杜 – 【特別企画】10分で構築、管理も楽々! 「WebMatrix」と“ExpressWeb”で始める「WordPress」
・ExpressWeb上のWordPressをAzureに移行する – xin9le.net
・WebMatrix側の設定をする – ExpressWeb だからできる!WebMatrixをつかったWebサイト制作管理
・ExpressWebサーバーにリモート管理アカウントの追加・有効化
・Windows上でゼロからPHPサイトを作る! PHPユーザのためのMicrosoft WebMatrix入門
6.18
ヘッダー画像のリンクを修正する。詳細は上記に追記。
ところで「発行」という用語、配置/deploy ということらしいが、
WebMatrixで初めて触れたばかりでなじまない。
FTPだとアップロードでWeb配置だと「発行」になるのか。
デプロイとは、主にネットワークを通じて提供されるWebアプリケーションなどのシステム開発工程において、システムを利用可能な状態にすることである。
デプロイ(deploy)という言葉は元々、配置する、展開するといった意味の英語である。デプロイはソフトウェアのリリースやインストールも含んだ意味の広い言葉であり、開発環境からステージング環境へシステムを反映させることも、ステージング環境から本番環境へ反映させることも、「デプロイする」と表現できる。
Webアプリケーションをデプロイする際、通常はサーバーを再起動して内容を反映させる必要がある。サーバーを再起動させずにデプロイした内容を反映できる機能は、ホットデプロイと呼ばれる。
(IT用語辞典バイナリ)
本日の作業、テンプレートファイルとCSSファイルの変更と記事の更新は、
WebMatrix ➾ Expressで無事「発行」完了。
ローカルでfunctions.php いじってて真っ白になってもあわてずに済むのは気が楽。
これこそが開発環境をローカルに置くメリットだね。
発行の際接続に少し時間はかかるけれど、「発行」そのものはスムーズ。
このあと本サイトに変更をコピペしとこう
(移行したらこれも不要になるんだよなあ…)。
コメント