Lubuntu 16.04 LTS へアップグレード後の HTTP 404 エラー対処法!

事象

ウェブサーバには 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
スポンサーリンク