PHPのフレームワークのLaravelと、PHPのCMSのWordPress、なぜか連携方法についてはほとんど情報が無いという...
よく、『車輪の再発明』は宜しくないって言葉をプログラマーの世界では聞くけど、それならば何故に、Laravel ✕ WordPress みたいなコラボのノウハウが出回らないのか不思議でしょうがないですね。
完璧な連携は無理でも、Laravel側で、WordPressのデータを利用しようってことにトライしたいんだけど、その前にMySQLのアップグレードでハマってます...。
前回までで、PHP、Laravel は、インストール済みです。
というわけで、レッツ、トライ~。
MySQLでハマってる状態なので、お時間のある方のみご照覧ください。
Apache Httpdをインストール
ありがたいことに、2018年11月現在、Apacheの公式のサイトで配布されている最新版のApache Httpd と同じバージョンのものを、Chocolatey を使ってインストールできるみたい。
https://chocolatey.org/packages/apache-httpd にアクセスすると、
⇧ Apache Httpd 2.4.37 がインストールできるようです。
というわけで、コマンドプロンプトを管理者権限で起動しまして(タスクバーとかにあるコマンドプロンプトのアイコン上で右クリック、表示されたコマンドプロンプトの文字の上で右クリックで、「管理者として実行(A)」)、
では、Chocolateyで、Apache Httpd をインストール。
choco install apache-httpd --version 2.4.37 --params '"/installLocation:C:\HTTPD "'
「アクセスを許可する(A)」で。
インストールされました。
⇧ 上記サイト様を参考にさせていただき、起動確認。
で、できない...
⇧ っていうか、Apache Httpd のデフォルトのポートは80番って説明だったはずだが...何故に8080番に?
Windowsのサービスとしては起動してるみたい。
とりあえず、設定ファイルhttpd.confを編集して、ポートを80番にしてみますか。
っていうか、デフォルトの80番じゃないじゃん...
「文字コードセット(C):」をUTF-8で、「保存(S)」。
右下に、「UTF-8」って表示されてればOK。
っていうか、chocolateyでインストールすると、サービス名が、「apache」になってるらしい。普通は、「apache2.4」とかになるらしい...余計なことを...。
で、一回、止めてから、起動したらイケました。ブラウザで「http://localhost」にアクセスすると、『IT WORKS』って表示されればOKのようです。
Ctrl + C で、止めれるみたいですかね。
サービスも止まってます。「httpd」コマンドは、サービスとしてのApache起動ってことみたいですね。
WebサーバとしてのApacheが停止したので、ブラウザ上からのアクセスも切断されました。
また、あとで起動します。
MySQLのインストール
続いて、WordPressを使う場合は、データベースが必須なので、今回はMySQLをインストールで。
MySQL 8.0 が、正式にリリースされたそうなので、MySQL 8.0 をインストールで。自分は、以前にインストールしていたので、サービスとして起動している状態です。
⇧ この時の記事ですかね。このときは、まだ、正式じゃなかったんで、「MySQL 8.0のリリース候補版(RC/Release Candidate)となるMySQL 8.0.3 RC」をインストールしたのであった。
というわけで、今回は、アップデートしていきたいと思いますが、インストールする場合は、
⇧ 上記サイト様が参考になるかと。
では、アップグレードをば。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 2.3.7 Windows 上の MySQL をアップグレードする
⇧ マニュアルによると、既存のMySQLのサービスを停止して、新しいMySQLのzipを既存のMySQLとは別ディレクトリに展開するらしい、ほぼ、新規インストールみたいなもんですかね...。
MySQL :: MySQL Community Downloads にアクセスで。
「MySQL Community Server (GPL)」の「DOWNLOAD」のリンクをクリック。
ページ遷移したらば、下の方にスクロールして、今回は、「Windows(x86, 64-bit), ZIP Archive Debug Binaries & Suite」の「Download」で、と思ったら、リリース間(5.7から8.0のような)でのアップデートでない場合は、新規にインストールの場合と同じく、「MySQL Installer for Windows」でアップデートすべし、と記載されてました。
Performing an upgrade with MySQL Installer is the best approach when the current server installation was performed with it and the upgrade is within the current release series. MySQL Installer does not support upgrades between release series, such as from 5.7 to 8.0, and it does not provide an upgrade indicator to prompt you to upgrade. For instruction on upgrading between release series, see Upgrading MySQL Using the Windows ZIP Distribution.
MySQL :: MySQL 8.0 Reference Manual :: 2.3.8 Upgrading MySQL on Windows
⇧ 自分の場合、MySQL 8.0.3 RC から、MySQL 8.0.13 にアップデートしようとしているということになるので、MySQL Installer を使う感じでしょうね。
というわけで、「MySQL Installer for Windows」のバナーをクリック。
ページ遷移したらば、下の方にスクロールしまして、
「Windows(x86, 32-bit), MSI installer(mysql-installer-web-community-8.0.13.0.msi)」の「Download」をクリック。
⇧ 上記サイト様によりますと、インターネットを使える環境であれば、『mysql-installer-web-community』のほうで良いようです。
ページ遷移したらば、下の方にスクロールしまして、
「No thanks, just start my download.」のリンクをクリック。
※ インストーラー(「MySQL Installer for Windows」)でインストールする場合、
既存のサービスを削除しないと、MySQL Installation Wizard は新しい MySQL サービスを適切にインストールできない場合があります。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 2.3.7 Windows 上の MySQL をアップグレードする
⇧ MySQL 5.6 までだと、既存のMySQL(インストールしてる場合)のサービスを停止、削除しておく必要があるようです。
www.atmarkit.co.jp⇧ 上記サイト様によると、コマンドでサービスの有無とか確認できるみたい。
sc query | find/i "mysql" | sort
⇧ 自分の場合は、MySQL5.7、MySQL 8.0 がサービスとして起動してるようです。
で、MySQL 8.0からは、インストーラーを使ってMySQLをアップデートする場合は、特にサービスの停止とかはしなくても良いみたい、公式の説明に書いてないし。
ただ、気になるのは、
Upgrades between milestone releases (or from a milestone release to a GA release) are not supported. Significant development changes take place in milestone releases and you may encounter compatibility issues or problems starting the server.
MySQL :: MySQL 8.0 Reference Manual :: 2.3.8 Upgrading MySQL on Windows
⇧ milestone release 間のアップグレードはサポートしてないという、milestone releaseが何を指しているか分からんですがね...。
まぁ、とりあえず、ダウンロードしたインストーラー()を実行します。
ダイアログが出て来るので、「OK」をクリック。
「Next >」で。
いや、「MySQL Server 5.7.18」をアップグレードしたいんじゃなくて、「MySQL Server 8.0.3.RC」のほうをアップグレードしたいんだが...
残念なことに、インストーラーのアップグレードでは、どのバージョンのものをアップグレードするか選べないらしい...そりゃ無いぜセニョリータってなもんですよ。
とりあえず、「Cancel」で。
致し方ないので、ZipのMySQLでアップグレードする方向にチェンジで。
まずは、https://dev.mysql.com/downloads/mysql/ で、
「Windows(x86, 64-bit), ZIP Archive Debug Binaries & Suite」の「Download」で。
「No thanks, just start my download.」のリンクをクリック。
既存のMySQLのサービスを停止しておく必要があるそうです。自分の場合ですと、今回は、MySQL 8.0.3 RCのサービスである、mysql80 を停止すれば良いかと。
⇧ はい、エラー。管理者権限としてコマンドプロンプトを起動してないとまずかったようです。
⇧ サービスが停止したようです。
ダウンロードした Zipファイルを、アップデートしたいMySQLのフォルダに展開します。(上書きを推奨らしい)
上書きにならんかった...
「mysql-8.0.13-winx64」の中身を、アップグレードしたいMySQLのフォルダに移動すれば良いかと。自分の場合ですと、「C:\Program Files\mysql-8.0.3-rc-winx64」 。
「続行(C)」で。
「すべての項目にこれを実行する(A)」にチェックを付ければ、「続行(C)」は一回で済んだっすね....
そしたらば、空になったフォルダは削除で。
既存のMySQLのフォルダを「名前の変更(M)」しときます。
「mysql-8.0.13」にしときました。
そしたらば、新規にサービスをインストールする必要がありますが、オプションとして「.cnf」ファイルを利用することができるようです。
自分の場合は、前に作成していた「my.cnf」というファイルがあったので、それを編集します。ない場合は作成で。拡張子が「.cnf」であれば名前は何でも良いかと。
前の情報を、
新しい情報に、と思ったら、上書き禁止で開かれとる...。メモ帳(UTF-8Nで保存できない)以外なら何でも良いと思うけど、Visual Studio Codeで編集することにしました。
⇧ 保存したら、失敗ってなったので、「管理者権限で再実行...」 。
サクラエディタで確認すると、保存できたらしい。
⇧ ちなみに、「enable-named-pipe」は、無くても問題ないかと、というか使わ無さそう...
MySQL 8.0.3 RC の時のサービスを削除しときます。
サービスをインストール。
"[MySQLをインストールしたディレクトリ]\bin\mysqld.exe" --install [MySQLのサービス名] --default-file="[設定ファイルのあるディレクトリ]\[設定ファイル名].cnf"
サービスが追加されました。
停止してるので、サービスを起動します。
⇧ だ、駄目やん...。というか、詳しい説明...なってないやん?どうしたん?Windows!
Windowsのイベントビューアーで、「管理イベント」見ると、
『Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key』って...
っていうか、公式のマニュアル通りやってるのに上手くいかないんですが...
Fixed in 8.0.13 and the following entry was added to the MySQL 8.0.13 changelog:
Microsoft Windows: Starting MySQL as a Windows service with the service-installation command that specified a service name other than MySQL following the --install option ignored the directives in the named service group of the my.ini or my.cnf options files and used default options instead. Only the default service names (mysqld, mysql_cluster, server, mysqld-8.0) could load different parameters from an options file.
MySQL Bugs: #90383: MySQL 8.0.4 RC don't read my.ini section with service name on Windows
⇧ インストールしたの、8.0.13 なんすけど...
ことごとく弾き返されるが...
ちなみに、「mysql-8.0.13-winx64.zip」のほうもダウンロードして上書きしてみたけど、変わらず。
というか、普通に
設定ファイルを修正する必要がありそうですね。というか、既存のDataフォルダとか使えんとか、知らんがな。
駄目でした。
結論として、公式のマニュアルが間違ってますな。上書き推奨とか真っ赤な大嘘でした。だって、Data用のディレクトリとか空っぽじゃないとErrorになるらしいし、そうすると既存のデータがある以上、空ってことはありえないしね。
マジでいい加減にしたまえという哀しい気持ちになって、時間を無駄にしてしまったではないか... Oracleさんは毎回やってくれますな。
最終的に、こんな感じに。datadir として空っぽのディレクトリを適当な場所に作成しておきます。tmpdir はコメントアウトしてます。
で、初期パスワードが、
『A temporary password is generated for root@localhost: q9ApdeFt.HOt』 ってな感じに表示されているので、
ログインしてみますか。ん?
んん?入れんやんけ~!
って、MySQL起動しとらんかった... 初期化はあくまでMySQLに必要なファイルとかを準備するだけっぽい感じでで、起動はしてくれんということですかね?起動で。
「アクセスを許可する(A)」で。
起動してる状態なので、もう1つコマンドプロンプトを起動で、
ログインできました。
パスワードを変更して、
もう一回ログインし直してみます。
⇧ 変更したパスワードでログインできました。
MySQLを停止。
もう1つのコマンドプロンプトで起動していたMySQLが停止しています。
残すは、Winodwsのサービスとして、MySQLのサービスを登録、起動できればOKと。管理者権限でコマンドプロンプトを起動し直して...はい、エラー。
my.cnfのdatadirで指定したディレクトリにできてるログファイルを確認してみたところ
... 2018-11-11T02:10:49.902068Z 0 [System] [MY-010116] [Server] C:\Program Files\mysql-8.0.13\bin\mysqld.exe (mysqld 8.0.13) starting as process 25716 2018-11-11T02:10:49.917908Z 1 [ERROR] [MY-012271] [InnoDB] The innodb_system data file 'ibdata1' must be writable 2018-11-11T02:10:49.918373Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable 2018-11-11T02:10:49.918819Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine 2018-11-11T02:10:49.919391Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2018-11-11T02:10:49.919786Z 0 [ERROR] [MY-010119] [Server] Aborting 2018-11-11T02:10:49.921113Z 0 [System] [MY-010910] [Server] C:\Program Files\mysql-8.0.13\bin\mysqld.exe: Shutdown complete (mysqld 8.0.13) MySQL Community Server - GPL.
「The innodb_system data file 'ibdata1' must be writable」って言われてもね...
15.6.3.1 The System Tablespace
The InnoDB
system tablespace is the storage area for the doublewrite buffer and the change buffer. The system tablespace also contains table and index data for user-created tables created in the system tablespace. In previous releases, the system tablespace contained the InnoDB
data dictionary. In MySQL 8.0, InnoDB
stores metadata in the MySQL data dictionary. See Chapter 14, MySQL Data Dictionary.
The system tablespace can have one or more data files. By default, one system tablespace data file, named ibdata1
, is created in the data directory. The size and number of system tablespace data files is controlled by the innodb_data_file_path
startup option. For related information, see System Tablespace Data File Configuration.
MySQL :: MySQL 8.0 Reference Manual :: 15.6.3.1 The System Tablespace
⇧ 公式の説明によると、MySQLの設定ファイル(拡張子「.ini」、または「.cnf」)のdaradirに指定したディレクトリに「ibdata1」っていう『自動拡張データファイル』ってのができるらしい、で、このファイルにアクセス(書き込み)できないのでDBの構成に必要な情報ファイルが作れずにDB起動に失敗ってことらしい、サービスでの。
⇧ 上記サイト様によりますと、datadir のディレクトリの所有権を変更してあげれば良いらしい。
⇧ 「ibdata1」 のあるディレクトリは、自分の場合ですと「C:\Users\Toshinobu\Desktop\mysqlData」なので、ディレクトリの「プロパティ」から、「セキュリティ」タブで、「詳細設定」。
「変更(C)」をクリック。
「詳細設定(A)...」をクリック。
「検索(N)」で、表示された結果から「NETWORK SERVICE」を選択し「OK」。
「OK」。
一応、「サブコンテナーとオブジェクトの所有権を置き換える」にチェックを入れ、「OK」で。(このへんよく分からんです...)
で、変わらず...。参考にさせていただいたサイトでも解決できてなかったっぽい(涙)。
サービスが動いてる方のMySQL 5.7のほうのdatadirの設定は、
ってなってたので、「アクセス許可エントリ」に「NETWORK SERVICE」追加してみた。所有者も、「Administrators」に。
駄目でした...
⇧ 上記サイト様によりますと、アップグレードすべし、と。
⇧ 既にアップデート済みってなってるような...
まぁ、エラー変わらず。駄目でしたけど。
2018-11-11T04:34:34.894498Z 0 [System] [MY-010910] [Server] C:\Program Files\mysql-8.0.13\bin\mysqld.exe: Shutdown complete (mysqld 8.0.13) MySQL Community Server - GPL. 2018-11-11T04:56:01.299252Z 0 [System] [MY-010116] [Server] C:\Program Files\mysql-8.0.13\bin\mysqld.exe (mysqld 8.0.13) starting as process 16220 2018-11-11T04:56:01.360031Z 1 [ERROR] [MY-012271] [InnoDB] The innodb_system data file 'ibdata1' must be writable 2018-11-11T04:56:01.360510Z 1 [ERROR] [MY-012278] [InnoDB] The innodb_system data file 'ibdata1' must be writable 2018-11-11T04:56:01.362070Z 1 [ERROR] [MY-010334] [Server] Failed to initialize DD Storage Engine 2018-11-11T04:56:01.363705Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2018-11-11T04:56:01.364661Z 0 [ERROR] [MY-010119] [Server] Aborting
時間の関係上、1週間後。
ログのエラーが変わったけど...
2018-11-14T11:07:05.003066Z 0 [System] [MY-010116] [Server] C:\Program Files\mysql-8.0.13\bin\mysqld.exe (mysqld 8.0.13) starting as process 3424 2018-11-14T11:07:06.168379Z 0 [System] [MY-010229] [Server] Starting crash recovery... 2018-11-14T11:07:06.178444Z 0 [System] [MY-010232] [Server] Crash recovery finished. 2018-11-14T11:07:07.378033Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2018-11-14T11:07:07.436282Z 0 [ERROR] [MY-000067] [Server] unknown variable 'default-file=C:\Program Files\mysql-8.0.13\my.cnf'. 2018-11-14T11:07:07.437125Z 0 [Warning] [MY-010952] [Server] The privilege system failed to initialize correctly. If you have upgraded your server, make sure you're executing mysql_upgrade to correct the issue. 2018-11-14T11:07:07.439576Z 0 [ERROR] [MY-010119] [Server] Aborting 2018-11-14T11:07:08.967621Z 0 [System] [MY-010910] [Server] C:\Program Files\mysql-8.0.13\bin\mysqld.exe: Shutdown complete (mysqld 8.0.13) MySQL Community Server - GPL.
...と思ったら、MySQLを起動してなかった。起動で。
起動したら同じく書き込みできないエラー。
で、起動するのは間違いらしいので、起動前に起こっていた「[Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.」を解決すれば良いらしい。
で、何かオプションで、「--skip-ssl」っての使わないと、MySQLのサービスは、CA(Certificate Authority)証明書を使って接続を試みるらしく、
This section describes options that specify whether to use encrypted connections, the names of certificate and key files, and other parameters related to encrypted-connection support. These options can be given on the command line or in an option file. For examples of suggested use and how to check whether a connection is encrypted, see Section 6.4.1, “Configuring MySQL to Use Encrypted Connections”.
MySQL :: MySQL 8.0 Reference Manual :: 6.4.2 Command Options for Encrypted Connections
MySQL のログに CA 関連と NO_ZERO_DATE 関連の Warning が出ていたので対応した : 犬ターネット
⇧ 上記サイト様によりますと、my.cnf または、 my.ini に、証明書設定を追加する必要があるらしい。
For some distribution types, such as RPM packages, mysql_ssl_rsa_setup invocation occurs during data directory initialization. In this case, the MySQL distribution need not have been compiled using OpenSSL as long as the openssl command is available.
MySQL :: Security in MySQL :: 6.3.1 Creating SSL and RSA Certificates and Keys using MySQL
⇧ それらの情報は、MySQLを初期化(initialize)した時に、datadir にできるらしい。
というわけで、設定。
[client] ssl-ca=[datadirのパス]\\ca.pem ssl-cert=[datadirのパス]\\client-cert.pem ssl-key=[datadirのパス]\\client-key.pem # options for mysql8.0.13 service [mysqld] ssl-ca=[datadirのパス]\\ca-key.pem ssl-cert=[datadirのパス]\\server-cert.pem ssl-key=[datadirのパス]\\server-key.pem basedir = "C:\\Program Files\\mysql-8.0.13" datadir = "C:\\Users\\Toshinobu\\Desktop\\mysqlData" #tmpdir = "C:\\Program Files\\mysql-8.0.13\\temp" # 文字コードを UTF-8 に指定 character_set_server = UTF8MB4 port = 3309 enable-named-pipe socket = mypipe80
で、再度試すもエラー。
[Warning] [MY-010069] [Server] Failed to set up SSL because of the following SSL library error: SSL_CTX_set_default_verify_paths failed
Configure the SSL certification files to a different directory other than the data directory
Failed To Enable SSL with Error SSL_CTX_set_default_verify_paths on Windows
⇧ datadir に、証明書設定に関するファイルを置いてるとマズイらしい...ってMySQLが勝手にdatadirに作ってくれちゃうわけなんで...もはや、これ、バグじゃないの?
お金払ったら詳しい対処方法を教えてくれるらしい...んで、Bug reportしたらば、
[23 Nov 10:27] Miguel Solorzano
We're sorry, but the bug system is not the appropriate forum for asking help on using MySQL products. Your problem is not the result of a bug. Support on using our products is available both free in our forums at http://forums.mysql.com/ and for a reasonable fee direct from our skilled support engineers at http://www.mysql.com/support/ Thank you for your interest in MySQL. https://support.oracle.com/knowledge/Oracle%20Database%20Products/2384231_1.html
⇧ 結局、お金払ったら、対処方法公開って流れらしいし、その情報以外の対処方法が知りたかったんですがね...。そして、あくまでbugではないと。
勝手にdatadirに作成されるものを別ディレクトリに移さないと駄目ってプログラム的に破綻してる気が...。
Oracle Database の時もそうだけど、Oracleってかなり適当?こんな適当でも、利用されるデータベースのシェアは、
⇧ 相変わらず、No.1、No.2 となってるけど、徐々に利用率が減少傾向にあるらしい。ユーザーの気持ちが離れるのも分かる気がしますな。
とは言え、解決していかねばならんわけですが、とりあえず、datadir から別のディレクトリに移すという情報しかない...
移しますか...
で、my.cnf のパスも変更で。
で、駄目でしたけど...
というか、MySQLのエラーログにも、Windowsのイベントビューアの『管理イベント』にも何も表示されなくなったんだが...状態が悪化してますが ...と思ったら、エラーログが、新しく『"C:¥Users¥Toshinobu¥Desktop¥mysqlSSL¥Toshinobu-PC.err"』に作成されていたという...MySQLよく分からんです...
2018-11-24T02:36:14.923998Z 0 [System] [MY-010910] [Server] C:\Program Files\mysql-8.0.13\bin\mysqld.exe: Shutdown complete (mysqld 8.0.13) MySQL Community Server - GPL. 2018-11-24T02:40:27.900005Z 0 [System] [MY-010116] [Server] C:\Program Files\mysql-8.0.13\bin\mysqld.exe (mysqld 8.0.13) starting as process 252 2018-11-24T02:40:27.913195Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory. 2018-11-24T02:40:27.913755Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed. 2018-11-24T02:40:27.914148Z 0 [ERROR] [MY-010119] [Server] Aborting 2018-11-24T02:40:27.915334Z 0 [System] [MY-010910] [Server] C:\Program Files\mysql-8.0.13\bin\mysqld.exe: Shutdown complete (mysqld 8.0.13) MySQL Community Server - GPL.
datadir が見つからんと...すみません、my.cnf のdatadirも誤って変更してしまってました...元に戻します。
で、どっちにしろ駄目でした...
長々と付き合っていただいた皆々様、申し訳ございません、コマンドのタイピングミスでした...
オプションのタイポでした...
誤:--default-file
"C:\Program Files\mysql-8.0.13\bin\mysqld.exe" --install mysqld8.0.13 --default-file="C:\Program Files\mysql-8.0.13\my.cnf"
正:--defaults-file
"C:\Program Files\mysql-8.0.13\bin\mysqld.exe" --install mysqld8.0.13 --defaults-file="C:\Program Files\mysql-8.0.13\my.cnf"
サービス自体は作成されてたんだけども、指定したmy.cnfでサービスが作成されていなかったためエラーになっていたという...
3週間ぐらいハマってしまった... まぁ、こんな阿呆なミスをやらかすのはウッカリ八兵衛とわたしぐらいなものか...いや、ウッカリ八兵衛でもやらんかも...
なので、datadir に、証明書設定に関するファイルを配置したままで大丈夫です。(後日、datadirに配置したまま、サービスを作り直して、普通にサービス起動できました。Oracleの嘘つき~!)
The server performs certificate and key file autodiscovery. If --ssl
is enabled (possibly along with --ssl-cipher
) and other --ssl-
options are not given to configure encrypted connections explicitly, the server attempts to enable support for encrypted connections automatically at startup:xxx
-
If the server discovers valid certificate and key files named
ca.pem
,server-cert.pem
, andserver-key.pem
in the data directory, it enables support for encrypted connections by clients. (The files need not have been generated automatically; what matters is that they have the indicated names and are valid.) -
If the server does not find valid certificate and key files in the data directory, it continues executing but without support for encrypted connections.
MySQL :: MySQL 8.0 Reference Manual :: 6.4.1 Configuring MySQL to Use Encrypted Connections
って書いてあるから、datadir から移動したら駄目でしょ~に。適当すぎますぜ、Oracleさんよ~。
気を取り直して、MySQLのサービスがインストールできたということで、次の工程へ。
WordPressをダウンロード
で、データベースの準備ができたので、WordPressをインストールしていこうというわけなんだけども、Laravel との連携を意識する場合は、Laravelのプロジェクトと同じ階層にインストールするのが良いらしい。
⇧ 上記サイト様を参考にさせていただきました。
自分は、いま、Laravelをこんな感じでインストールしてました。
なので、WordPressを、『C:¥Users¥Toshinobu¥Desktop¥php_project』に配置していこうと思います。
WordPressは、WP-CLIっていうコマンドラインツールを使ってインストールするのが良いらしい?、一応、
⇧ 公式サイトである、wordpress.org に説明が。
Windowsの場合は、
のどちらかで導入するのが推奨されてるらしい。どちらの場合も「wp.bat」が配置されているディレクトリまでのパスを環境変数に追加すれば、「wp」というコマンドで実行できるようになるらしい。
とりあえず、Composerで、WP-CLIをインストールで。自分の場合、PHP、Composerのパスを環境変数を通してないので、実行したコマンドが公式のもと異なってますが、公式のコマンドを載っけときます。
composer create-project wp-cli/wp-cli --prefer-source
で、エラーになると...
何だかな~...どこもかしこも公式の説明が足りんのでは?
⇧ 上記サイト様によりますと、Windows特有の問題らしい...
wordpress.orgの公式の説明通りでできないってことになりますかね、もういい加減にしてくれって感じです。
This fix also helps to improve the first impression of Mautic in 2 situations.
- Windows Developers installing Mautic for the first time
- Running
composer install / update
using the Release zip. (folders missing)
In both these situations, at the end of the process there is an error because the current line only works in a nix environment!
cp ./build/hooks/pre-commit ./.git/hooks/pre-commit
何でも、「nix環境」でしか動作しないスクリプトの存在が、Windows環境でエラーになる原因なんだとか...公式の説明にそんな記載が一切ないんですが...
で、1の解決方法は説明してくれてるんですが、2のほう、何の説明もない...そもそも「Mautic」とか知らんし、使う予定無いから。
申し訳ない、プロジェクト内にインストールする場合は、プロジェクト内のcomopser.jsonに、設定とスクリプトを記述してって感じで、Windows環境ではできないらしい。(擬似的なUnix環境を構築すればいけますが、つまり、bashとかのシェルが使えれば。)
なので、一旦、プロジェクト内に作成されてしまった「C:¥Users¥Toshinobu¥Desktop¥php_project¥wp-cli」は削除で。プロジェクト外でWP-CLIをインストールしていく感じになるようです。今回は、デスクトップにインストールで。
⇧ というか、どっちにしろエラーやんけ~!WindowsほんとうにUnix系と相性悪すぎでしょ!
っていうか、WindowsでComposerってまったく使えないんですが...パッケージ管理まったく機能してないけど...PHPがディスられる要素が増えてしまったではないですか...
というわけで、一旦、作成されたディレクトリの中身を全削除で。
で、curl コマンドで、「wp-cli.phar」を「C:¥Users¥Toshinobu¥Desktop¥wp-cli」にインストールします。
cd [wp-cli.pharを配置したいディレクトリ]
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
で、バッチファイルを作成。
バッチファイルを適当なテキストエディターで編集。
@ECHO OFF "[使用したいphp.exeが配置されてるディレクトリまでのパス]\php.exe" ^ "[使用したいwp-cli.pharが配置されてるディレクトリまでのパス]\wp-cli.phar" %*
一時的にパスを環境変数に追加します。(永続的に追加の場合は、setx で。)
set Path="%Path%;[wp-cli.pharのは位置されたディレクトリまでのパス]"
⇧ はい、パスが通りました。
というわけで、WordPressをインストールしてみます。
wp core download --locale=ja --path="[インストールしたい場所]\[適当なディレクトリ名]"
これで、配置ができましたが、インストールはまだされていません。指定したディレクトリが作成され、
その中に、WordPressで必要なファイルが一式配置されています。
WordPressをインストールするには、データベースが必要です。 (WordPressがインストールされる時に、テーブルが作成されるため、空のデータベースが必要)
ということで、MySQLにログインし、WordPress用のデータベースと、それを操作するユーザーを作成します。
⇧ MySQLに、ログイン出来なくなってるぜよ...
⇧ 上記サイト様によりますと、MySQL 8.0 からSSL導入した場合、「caching_sha2_password」というプラグインが適用されているらしく、一度は、SSL接続を成功させないとマズイらしい。
従来の「mysql_native_password」というプラグインに切り替えるという方法もあるらしいけど、MySQL的にはあんまり宜しくないらしい、ですが、WP-CLIというかPHPが、「caching_sha2_password」に対応していないらしい....
MySQL 8
When running a PHP version before 7.1.16, or PHP 7.2 before 7.2.4, set MySQL 8 Server's default password plugin to mysql_native_password or else you will see errors similar to The server requested authentication method unknown to the client [caching_sha2_password] even when caching_sha2_password is not used.
This is because MySQL 8 defaults to caching_sha2_password, a plugin that is not recognized by the older PHP (mysqlnd) releases. Instead, change it by setting default_authentication_plugin=mysql_native_password in my.cnf. The caching_sha2_password plugin will be supported in a future PHP release. In the meantime, the mysql_xdevapi extension does support it.
⇧ mysql_xdevapi という拡張機能を導入すれば、「caching_sha2_password」を使うことはできるらしい。
導入してみますか。
PHPの拡張機能については、PECL(PHP Extension Community Library)というところが管理してるらしい。
PECL(ピクル、PHP Extension Community Library)は、PHPで利用できる拡張ライブラリ(パッケージ)を提供しているサービス。
PECLで提供されるライブラリはCで記述されているため、PHPで記述されたPEARのライブラリよりも高速に動作する。PECLにより提供されるライブラリはPHPの拡張モジュールとしてインストールされる。一方で、PEARライブラリはPHPのバージョンアップに伴う再インストールが原則として不要なのに対し、PECL拡張モジュールはPHP内部のAPIに依存する部分があるため、PHPのバージョンアップに伴いAPIが変更された場合は再コンパイルを必要とする。
PECLのインストール用には、PEAR同様に「pecl」コマンドが提供されている。インストール方法もほぼPEARと同じだが、インストール後に設定ファイル(php.ini)の「extension」でインストールしたモジュールを指定する必要がある点が異なる。なおWindows版では、手動でphp.iniを修正して、あらかじめコンパイル済みのPECL DLLを組み込むのが一般的な方法である。
ということで、
https://pecl.php.net/package/mysql_xdevapi にアクセス。
⇧ 「Downloads」の「DLL」をクリック。今回は、8.0.13 で。
PHP 7.2 を使っているので、「7.2 Thread Safe (TS) x86」ってのを。
ダウンロードしたzipの中で、拡張子が「.dll」のファイルを、利用したいphp.exeの配置されたディレクトリの中にある「ext」とうディレクトリに配置するらしい。
配置されました。
そしたらば、 「php.ini」を編集して、拡張機能を有効化します。
記述がないので、新たに追加の方向で。
で、MySQLにログイン...出来んやないか~い!
VERIFY_CA か、VERIFY_IDENTITY を使えって...
使いましたけど、駄目ですやん...
情報が少なすぎるので、
debug 用のファイルを利用できるようにしてみます。
⇧ 上記サイト様によりますと、MySQLの設定ファイルに追記するらしい。
⇧ 「C:\Program Files\mysql-8.0.13\log」ってディレクトリを作成しときます。
で、MySQLのサービスを再起動し、
再び、接続を試みると、
クエリの内容に関するログファイルができているという。
ログの中身を見たけど、有益な情報が無いと...
エラーログで表示されたポートを指定してみるも、エラー。
なんか、「caching_sha2_password」は諦めたほうが良さげですかね...
ちょっと、しばし、調査します...
今回はこのへんで。