仕事の手が空いてきたので、ずっと先送りにしていた作業をすることに。
自宅鯖にApache、PHP、MySQL等をインストールしてメインクライアントのwebサーバと同じ環境を構築する。
メインクライアントは今年に入ってから鯖の移転があり、その際にLAMPとWordpressのすべてを新しいバージョンにアップデート。
そのために、昨年の秋頃から検証用サーバ、テストサーバ、本番サーバと、幾度となく今回と同じような鯖を構築していたので、必要なことは手元にメモを残してあった。
ただ、これらはクライアントと共有して確認するためのドメインが付いた鯖。
今回構築するのは自分だけが検証・確認するためのドメインのない鯖。
ちょっとの違いはあれど、まぁ大丈夫でしょう。
現状の自宅鯖の環境は以下の通り。
- CentOS 7.8.2003
- vsftpd 3.0.2
- OpenSSL 1.0.2k-fipsにて自己署名証明書設定済み
そしてメインクライアントの環境は
- CentOS 7.8.2003
- Apache 2.4.46
- MySQL 8.0.21
- PHP 7.3.25
- WordPress 5.4.6
で、可能な限りこれに近づけることを目標に。
クライアントの鯖はwebサーバとdbサーバが分かれているけど、自宅鯖は1台の鯖で完結させる。
また、自宅鯖は完全にローカルからの接続のみで外部公開を一切行わない予定。
Apache→PHP→MySQL→Wordpressの順で進めた。
以下は設定の障壁となったことを書き留めておく。
【壁・その1】vsftpdへのユーザ追加
すでに設定済みのvsftpで使用しているユーザとは別にweb用のユーザを作った。
CentOS 7へApacheをインストールして最短でウェブサーバーを構築のページにある「www」ユーザは「nologin」で作成されているが、ftpからコンテンツデータをupすることが前提なので、通常のユーザ作成を行った。
そしてそのユーザをvsftpで許可設定。
そのユーザのchrootをDocumentRootとなるディレクトリに設定。
【壁・その2】PHPのmysqliのsocket
クライアントのサーバ構築ですでに体験していた壁。
PHP7にバージョンを上げると、WPの「データベース接続確立エラー」が出てしまいますのページの方法で解決できる。
なので、PHPをインストールした後、phpinfoの確認だけして、すぐにMySQLをインストールしてしまうのが吉。
その後にsocketの設定を入れればいい。
【壁・その3】mod_rewrite 有効化
これもクライアントのサーバ構築ですでに経験済みで、当時は3日くらいかけてようやく解決できた壁。
Wordpressが新規インストールできて、データベースの疎通も問題ないとわかったので、いよいよクライアントの既存サイトと同じ状態にしようとした。
新規インストールしたデータベースを一旦dropし、既存サイトのデータベースのdumpファイルから復元し、データ内のドメインを変更。
コンテンツもすべてftpでup。
ブラウザからアクセスすると、ちゃんとTOPページが表示される!
しかし、どこをクリックしてもリンク先はForbidden。
.htaceessで転送設定がたくさん入っているサイトなのにApacheのmod_rewriteが有効になっていないのが原因だった。
apache2.4でmod_rewrite を有効化するのページで解決。
【壁・その4】SSL対応
正直今回は迷った。
SSL対応をすべきか否か。
完全にローカルのみの接続だし、必要ないと言えばそうなんだけど…。
でも「メインクライアントの仕事においては基本的に妥協をしない」と自分ルールを決めているので、自己署名証明で対応してみることに。
vsftpdをインストールした時にSSLの対応をしたけど、その自己署名証明書は使えるかな?
結果は問題なく使えた。
opensslはインストール済みなので、mod_sslをインストールして、生成されたssl.conf内の鍵と証明書を指定する箇所をどちらもvsftpdで作った.pemファイル(同じ値)を指定。
そしてApacheの再起動。
これでOK。
以上、長々と書いてしまいましたが、自分的な備忘録が主たる目的です。