GCP で 格安の WordPress サイトを立ち上げる その2

前記事で GCP で WordPress の VM インスタンスをデプロイしたところまで書いたが、その後、必要な設定に関して記しておく。

ImageMagick  を有効にする

Bitnami の WordPress インスタンスでは ImageMagick  の PHP 機能拡張は初期設定で向こうになっているため、WordPress の Site Health (Dashboard -> Tools -> Site Health) でワーニングが表示される。

作業としては、php の設定ファイルに変更を加えてサーバーをリスタートする。

PHP の設定の変更

SSH クライアントから php.ini を編集する。GCP メニュ -> VM Instances -> SSH -> Open in browser window.

コンソールから、次のコマンド

php.ini を編集。ここでは nano テキストエディタを起動している。sudo をつけないとパーミションが原因で編集後のファイルを保存できないので注意。

PageDown キーを連打し、ずっと下の方にある[openssl]のセクションあたり。extension=imagick.so のラインのコメントを取り除いてあげる。そして保存して終了。

サービスを再起動

そして、Apache と php-fpm のサービスを再起動。

これで、WordPress の Site Health を開くと、先程のワーニングは消えている。

参考: https://docs.bitnami.com/azure-templates/apps/wordpress/configuration/install-modules-php/#imagick

WordPress のEメール機能を有効にする

Bitnami にはメールサーバー及びクライアントはインストールされておらず、PHP もデフォルトではメールを送信できない。そのため WordPress もメールの機能は無効になっている。これは Bitnami 側の配慮で、クラウドサービス側が一日あたりのメールの送受信数を定めており、それ以上は課金するシステムのため、安全のために無効にしているとのこと。一方で、メール機能はコメントが投稿されたりした時に通知してくれるので、ないと困る。後にコンタクトフォームを導入する時にも必要になってくる。

Bitnami が勧めるのは WP Mail SMTP というプラグインを使うというもの。しかし、これはPro バージョンへの誘導がちょっとあざといので敬遠したい。

sendmail のインストール

結局これは失敗に終わったので、マルチサイトのネットワーク全体用のメールの設定方法だけ確認したい場合はここは飛ばして、次の WP Mail SMTP プラグインの使用のセクションへ

ということで、sendmail をインストールし、それを PHP で使用するようにする。Windows では XAMPP などにバンドルされている sendmail は sendmail.ini という設定ファイルがあり、ここで SMTP サーバーや認証情報を一括設定できるのだが、Linux の場合そのような設定ファイルがない模様。php.ini のメールのセクションで指定可能なのかどうかが鍵。

まず、sendmail がインストールされているか確認。例のごとく SSH で VM インスタンスにログインし、次のコマンドを打つ。

インストールされていなければ、 sudo: /usr/sbin/sendmail: command not found と表示される。

インストールされていない場合、次のコマンドでインストール。

次に php.ini を編集。

[mail function] のセクションで次のラインのコメントを取り払う。

SMTP サーバーの指定は Windows 32bit のみ対応とのこと。なので、変更を保存して nano を閉じる。(参考 https://docs.bitnami.com/oci/apps/wordpress/troubleshooting/send-mail/)

sendmail の SMTP Relay

次に sendmail の SMTP Relay の設定をする。ここで sendmail が送信する SMTP サーバーを介するメールの一括設定を行う。

失敗

結果から言うと、失敗に終わった。以下のサイトを参考に勧めたが、sendmail を使って outbound の STMP(TSL) 経由のメール送信はできなかった。結局 PHP の mail 関数も使用できず、Bitnami の勧めるプラグインを利用することになりそう。

  • https://wiki.amahi.org/index.php/Enable_Outgoing_Emails
  • https://www.bonusbits.com/wiki/HowTo:Configure_SendMail_to_Use_SMTP_Relay
  • https://access.redhat.com/solutions/60803

簡単に何をしたかをまとめると、

  1. 認証ファイルの作成
  2. sendmail コンフィギュレーションにそれを読むようにというのとSMTPサーバーの指定
  3. コンフィギュレーションの再生成
  4. sendmail サービスのリスタート
  5. テスト送信

で、最後は次のようなメッセージで、メールが届かないという状況に。

認証ファイルの作成

ディレクトリ /etc/mail/auth/ を作成し、パーミション 777 を付与。

のラインを記述し、/etc/mail/auth/authinfo としてファイルを新規保存し、パーミションを 777 に変更。次に /etc/mail/authcd で移動し sudo makemap hash authinfo > authinfo で authinfo.db ファイルを生成。

sendmail 設定ファイルの編集

で、次のラインを最後の方に追加。

設定ファイルのリビルド

sendmail のリスタート

テスト送信

エンターを押して、ラインが改行されるので次を打ち込んで Control + D で送信。

/var/log/mail.log には次のような記録。

var/mail/{ログインユーザー名} に記録された内容は次の通り。

結局、原因がわからない。まあ、解決方法が見つかったら記事は更新予定。

WP Mail SMTP プラグインの使用

不本意ながら、WP Mail SMTP というプラグインに頼る。プラグインの一覧から有効にし、プラグインの設定画面で SMTP の サーバーや認証情報を入力すればメールは機能するようになる。

ネットワーク下の個別ブログにおいての設定は特に難しくない。

Network Admin Email の変更

しかし、マルチサイト全体のネットワークのメール通知の設定がなく、案の定、デフォルトの管理者Eメールアドレス user@example.com を変更しようと新しくメールアドレスを指定するも、認証通知が保留になったままでメールは来ない。

マルチサイトの場合メール設定

どうやら、マルチサイトの場合、wp-config.php に設定を書き込む必要がある模様。SSH で VM インスタンスにログインし、次のコマンドで wp-config.php を編集し、

以下の設定を追加。

これで、確認メールが届き、Network Admin Email も変更できた。

参考: https://bobcares.com/blog/wp-mail-smtp-multisite/

PHP mbstring 機能拡張の確認

PHP の mbstring 機能拡張が有効になっているか確認して置きたい。これは日本語などの文字列を処理するのに必要で、有効になっていないと、多くのプラグインが動かなかったり、抜粋表記が上手く行かなかったりする。

SSH で VM インスタンスにログインし、次のコマンドを入力し mbstring がリストされているか確認。

参考: https://docs.bitnami.com/aws/apps/processmakerenterprise/administration/phpinfo/

Bitnami のバナーを消す

表示されたページの底に Bitnami のバナーリンクが自動挿入されるので、これを消したい。

SSH で VM インスタンスにログインし、次のコマンドを実行。

これでリンクは表示されなくなる。

参考: https://docs.bitnami.com/google/how-to/bitnami-remove-banner/

雑感

調べながら記録していく作業はなかなか大変。トライアンドエラーで時間と精神を消耗してしまう。sendmail の設定が上手く行かず、PHP のネイティブ mail 関数が使えるようにならなかったのは残念。ただ、設定方法はやり方さえわかってしまえば、ものの10分もあれば終わる内容なので、ここに記録することには意味がある。

本記事は GCP で WordPress を走らせる際に必要な VM インスタンス内での設定変更等を紹介した。もし該当する設定がでてきたら追記予定。次の記事では DNS や SSL 化を扱う予定。

Leave a Reply

Your email address will not be published. Required fields are marked *