5丁目通信(仮称)

とある5丁目で活動する還暦を過ぎたWebプログラマーの覚え書きです。それとかかってくる迷惑電話や、家業のアパート経営について。

カテゴリー: インストール

  • PCの電源を交換した話し

    容量が足りないかもしれないということで、以下の玄人志向の電源に交換する。 また、しばらく様子見。

    今までの電源は550Wのもの。いつ買ったは忘れた。PC電源のテスターで測ると、電圧の数値は特に問題なく許容範囲に入っている。

    最初に新しい電源を交換したときに、6PIN SENSEのコネクタにHDD/SATAのケーブルを挿して起動できなくて、初期不良をを疑ったのは内緒の話し。だって、コネクタとケーブルが同じ6PINで差し込めたから・・・。

    今回、6PIN SENSEっていう存在を初めて知ったわ。

    しかしながら、新しい電源はPCIへは3本もあって誰がそんなに使うのかと思う反面、HDD/SATAが2本しかないという、アンバランスな構成な電源なのである。

  • Dreamweaverが遅いのでPCの構成を変えてみた話し

    最新版のDreamweaver CC V19.0でファイルを開くと、コードの編集ができるまで異常に遅いのでいろいろ試してみる。正月だから。

    とても耐えきれないくらい遅いので、ずっと昔のDreamweaver CC(2015)を使っている。2015のほうはストレスなくファイルを開いてすぐに作業開始できる。

    まずは、こちらのビデオカードを交換してみる。こちらは全然影響無しだった。考えてみればそんなにグラフィックとか3Dに負荷がないから当たり前。ゲームもしないのに高いビデオカードを買ってしまった。

    次にディスクをハードディスクからSSDにしてみる。今まで、Windowsのシステム、アプリケーションはSSD、データはハードディスクに入れていた。データをSSDに入れておくなって突然死が怖くて今までやっていなかった。後述のようにデータ類はBitbacketのリポジトリに入れてあるし、重要なデータはDropboxで同期しているし、そもそもバックアップを3重に取っているから、もし何かあっても大丈夫な気がする。

    今回購入したのは、1TBのこのSSD。SSDも安くなったものだ。サムスンはハードディスクは買ったことがあるけど、SSDは初めて。

    今回は、データのディスクを追加するだけなので簡単な作業である。Windows10のディスク管理でボリュームを追加してフォーマットするだけ。全然難しい作業ではない。

    Dream weaverで扱うHTMLファイルは、Bitbucketのリポジトリに入れているのでクローンしておく。試しに一つのWebサイトをSSDに入れてみるが、これは1,000ページにもなる大きなWebサイトで、PDFやら画像がやたら多いのでクローンするだけで時間がかかる。

    一度Windows10のブルースクリーンが出てきたけど、二回目でcloneが無事に終わる。

    ブルースクリーンの問題は後で対応するとして、改めてDream weaverの最新版でHTMLファイルを開いてみる。ブルースクリーンはおそらく交換したビデオカードのデバイスドライバの問題だろうと想像している。

    今度は普段通り待たずに作業ができるようになった。今はデータも大きなSSDに置いておく時代かもしれない。逆に考えると、最新版のDreamweaverはハードディスクだと全く使いものにならないということだな。

    EaseUS Todo Backupを使ってシステムのバックアップを取っているけど、出力先のハードディスクが一杯なので余っているハードディスクを追加しておく。今回は既存の3TBに新規に1TBをWindows10のスパンボリュームでディスクを拡張しておく。

    スパンボリュームを使うのは初めてだけど、こちらも簡単に作業が終わる。スパンボリュームは危なそうだけど、バックアップのディスクだからあまり実害がないだろうと判断する。システムとバックアップが同時に逝ってしまうと辛いけど。

    マイクロソフト
    ¥15,173 (2025/04/14 15:02時点 | Amazon調べ)
    マイクロソフト
    ¥21,400 (2025/04/19 21:38時点 | Amazon調べ)

    自作PC用に一番左のWindows11のパッケージを実際に購入しましたが、問題なくインストールできました。Windowsは使うPCの分だけ正しくライセンスを購入しましょう。

    続きはこちらから

  • FreeNASのディスクの入れ替えができたので、Time Machineの設定をしてみた話し

    無事にFreeNASのディスクの入れ替えができた。バックアップしておいたボリュームをつなげてデータのリストアをしてみる。こちらは一晩かけて完了した。あらかじめrsyncのコマンドを作っておくと楽チン。

    別のQNAPからデータをバックアップしているので、あとはQNAPにあるバックアップの設定をやり直した。こちらはボリューム名を変えたから、その辺を修正する。テストを兼ねて手動で実行する。無事にパックアップの設定もできた。

    ディスクを入れ替えたおかげで、だいぶディスクに空きができたので、ついでにMacintoshのTime Machineの設定を行う。おかげさまで未だにTime Machineのお世話になったことはない。

    FreeNASの設定は、こちらのサイトを参考にする。

    【備忘録】FreeNASでTime Machineを設定する

    motioncraft-jp.tumblr.com

    同じようなことをやったけど、MacのTime Machineの設定でドライブの一覧にFreeNASが出てこない。いろいろと設定し直したけどダメだった。仕方ないので思いつきで、一旦AFPでFreeNASのボリュームをMacから接続してみた。そうすると今度はドライブのリストに表示された。QNAPでもTime Machineの設定しているけど接続しなくてもリストに表示されている。FreeNASの場合、どうして接続できたかはわからない。そんなものなのか?

    無事にTime Machineでバックアップが開始したけど、後12時間かかるって表示された。終わるまで放っておこう。

  • FreeNASのディスクを入れ替えた話し

    いきなり思い立って、HPのMicroServerの上でバックアップのバックアップで使っているFreeNASのディスクを大きいサイズに入れ替えます。今は、400GB+500GB✕3台+1TBという寄せ集めのディスクを入れています。おかげで無駄なディスク領域がありました。これに手元の2TBに新しく2TBを3台購入して、まともに2TBを4台で構成していきます。

    この記事を書きながら、なんで2TBを買ったのだろうと思ってしまいました。どうせ数年後にはもっと大きなディスクに入れ替えて2TBなんて無駄になるのではないかと思い出した。どんどん、ディスク財産が増えていきます。捨てられないハードディスクが十数台あります。

    購入したのはウエスタン・デジタルのPC用の安いハードディスクです。WDは色で用途を表しているのでわかりやすいので買ってしまいます。たまにはSeagateを買ってみようかと思います。

    今回はNAS用の高価なハードディスクではなく、壊れたら安いものを入れ替えていこうという方針です。どうせバックアップのバックアップのですので、多少止まっている時間があっても構わないという考えです。まとめて2台とか壊れてしまうと辛いものがありますけど。

    最初は一台づつ新しいディスクを入れ替えてFreeNASのZFSの機能で再構築していこうと思いましたが、結局全部交換ですので、簡単にデータをバックアップしてから、新しくディスクプールから作成してデータをリストアしていくことにしました。本来ならば、ZFSのディスクの入れ替えとか経験しておかないといけないのですが。

    現在、バックアップ中です。一晩かかっても終わりません。残り〇〇分という表示は当てになりません。

    しかしながら、ZFSはRAIDで構成してしまうと、後からRAIDのディスクの台数を増やせないのですね。今回はディスクが4台になって1台ディスクスロットが余りますが、将来的にディスクを追加する方法がわかりませんでした。以前は結局RAID構成のやり直しをやった覚えがあります。何か、良い方法はあるのかしら。

    本当はFreeNASをやめて、Droboのようなもっと簡単なNAS運用をやりたいのですが、せっかくHPのMicroServerも持っていますので、とりあえずはこのままFreeNASを使うことにします。

  • 会社のホームページのサーバーをWordPressからbaserCMSにした話し

    会社のホームページを常時SSL化に伴い、サーバーの移行のついでにWordPressからbaserCMSに乗り換えてしまう。ページ数も少ないし手でコピペしてしまう。それにしてもアクセスの少ないサイトである。

    周りにはSSLでアクセスさせたほうがいいよと言いながら、自分のところではやっていなかったという、ようやくやってみる。ほぼ会社のホームページは更新してないけど、ホームページがあったでセールス電話がかかってくるくらいなもの。でも、ホームページがなくなると、周りから会社が潰れたと思われるので、簡単なものでもいいから作っておく。

    さくらインターネットのVPSにApacheを立てて名前ベースのバーチャルホストで動かしていたが、これを同じくさくらインターネットのレンタルサーバーに移してしまう。ドメインを設定して、/etc/hostsにIPアドレスを追加して、ドメイン名でさくらインターネットのレンタルサーバーにアクセスできるようにしておく。あとは、MySQLの設定やbaserCMSのインストールをごにょごにょやって、ページのコピペ、適当にテーマを変更、DNSを変更、SSLの設定して完了。

    と思いきや、以下のさくらインターネットのサポートサイトに書いてあるように.htaccessを追加すると、HTTPにアクセスしたときリダイレクトループが発生する。SさくらインターネットのレンタルサーバーではSNI SSLとか普通のSSLではないようなので、普通にrewriteルールを書いたらダメだそうな。

    ブラウザのキャッシュをクリアしたり、別のテーマにしたり、テーマの初期化データを再投入とか、.htaccessを元に戻したりしても、今度は元に戻らなくなった。なにかやってしもうた、感が大きい。

    しかしながら、テーマの初期化データを再投入をやると、今まで作っていたページが来てしまったのは辛かった。これをやらないとテーマを変えたらブログ一覧が取得できないとか、原因不明な動きをする。こちらは今回ページ作成で追加されたデータがあるテーブルを、SQLで強引に入れ替えてしまうというこ手段で回避した。テーマの管理に初期データを出力する機能で一旦データを作成して、こちらを初期データとして再投入したけど、元に戻らなくなったのでやめた。

    リダイレクトルールの原因は、私のbaserCMSのシステム設定の勘違いだった。WebサイトURLがSSLとなっていないものとSSLと明示されているURLの2つ設定しないといけないが、SSLなっていない方にHTTPを設定してしまっていた。こちらもHTTPSのURLを設定しないといけなかった。なんで2つURLを設定しないといけないかはソースを見てみないとわからない。

    その下にSSLのチェックがあるけど、こちらは管理者画面でSSLでアクセスするかの設定だった。このチェックでSSLのURLを自動的にアクセスしてくれるのかと思い込んでいたの大きな間違いだった。

    「管理者画面SSL設定」で「SSL通信を利用する」にチェックを入れると、HTTPSで管理者画面にログインできなくなったので外しておいた。これは原因不明。

    以上、なんだかんだで当初の目標通り無事にSSL化ができた。しかし、HTTPからのリダイレクトに若干問題あるけど時間があったら対応する。

    著:久保田涼子, 著:西原礼奈, 著:阿諏訪聡美
    ¥2,399 (2025/04/15 13:00時点 | Amazon調べ)

    なんやかんやでWordPressのサイト構築で躓くのは、PHPのプログラミングなのでした。

    追記(2018年9月5日)

    初期データを投入したからいろいろなところで元に戻ってしまっている。見つけたら直している最中。タイトルが初期データだったのはまずかったな。

  • ThinkPadの携帯ネットワークが不安定なので、いろいろ解決策を講じた話し

    まだまだThinkPadの携帯ネットワークが不安定である。これはThinkPadを買ったのが失敗したかと思った。わざわざWAN対応でカスタマイズしたのにな。

    と、言ってられないので再度対応を考える。レノボのサポートサイトに行っても快活方法は見つからない。Q&Aのサイトはあるけど、サポートはユーザーコミュニティでやっているみたい。

    ここから余談。

    レノボにすればサポートは、「何かあったらユーザーコミュニティで質問しろよ。詳しいパワーユーザーが答えてくれるぜ。」って感じなのかな。しかし、パワーユーザーっていうのが曲者で、回答内容を見てみると、「あんたの質問内容じゃあ情報が足りない。」とか「あんたの質問は何を言っているかわからない」とか「そのそもこのコミュニティで質問するべきことではない。」とか、初心者からだと凹むような回答が多い。しかもこんな回答とするのが上位の回答数のユーザーと来たもんだから始末が悪い。

    まあ、こんなユーザーコミュニティに頼らないで、自力で解決しなければいけないかと思ってしまったりする、これはレノボによる”ユーザースキルパワーアッププログラム”かもしれないな。

    さて話しは戻るが。

    結局、今のところの解決策として、最新のWANドライバをアップデートすること。2018年7月24日リリースのワイヤレスWANドライバにアップデートしておいた。とりあえずこれでまたまた様子を見ておく。

    ドライバの置き場所とかは以下のレノボのサポートサイトで

    自分のThinkPadの必要なドライバは、ここのリンクからダウンロードできるようだ。あらかじめレノボのユーザーアカウントを作成して、自分のThinkPadをマイプロダクトに登録すること。登録まで多少わかりにくくて手間取るかもしれないけど、がんばって登録してね。

    ダウンロードサイトでドライバの自動更新ができるみたいだけど、あらかじめLenovo Service BridgeというThinkPadのシリアルナンバーとか中身をスキャンするソフトをインストールする必要がある。しかしながら、あらかじめインストールされていても、どういう訳かLenovo Service Bridgeが起動してくれない。そのときは、仕方ないので一度Lenovo Service Bridgeを削除してから再インストールしたら無事にスキャンが始まった。

    ThinkPadは何かあったら解決が難しいと痛感した。まだまだ問題があるかもな。

    追記(2018/07/31)

    やはりWANでつながらない。つながっているけどスリープから復帰したときとか、明示的に携帯ネットワークをOFFにするとつながらなくなる。携帯ネットワークでつなぐためには、ThinkPadの再起動が必要になる。再起動すれば、二回に一回はつながるようになる。

    さて、Lenovoのサポートをお願いしようかとサポートサイトに行ってみると、連絡先の電話番号が見つからない。自分のThinkPadを登録したマイプロダクトのぺーじには、ユーザーコミュニティと有償サポート、国際サポートのリンクしか出てこない。散々探してみると、どうやら購入後30日しかレノボからテクニカルサポートを受けられないようだ。30日以降は有償になる。とにかくレノボのサポートサイトはわかりにくい。Q&A情報からは必要な情報を取得できなかった。

    どうやらレノボは技術的なユーザーサポートは、ユーザーコミュニティに任せてしまっているようだ。ユーザーコミュニティを覗いてみても、そんなに満足できるような回答をされていない。レノボもこのユーザーコミュニティはレノボが運営しておらず、レノボからの回答ではないと謳っている。これではThinkPadを買ってもあとでトラブルがあっても正常に戻すことは一般の人では難しいかもしれない。

    追記(2018/08/31)

    携帯ネットワークにつながらないときの対処方法の一番は、ThinkPadを再起動することしかなさそう。こんなバカなことがあるかは置いておいて、これはどこに相談するかが問題。Lenovoか? Lenovoのユーザーコミュニティか? それともSIMカードを出しているOCNか? いずれも知らないと言われそう。

    最初からWAN対応なんてThinkPadを買わなければよかったと後悔している。そもそもThinkPadを買わなければよかったのかな。携帯ネットワークにつながらないこと以外は、ThinkPad Carbonを気に入っているのだけど。

  • デジサート社証明書再発行したけどIISにインストールできない話し

    お客さんから「さくらインターネットからSSLの証明書を再発行しろってメールが来たけどやっておいて。」と連絡があった。デジサート社(旧シマンテック社)が発行したSSLサーバー証明書を、Chromeで失効されてしまうので再発行しなければいけないそうだ。

    さくらインターネットの指示通りにサーバー証明書を取得の手続きを行う。しかし、発行ステータスが手続中のままで一日経っても進まない。さくらインターネットのサポートに問い合わせると、認証ファイルを再度アップしなければいけないそうだ。説明書をよく読んでいなかったし(どこかに書いてあるかわからない)のが大きな敗因だった。サポートからは「認証できていないから。」の一言だったのはやさしくないサポートだった。認証ファイルを設定しなけれいけないなんて、とんと忘れていたので(更新の一年に一回しか作業しないし)、認証ファイルをアップし直すということまで、たどり着くまで時間がかかった。最初はIPアドレスの許可かファイヤウォールの設定かと思った。

    無事に認証されてサーバー証明書をダウンロードできるようなった。今度はWindows ServerのIISにイントールしようとしたらできなかった。IISの「証明書要求の完了」でインポートしようとしたところ、問題なくインポートできてサーバー証明書一覧に表示されるのがが、他のページに遷移したり更新をすると一覧から消えてしまい、バインド設定ができなかった。

    再度、さくらインターネットに問い合わせたところ、自分のところのサーバーではないからサポートできないと回答されてしまう。その回答メールの中に

    今回の証明書再発行はGoogle とデジサート社との不仲が原因であり、
    ChromeやFirefoxなどで、ある期間にデジサート(シマンテック)から発行された
    証明書をエラー扱いにするというものでございます

    と書かれているので、何だか会社同士の勝手なふざけた理由で、こちらが作業しなければいけないようだった。これに関しては、さくらインターネットのサポートには、「ふざけんな。」と返送しておく。

    このトラブルの件を調べたところ、同じ現象が報告されている。

    このような現象が発生したら、そのままIISでは証明書を入れられない。OpenSSLのコマンドで.pfxファイルを作ってからインポートしてあげないといけないようだ。面倒くさそう。

    今回のサイトはブラウザでアクセスするようなサイトではないしテストサイトみたいなものだから、これからどうしようか考える。他社のSSL証明書にしたほうが速いし安いかな。

    追記

    現在はさくらインターネットからSSL/TLS 証明書を全部引き上げて、AWSでAWS Certificate ManagerでSSL/TLS 証明書を管理している。その方がお金もかからず手間もかからず幸せになるのである。

  • 新しくThinkPad X1 Carbonを買った話し

    ずっと前から買う買うと言っていたノートPCをようやく購入。買ったのはレノボのThinkPad X1 Carbon。ちょうどレノボの四半期の決算セールだったので、もう勢いで注文。セールといっても、その後も安くなっていたようなので、もうセールスメールは無視している。いまだにいろいろなところのサイトの広告バナーは、これでもかとThinkPadが表示されるけど・・。

    注文してから10日で発送。ようやく届いた。とても時間がかかるのね。届くまでのモチベーションが下がるわ。まあ、少しばかりカスタマイズしたので仕方ないけど。

    今回の注文は16GBとWQHDのモデルにカスタマイズ追加は、Window10 Proに替えてSIMで携帯ネットワークで接続できるようにWANを追加した。最初の目標の重量1Kgは、多少オーバーしてしまった。また持って歩くとMacBookのように腰が痛めるかな。あと、256GBのSSDが若干心許ないけど、将来的に大きいものに交換するかな。

    しかしながら、パッケージには相変わらずコストをかけているのね。こちらとしてはどうせ開封する最初の一回しか関係ないので(ないとは思うけど故障したときの返送くらいかな)、そんなにパッケージにコストをかけなくてもいいと思うわ。アクセサリーの入っている箱はおしゃれかもしれないけど、意外と薄くて取り出すときに破けたので、これは残念だと思った。

    Windows10 Proのアップデートとアプリケーションをインストールしてようやく使えるまでに設定した。Windows10 の設定は、何もしない代わりに時間はかかる。

    ThinkPad X1 Carbonの2018年バージョンから入るSIMカードはマイクロではなくnanoになっていたのは予定外だったので、SIMカードを追加購入する。今回は何も考えずに今使っているOCNモバイルONEのSIMカードを追加する。SIMカードのWANの設定が最初うまく行かなかったのは後で話そう。

    初めて、レノボというかThinkPadを買ったけど、これからどうなることやら。今まで2台続けてパナソニックのレッツノートを買って、MacBook Proにしたけど、やはりWindowのほうが私は楽。

    マイクロソフト
    ¥15,173 (2025/04/14 15:02時点 | Amazon調べ)
    マイクロソフト
    ¥21,400 (2025/04/19 21:38時点 | Amazon調べ)

    自作PC用に一番左のWindows11のパッケージを実際に購入しましたが、問題なくインストールできました。Windowsは使うPCの分だけ正しくライセンスを購入しましょう。

    続きはこちらから

  • Happy Hack Keyboard(Lite2だけど)をやめてREALFORCEのキーボードにした話し

    しばらくHappy Hack Keyboardを使っていたけど(Lite2だけど)、新しいシリーズにテンキーレスが出たので、東プレのREALFORCEのキーボードに買い換える。

    やはり、ファンクションキーとDELキーは必要なのよね。ファンクションキーを押しながらのキーは、頭で一瞬考えないといけないから。意識高い人のようにHHKBはやはり使いこなせなかった。

    今回購入したのは、これ。

    これの静音のAPCの黒にする。カナの表示はいらないから。だけど、黒だとキートップが見にくい。見なければ関係ないけど。

    ずっと何年も量販店のキーボード売り場でキータッチを試していたけど、一番キータッチが軽いものが好きなので、結局これにした。

    APCとかの機能でキーの押す深さを本来は設定するらしいけど、最初の設定だとキータッチが軽く感じる。キーの上に指を乗せてぼうっとしていたら、気が付くと連続してキーが入力されていた。REALFORCEソフトウェアでとりあえずAPCでキーの深さを3.0mmにしておく。こちらは後でAPCの設定で調整していく。

    それと、Ctrlキーをデフォルトの位置に戻しておく。Caps Lockはそのままにしておくけど、こいつは使わないのでREALFORCEソフトウェアでロックしておく。HHKBを使っていたときはAの隣にCtrlキーにしていたけど、別のマシンを使うときに迷わないための措置である。と言いながらも、近いうちに替えてしまうかもしれない。まだCtrlキーの位置に慣れていないので間違える。

    これから慣らさないといけない。でも意外と自分は慣れるのは早いから・・・。

    HHKB
    ¥36,850 (2025/04/20 16:45時点 | Amazon調べ)
    HHKB
    ¥24,800 (2025/04/20 16:45時点 | Amazon調べ)

    よいキーボードを使うと、PC作業が快適になるかもしれません。

    続きはこちらから

  • Laradockを使ってCakePHP3+Xdebug+VS Codeの開発環境を構築した話し

    CakePHP3で作りたいものがあったので、CakePHP3の開発環境を簡単にDockerを使って構築しようと思い立った。最初は自分でdocker-compose.ymlを作成してコンテナを起動してみたけど、どうしてもXdebugでデバッグができなかった。

    たまたまLaradockという本来はLaravelフレームワーク用のDockerコンテナキットを見つけた。最後にcomposerでLaravelの代わりにCakePHPをインストールできるらしいからLaradockを使ってみた。LAMP関連(今回はAではなくnginxだけど)のコンテナが全部入りだから(MySQLだけではなくて、PostgreSQLやSQL Serverもある)、自分でdocker-compose.ymlを書くよりはいいだろうと思った。

    参考までにこれから構築していく自分の環境は以下の通りである。ここにLaradockを使ってCakePHP3+Xdebug+VS Codeの開発環境を構築する。。

    Windows 10 Pro 64 bit
    Docker version 17.12.0-ce, build c97c6d6
    docker-compose version 1.18.0, build 8dd22a96

    以下はいろいろと参考にしたサイトからつまみ食いしなから設定を行った部分を抜き出してまとめていく。

    Laradockの設定は、こちらのサイトを途中まで参考にした。

    PHPフレームワーク「Laradock」で、手軽にLaravel+Dockerな開発環境を構築する

    株式会社LIG|東京のWeb制作・システム開発・オフショア開発会社

    gitのcloneでLaradockをインストールしている。次にLaradockでCakePHP3に関する設定を行うには、こちらのサイトを参考にした。

    LaradockでPHPフレームワーク(Laravel・CakePHP)とCMS(WordPress・Drupal・baserCMS)の開発環境(nginx・php-fpm・mysql)を構築する

    Qiita

    .envをコピーして設定して、これでインストール完了ですと言えないのは、コピー&ペーストインストールのいつものこと。このままではphpMyAdminからMySQLコンテナに接続できないとか、細かい問題があった。そしてXdebugでPHPのデバッグをやりたかったので、いろいろ設定を追加していく。

    まずは、上記の2つのサイトを参考にしてLaradockをインストールする。自分のところでは、今までの作業でディレクトリはこのようになっている。

     /laradock-test
     ├── laradock
     └── src

    .envの設定だが、設定の一番のポイントはポート番号を重ならないこと。既にローカルでPHP+Xdebugが動いていたようなので、ポート番号の指定で嵌まった。使っていないポート番号を設定しておく。以下に今回設定した.envのnginx, MySQL, phpMyAdminの設定を上げておく。

     ### NGINX
     NGINX_HOST_HTTP_PORT=8082
     NGINX_HOST_HTTPS_PORT=443
     NGINX_HOST_LOG_PATH=./logs/nginx/
     NGINX_SITES_PATH=./nginx/sites/
     NGINX_PHP_UPSTREAM_CONTAINER=php-fpm
     NGINX_PHP_UPSTREAM_PORT=9000
    
    ## MYSQL
     MYSQL_VERSION=5.7
     MYSQL_DATABASE=default
     MYSQL_USER=default
     MYSQL_PASSWORD=secret
     MYSQL_PORT=3333
     MYSQL_ROOT_PASSWORD=root
     MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
    
    ### PHP MY ADMIN
     # Accepted values: mariadb - mysql
     PMA_DB_ENGINE=mysql
     # Credentials/Port:
     PMA_USER=default
     PMA_PASSWORD=secret
     PMA_ROOT_PASSWORD=secret
     PMA_PORT=8083

    使っていない別のポート番号に設定し直しておく。MYSQL_VERSIONは元の設定の8.0だと認証で失敗してしまったので、8.0ではく5.7に設定したら認証ができた。こちらは何か別のよい方法があるかもしれない。

    WORKSPACEとPHP_FPM の設定は以下の通り。修正した箇所だけを上げておく。

     ### WORKSPACE
     WORKSPACE_INSTALL_XDEBUG=true
    
     ### PHP_FPM
     PHP_FPM_INSTALL_XDEBUG=true
     PHP_FPM_INSTALL_INTL=true

    Xdebugを使うのでWORKSPACE_INSTALL_XDEBUGとPHP_FPM_INSTALL_XDEBUGをtrueにして(PHP_FPM_INSTALL_XDEBUGだけでもいいかも?)、PHP_FPM_INSTALL_INTLはCakePHP3で必要なのでtrueにしておく。

    .envの設定の最後として、CakePHP3のインストール先のディレクトリも設定しておく。

    # Point to your code, will be available at `/var/www`.
    APPLICATION=../src/

    nginxのドキュメントルートを修正する。設定するファイルは以下のファイルである。

    .\laradock\nginx\sites\default.conf

    こちらのrootの設定を、CakePHP3のリモート側のドキュメントルートのディレクトリに設定する。今回のプロジェクト名をmycakephpとしておく。

    root /var/www/mycakephp/webroot;
    ここで一度Docker composeを実行してコンテナを起動しておく。
    docker-compose up -d nginx mysql phpmyadmin

    workspaceコンテナにログインして、composerを使ってCakePHP3をインストールしておく。こちらは参考サイトの通り。

    LaradockでCakePHPの開発環境(nginx・php-fpm・mysql)を構築する

    Qiita

    ここではサイトに書いてある通り、以下のコマンドでプロジェクトmycakephpでCakePHP3をインストールした。

     $ composer self-update && composer create-project --prefer-dist cakephp/app mycakephp

    nginxからCakePHP3のサイトを参照できるかチェックする。OKならCakePHP3の初期画面が見えるはず。

    データベースの接続の設定を.\src\mycakephp\config\app.phpにしておく。

    'Datasources' => [
    
        'default' => [
           :
        'host' => 'mysql',
           :
        'username' => 'default',
        'password' => 'secret',
        'database' => 'default',
           :

    このような感じで.envのMySQLの設定に合わせておけば、データベースに接続が成功はずである。

    phpMyAdminも確認しておく。こちらも.envのMySQLの設定通りにすればログインできてMySQLの中を参照できるはずである。もちろん、MySQLのパスワードは適当なものに変えること。

    サーバ:mysql
    ユーザ名: root
    パスワード: root

    MySQL Workbenchからも接続を確認できた。以下の接続情報でWindowsローカルで接続できた。

    Hostname:localhost
    Port: 3333
    Username: root
    password: root

    最後にXdebugの設定である。Xdebugのコンテナ側の設定ファイルは次の2つである。同じ内容でコピーすれば大丈夫だった。

    .\laradock\php-fpm\xdebug.ini
    .\laradock\workspace\xdebug.ini

    自分が設定した内容は以下の通りである。とりあえずプロフィラの設定も含めて設定しておく。

     xdebug.remote_host=172.27.7.81
     xdebug.remote_port=9002
     xdebug.idekey=Listen for XDebug
    
     xdebug.remote_autostart=1
     xdebug.remote_enable=1
     xdebug.remote_connect_back=0
     xdebug.cli_color=1
     xdebug.profiler_enable=1
     xdebug.profiler_output_dir="/var/www/mycakephp/tmp"
    
     xdebug.remote_handler=dbgp
     xdebug.remote_mode=req
    
     xdebug.var_display_max_children=-1
     xdebug.var_display_max_data=-1
     xdebug.var_display_max_depth=-1

    ここでわからなかったのはxdebug.remote_hostの値だった。結論としてはこちらはWindowsの場合、

    ipconfig

    で表示されるDocker側の仮想スイッチのアドレスの値を設定しておく。Googleさんに「xdebug リモートデバッグ」で検索して、よく出てくるサイトに書かれている$_SERVER[‘HTTP_X_REAL_IP’]とか$_SERVER[‘REMOTE_ADDR’]の値ではないので注意すること

    xdebug.remote_host = host.docker.internal
    xdebug.remote_connect_back=1
    xdebug.remote_port=9002
    xdebug.idekey=Listen for XDebug
    
    xdebug.remote_autostart=1
    xdebug.remote_enable=1
    xdebug.remote_connect_back=0
    xdebug.cli_color=1
    xdebug.profiler_enable=1
    xdebug.profiler_output_dir="/tmp"
    
    xdebug.remote_handler=dbgp
    xdebug.remote_mode=req
    
    xdebug.var_display_max_children=-1
    xdebug.var_display_max_data=-1
    xdebug.var_display_max_depth=-1

    xdebug.remote_hostの設定は、最近新しくDockerのための設定が追加されたようなので、こちらは難しいことをせずにhost.docker.internalを指定しておく。これでうまくデバッグができるようになった。

    docker-compose stop
    docker-compose build php-fpm workspace

    でphp-fpmとworkspaceのイメージをビルドしなおす。ビルドできたら、

    docker-compose up -d nginx mysql phpmyadmin

    をDocker Composeを再度実行する。nginxのドキュメントルートにphpinfo()を書いたファイルを置いてアクセスしてみて、正しくxdebugが設定されているかを確認しておく。

    クライアント側の開発環境はマイクロソフトのVisual Studio Code(VS Code)を使っている。あらかじめVS Codeの拡張機能であるPHP Debugをインストールしておく。次にVS Codeのデバッグの構成ファイル(launch.json)を修正する。launch.jsonは以下のように設定した。

    {
      "version": "0.2.0",
      "configurations": [
    
       {
        "name": "Listen for XDebug",
        "type": "php",
        "request": "launch",
        "port": 9002,
        "pathMappings": {
          "/var/www":"${workspaceRoot}/src"
         },
        "ignore": [
          "**/vendor/**/*.php"
        ]
       },
       {
        "name": "Launch currently open script",
        "type": "php",
        "request": "launch",
        "program": "${file}",
        "cwd": "${fileDirname}",
        "port": 9002
       }
      ]
     }

    portは、xdebug.iniのxdebug.remote_portと同じ値にする。以下のように設定するように言っているサイトもあるが、

          "serverSourceRoot": "/var/www",
          "localSourceRoot": "${workspaceRoot}/src"

    serverSourceRoot、localSourceRootとも今後推奨されない設定のようなので、pathMappingsにしておく。pathMappingsの設定は、

    "pathMappings": {
        "リモートディレクトリ":"ローカルディレクトリ" 
        },

    のようにリモートとローカルのパスをマッピングする設定である。ドキュメントをよく読まずにリモートとローカルを反対にしてしまったので動かなくて悩んだ。こちらはnginxのドキュメントルートのディレクトリではないことに注意する。ドキュメントルートディレクトリ外のファイル(例えば、.\src\mycakephp\src\Controller\AppController.php)をデバックしようとしたときに、pathMappingsにルートディレクトリに設定してしまうとソースファイルが見つからないと言ってくる。そこでソースファイルを格納しているディレクトリを設定しておく。

    ignoreの設定をしておかないと、以下のような例外が途中で発生する。どうしてかは不明である。

    例外が発生しました
    
    Aura\Intl\Exception: Package 'default' with locale 'ja-JP' is not registered.

    .\src\mycakephp\webroot\index.php とかに適当にブレークポイントを設定して、Listen for XDebug”の構成でデバッグを行う。ブレークポイントを設定したところで止まるかとチェックする。後はステップオーバーでプログラムが進むか、ステップインで別のソースを参照できるか、または変数の中身を参照できるかをチェックして完了。

    以上でLaradock+CakePHP3+XdebugでVS Codeを使って快適にデバッグができるようになった。以上、再度開発環境を構築する際に忘れないようにメモを残しておく。

    追記

    同じ設定をMacでやってみたら、niginxコンテナが起動できなかった。原因不明・・

    .\laradock\nginx\sites\default.conf にゴミが入っていたのが原因だった。dockerのログを見たら原因がわかった。

    無事にMacでCakePHP3のトップページを参照できた。ただしデバッグできない。

    Macでもデバッグができるようなった。ただし、xdebug.ini に

    xdebug.remote_host=docker.for.mac.localhost

    を設定すればOKのようだ。情報はこちらのサイトから。

    PHP on Laradock w/ Visual Studio Code(VS Code)でデバッグ環境 (特にon Mac)

    Qiita

    ただし、MacでDockerはとても遅い。ブラウザが表示し終わるのに時間がかかる。こちらは問題になっているようで、将来改善されるのかな?

    追記2

    VS CodeのターミナルからDocker Composeすると、IO Errorが出る。普通にPower Shellで実行するとうまく行く。これは、issuesに上がっているから周知の問題なのかな?

    追記3

    MySQLのコンテナが起動できなかったので、解決策はこちらから

    LaradockでMySQLがどうしても立ち上がらない人あつまれー!

    Qiita

    追記4(2018年9月14日)

    xdebug.remote_hostの設定を変更しておく。