前記事 で 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.
コンソールから、次のコマンド
sudo nano /opt /bitnami /php /etc /php . ini
で php.ini
を編集。ここでは nano テキストエディタを起動している。sudo をつけないとパーミションが原因で編集後のファイルを保存できないので注意。
PageDown キーを連打し、ずっと下の方にある[openssl]のセクションあたり。extension=imagick.so
のラインのコメントを取り除いてあげる。そして保存して終了。
サービスを再起動
そして、Apache と php-fpm のサービスを再起動。
sudo /opt /bitnami /ctlscript . sh restart
これで、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 -q
インストールされていなければ、 sudo: /usr/sbin/sendmail: command not found
と表示される。
インストールされていない場合、次のコマンドでインストール。
$ sudo apt -get install sendmail
次に php.ini
を編集。
sudo nano /opt /bitnami /php /etc /php . ini
[mail function]
のセクションで次のラインのコメントを取り払う。
sendmail_path = "env -i /usr/sbin/sendmail -t -i"
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
簡単に何をしたかをまとめると、
認証ファイルの作成 sendmail コンフィギュレーションにそれを読むようにというのとSMTPサーバーの指定 コンフィギュレーションの再生成 sendmail サービスのリスタート テスト送信
で、最後は次のようなメッセージで、メールが届かないという状況に。
認証ファイルの作成
ディレクトリ /etc/mail/auth/
を作成し、パーミション 777
を付与。
AuthInfo : { サーバードメイン名} "U:root" Ï: { ユーザー名} " " P : { パスワード} " " M : PLAIN "
のラインを記述し、/etc/mail/auth/authinfo
としてファイルを新規保存し、パーミションを 777 に変更。次に /etc/mail/auth
に cd
で移動し sudo makemap hash authinfo > authinfo
で authinfo.db ファイルを生成。
sendmail 設定ファイルの編集
$ sudo nano /etc /mail /sendmail . mc
で、次のラインを最後の方に追加。
define ( ` SMART_HOST ',`{サーバードメイン名}' ) dnl
define ( ` RELAY_MAILER_ARGS ',`TCP $h 587' ) dnl
define ( ` ESMTP_MAILER_ARGS ',`TCP $h 587' ) dnl
define ( ` confAUTH_MECHANISMS ', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN' ) dnl
FEATURE ( ` authinfo ',`hash /etc/mail/auth/authinfo' ) dnl
TRUST_AUTH_MECH ( ` EXTERNAL DIGEST -MD5 CRAM -MD5 LOGIN PLAIN ')
設定ファイルのリビルド
sendmail のリスタート
$ sudo service sendmail restart
テスト送信
$ sudo sendmail -Am -v -t
エンターを押して、ラインが改行されるので次を打ち込んで Control + D で送信。
To : test @ { アドレス}
From : test @ { アドレス}
Subject : Test
Please ignore .
/var/log/mail.log
には次のような記録。
Nov 27 11 : 56 : 59 wordpress -multisite -1 -vm sendmail [ 7425 ] : xARBunsL007425 : from ={ コンソールユーザー名} , size =79 , class =0 , nrcpts =1 , msgid =< 201911271156.xARBunsL007425 @ wordpress -multisite -1 -vm . us -central1 -c . c . getting -started -01.in > , relay =root @ localhost
Nov 27 11 : 57 : 00 wordpress -multisite -1 -vm sendmail [ 7425 ] : STARTTLS =client , relay ={ サーバードメイン名} . , version =TLSv1 . 2 , verify =FAIL , cipher =DHE -RSA -AES256 -GCM -SHA384 , bits =256 /256
Nov 27 11 : 57 : 00 wordpress -multisite -1 -vm sendmail [ 7425 ] : xARBunsL007425 : SYSERR ( root ) : hash map "authinfo" : unsafe map file /etc /mail /auth /authinfo . db : World writable directory
Nov 27 11 : 57 : 00 wordpress -multisite -1 -vm sendmail [ 7425 ] : xARBunsL007425 : to ={ 送信先E メールアドレス} , ctladdr ={ コンソールユーザー名} ( 1002 /1005 ) , delay =00 : 00 : 11 , xdelay =00 : 00 : 01 , mailer =relay , pri =30079 , relay ={ サーバードメイン名} . [ { サーバーIP アドレス} ] , dsn =5.0.0 , stat =Service unavailable
Nov 27 11 : 57 : 00 wordpress -multisite -1 -vm sendmail [ 7425 ] : xARBunsL007425 : xARBunsM007425 : DSN : Service unavailable
Nov 27 11 : 57 : 00 wordpress -multisite -1 -vm sendmail [ 7425 ] : xARBunsM007425 : to ={ コンソールユーザー名} , delay =00 : 00 : 00 , xdelay =00 : 00 : 00 , mailer =local , pri =30000 , dsn =2.0.0 , stat =Sent
var/mail/{ログインユーザー名}
に記録された内容は次の通り。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
--xARBouit007156 . 1574855466 /wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in --
From MAILER -DAEMON Wed Nov 27 11 : 57 : 00 2019
Return -Path : < MAILER -DAEMON >
Received : from localhost ( localhost )
by wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in ( 8.15.2 /8.15.2 /Debian -8 ) id xARBunsM007425 ;
Wed , 27 Nov 2019 11 : 57 : 00 GMT
Date : Wed , 27 Nov 2019 11 : 57 : 00 GMT
From : Mail Delivery Subsystem < MAILER -DAEMON >
Message -Id : < 201911271157.xARBunsM007425 @ wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in >
To : { コンソールユーザー名}
MIME -Version : 1.0
Content -Type : multipart /report ; report -type =delivery -status ;
boundary ="xARBunsM007425.1574855820/wordpress-multisite-1-vm.us-central1-c.c.{プロジェクト名}.in"
Subject : Returned mail : see transcript for details
Auto -Submitted : auto -generated ( failure )
This is a MIME -encapsulated message
--xARBunsM007425 . 1574855820 /wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in
The original message was received at Wed , 27 Nov 2019 11 : 56 : 49 GMT
from root @ localhost
----- The following addresses had permanent fatal errors -----
{ テスト送信先E メールアドレス}
( reason : 530 5.7.0 Authentication required )
----- Transcript of session follows -----
451 4.0.0 hash map "authinfo" : unsafe map file /etc /mail /auth /authinfo . db : World writable directory
. . . while talking to { SMTP サーバーアドレス} . :
> > > MAIL From : < { コンソールユーザー名} @ wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in > SIZE =79 AUTH ={ コンソールユーザー名} @ wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in
< < < 530 5.7.0 Authentication required
554 5.0.0 Service unavailable
--xARBunsM007425 . 1574855820 /wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in
Content -Type : message /delivery -status
Reporting -MTA : dns ; wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in
Arrival -Date : Wed , 27 Nov 2019 11 : 56 : 49 GMT
Final -Recipient : RFC822 ; { テスト送信先E メールアドレス}
Action : failed
Status : 5.7.0
Diagnostic -Code : SMTP ; 530 5.7.0 Authentication required
Last -Attempt -Date : Wed , 27 Nov 2019 11 : 57 : 00 GMT
--xARBunsM007425 . 1574855820 /wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in
Content -Type : text /rfc822 -headers
Return -Path : < { コンソールユーザー名} >
Received : ( from root @ localhost )
by wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in ( 8.15.2 /8.15.2 /Debian -8 ) id xARBunsL007425 ;
Wed , 27 Nov 2019 11 : 56 : 49 GMT
Date : Wed , 27 Nov 2019 11 : 56 : 49 GMT
Message -Id : < 201911271156.xARBunsL007425 @ wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in >
To : { テスト送信先E メールアドレス}
From : { テスト送信元E メールアドレス}
Subject : Test
--xARBunsM007425 . 1574855820 /wordpress -multisite -1 -vm . us -central1 -c . c . { プロジェクト名} . in --
結局、原因がわからない。まあ、解決方法が見つかったら記事は更新予定。
WP Mail SMTP プラグインの使用
不本意ながら、WP Mail SMTP というプラグインに頼る。プラグインの一覧から有効にし、プラグインの設定画面で SMTP の サーバーや認証情報を入力すればメールは機能するようになる。
ネットワーク下の個別ブログにおいての設定は特に難しくない。
Network Admin Email の変更
しかし、マルチサイト全体のネットワークのメール通知の設定がなく、案の定、デフォルトの管理者Eメールアドレス user@example.com
を変更しようと新しくメールアドレスを指定するも、認証通知が保留になったままでメールは来ない。
マルチサイトの場合メール設定
どうやら、マルチサイトの場合、wp-config.php
に設定を書き込む必要がある模様。SSH で VM インスタンスにログインし、次のコマンドで wp-config.php
を編集し、
sudo nano /opt /bitnami /apps /wordpress /htdocs /wp -config . php
以下の設定を追加。
define ( 'WPMS_ON' , true ) ;
define ( 'WPMS_MAIL_FROM' , '{送信元Eメールアドレス}' ) ;
define ( 'WPMS_MAIL_FROM_NAME' , '{送信者名}' ) ;
define ( 'WPMS_MAILER' , 'smtp' ) ;
define ( 'WPMS_SET_RETURN_PATH' , false ) ;
define ( 'WPMS_SMTP_HOST' , '{SMTPサーバーアドレス}' ) ;
define ( 'WPMS_SMTP_PORT' , 587 ) ;
define ( 'WPMS_SSL' , 'tls' ) ;
define ( 'WPMS_SMTP_AUTH' , true ) ;
define ( 'WPMS_SMTP_USER' , '{SMTPユーザー名}' ) ;
define ( 'WPMS_SMTP_PASS' , '{SMTPパスワード}' ) ;
これで、確認メールが届き、Network Admin Email も変更できた。
参考: https://bobcares.com/blog/wp-mail-smtp-multisite/
PHP mbstring 機能拡張の確認
PHP の mbstring 機能拡張が有効になっているか確認して置きたい。これは日本語などの文字列を処理するのに必要で、有効になっていないと、多くのプラグインが動かなかったり、抜粋表記が上手く行かなかったりする。
SSH で VM インスタンスにログインし、次のコマンドを入力し mbstring がリストされているか確認。
$ /opt /bitnami /php /bin /php -m
参考: https://docs.bitnami.com/aws/apps/processmakerenterprise/administration/phpinfo/
Bitnami のバナーを消す
表示されたページの底に Bitnami のバナーリンクが自動挿入されるので、これを消したい。
SSH で VM インスタンスにログインし、次のコマンドを実行。
$ sudo /opt /bitnami /apps /wordpress /bnconfig --disable_banner 1
$ sudo /opt /bitnami /ctlscript . sh restart apache
これでリンクは表示されなくなる。
参考: https://docs.bitnami.com/google/how-to/bitnami-remove-banner/
雑感
調べながら記録していく作業はなかなか大変。トライアンドエラーで時間と精神を消耗してしまう。sendmail の設定が上手く行かず、PHP のネイティブ mail 関数が使えるようにならなかったのは残念。ただ、設定方法はやり方さえわかってしまえば、ものの10分もあれば終わる内容なので、ここに記録することには意味がある。
本記事は GCP で WordPress を走らせる際に必要な VM インスタンス内での設定変更等を紹介した。もし該当する設定がでてきたら追記予定。次の記事では DNS や SSL 化を扱う予定。