Contents
事象
ウェブサーバには nginx を利用しています。Lubuntu14.04 LTS から Lubuntu 16.04 にアップグレード後、Wordpress が動作しなくなった。
アップグレード自体は do-release-upgrade で問題なく完了するのですが、リブート後、HTTP 404 エラーが多発する状態となった。
概要
親切にも Google の Google Search Console Team がメールで教えてくれたので気がついた。
Web サーバは分散させており、そのうち 1 台だけテストで Lubuntu 16.04 にアップグレードしていたので、同サーバあてのリクエストだけが 404 error になっていたのです。
もしかすると、環境によっては気づきにくいかもしれません。
アクセスログの状況は以下のような感じで、たしかに Googlebot からのリクエストには 404 を返しています。
なお、404のままだとどうなるかと言いますと、「インデックスから削除します」と明記されておりました。恐ろしいですねー。
https://blog.neoflow.jp/ で 404(見つかりません)エラーを返す URL の数が著しく増加したことが Googlebot で検出されました。これはサービスの停止や設定エラーを示している可能性があり、その場合にはユーザーの利便性が低下していることになります。結果として、こうした URL は Google 検索結果には表示されなくなります。該当する URL が完全に存在していない場合は、特に何かしていただく必要はありません。
# grep Google /var/log/nginx/access.log 173.245.50.118 - - [18/Aug/2016:21:35:30 +0900] "GET /windows/387/ HTTP/1.1" 404 47 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 108.162.221.114 - - [18/Aug/2016:21:50:16 +0900] "GET /wom/332/ HTTP/1.1" 404 152 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 108.162.221.168 - - [18/Aug/2016:21:57:19 +0900] "GET /2011/11/25/webscraper-%E3%81%8C%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97%E3%81%97%E3%81%A6-0-36-%E3%81%B8%EF%BC%81/ HTTP/1.1" 404 152 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" 173.245.50.132 - - [18/Aug/2016:22:00:58 +0900] "GET /?p=444GMO HTTP/1.1" 500 121 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
原因
PHP の実行環境が php7 ベースになり、FastCGI 利用環境では、php5-fpm から php7.0-fpm に変更となったため。
Lubuntu 14.04.5 LTS (アップグレード前)
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=14.04 DISTRIB_CODENAME=trusty DISTRIB_DESCRIPTION="Ubuntu 14.04.5 LTS" $ php -v PHP 5.5.9-1ubuntu4.19 (cli) (built: Jul 28 2016 19:31:33) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
Lubuntu 16.04.1 LTS (アップグレード後)
$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS" $ php -v PHP 7.0.8-0ubuntu0.16.04.2 (cli) ( NTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies with Zend OPcache v7.0.8-0ubuntu0.16.04.2, Copyright (c) 1999-2016, by Zend Technologies
対処
tukiyo3 さんによる Qiita の記事を参考に nginx + php7.0-fpm 用の設定更新する。
トラブルシューティング
PHP が実行されるようになったが、すると今度は、「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」との表示。
このメッセージへの対処としては、apt-get install php7.0-mysql してやる必要がある。
Ubuntu/Lubuntu 14.04 から 16.04 にアップグレードしたあとに念のため php 関連のパッケージを確認しておいたほうが良さそうです。
php5-mysql が入ってたのだから php7.0-mysql も自動入れといて欲しいところではありますが。
# dpkg -l | grep php rc libssh2-php 0.12-1build1 amd64 PHP Bindings for libssh2 ii php-common 1:35ubuntu6 all Common files for PHP packages ii php-fpm 1:7.0+35ubuntu6 all server-side, HTML-embedded scripting language (FPM-CGI binary) (default) rc php5-common 5.5.9+dfsg-1ubuntu4.19 amd64 Common files for packages built from the php5 source rc php5-fpm 5.5.9+dfsg-1ubuntu4.19 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary) rc php5-gd 5.5.9+dfsg-1ubuntu4.19 amd64 GD module for php5 rc php5-json 1.3.2-2build1 amd64 JSON module for php5 rc php5-mysql 5.5.9+dfsg-1ubuntu4.19 amd64 MySQL module for php5 ii php7.0-cli 7.0.8-0ubuntu0.16.04.2 amd64 command-line interpreter for the PHP scripting language ii php7.0-common 7.0.8-0ubuntu0.16.04.2 amd64 documentation, examples and common module for PHP ii php7.0-fpm 7.0.8-0ubuntu0.16.04.2 amd64 server-side, HTML-embedded scripting language (FPM-CGI binary) ii php7.0-json 7.0.8-0ubuntu0.16.04.2 amd64 JSON module for PHP ii php7.0-opcache 7.0.8-0ubuntu0.16.04.2 amd64 Zend OpCache module for PHP ii php7.0-readline 7.0.8-0ubuntu0.16.04.2 amd64 readline module for PHP