Web、サーバ、ソフトウェア、バグ・脆弱性 などの情報を何人かで集まって書いていく IT/Web情報系ブログ

【SEO・WP高速化】ビビビッをhttps&php7にした

投稿日:   最終更新日:2017/05/10  投稿者:ktm@s

常時SSLがSEO的に優遇とかいう話が出てから二年近く立つと思う。

SEOに興味を無くしてしまったので効果のほどは検証していないが、Googleがとにもかくにもウェブのhttps化を推進しているので、このブログも早急にhttpsにする必要があると考えていた。一年ほど。

https化自体はLet’s Encryptのおかげで無料でSSL証明書も手に入り非常に簡単になった。
それだけでは記事の内容として薄いので、PHP5.4→PHP7.1への移行でWordPressを高速化する所も合わせて書く。

カゴヤVPSのDebian7環境での設定になるが、Deb系のApache2であればカゴヤVPSでなくとも参考になるはず。設定ファイルの場所の違いがわかるならDeb系でなくても多分問題ない。

PHP7

PHP5.xからPHP7にするとWordPressであれば体感でわかるくらいの処理速度の向上が見られる。
PHP7 速い のGoogle検索結果

デメリットとして、PHP7で廃止された関数を使用しているプラグインがあった場合に問題が発生する可能性がある。
その場合、エラーログを見て該当プラグインを外し、代替プラグインを見つけるか、関数を直接修正すれば大体直る。

環境

  • カゴヤVPS
  • Debian7 64bit
  • Apache2系
  • sudoが使えるユーザー(rootでもいいけどコマンドはsudoを使って書く)

インストール

実はDebian+Apache2でPHP7をインストールする記事はすでに書いているが、カゴヤVPSではディレクトリ名が違う部分もあるし改めて書く。

1.gitのインストール

sudo apt-get install git

2.適当なディレクトリでクローンを作成

git clone https://github.com/kasparsd/php-7-debian.git

3.build.shを編集

そのままbuild.shを実行するとApache2用のモジュールが作られないため編集する。

ここではapxs2が必要になるので、/usr/binあたりに存在するか確認する。
存在しない場合、以下のパッケージをインストールする。

#Apache2 Preforkの場合
sudo apt-get install apache2-prefork-dev

#Apache2 Workerの場合
sudo apt-get install apache2-threaded-dev

もし自分の使っているApache2がどちらかわからない場合、バージョンを確認するとわかる

sudo apache2 -V

apxs2が手に入ったらbuild.shを編集する。
CONFIGURE_STRING=””内に「–with-apxs2=/usr/bin/apxs2」を追記してやるとよい。

cd php-7-debian
sudo vi build.sh

#例
          --with-curl \
          --enable-fpm \
          --with-apxs2=/usr/bin/apxs2 \
          --with-fpm-user=www-data \
          --with-fpm-group=www-data"

4.インストール

./build.sh
sudo ./install.sh

正常に完了すると、/usr/lib/apache2/modules/libphp7.soが生成されている。
また、/etc/apache2/mods-available/php7.confが生成されている。

Apache2側の設定

php7をApache2で扱えるようにするための設定をしていく。

apache2.confの設定

最下行にでも以下を追加する。

sudo vi /etc/apache2/apache2.conf
 
<IfModule php7_module>
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
</IfModule>

php7_moduleを有効にする

もしphp5が既に動いている場合は無効にする。

sudo a2enmod php7
#php5が既に有効な場合は外す
sudo a2dismod php5

sudo systemctl restart apache2

動作確認

phpinfo()でPHP7が有効になっているか確認する。

<?php phpinfo(); ?>

成功例

スポンサーリンク

https

httpsはSEOにプラスの影響を与える。
Google httpsのGoogle検索結果

本項ではLet’s Encryptで無料のSSL証明書を取得してWordPressサイトを常時https化させる。

環境

  • カゴヤVPS
  • Debian7 64bit
  • Apache2.2
  • iptables-persistentインストール済み(port開放時)
  • sudoが使えるユーザー(rootでもいいけどコマンドはsudoを使って書く)

2017/05/10 追記
本稿に関してはApache2.2のみ。Apache2.4ではまた違うとxx2zz大先生が教えてくれた。

apache 2.4におけるSSL証明書の設定より引用
apache 2.4では中間CA証明書を指定する SSLCertificateChainFile ディレクティブがなくなってます。
そのためapache 2.4ではサーバ証明書と中間CA証明書、それからクロスルート証明書を一つのファイルにまとめてサーバ証明書を指定する SSLCertificateFile ディレクティブで指定します。

Let’s Encryptクライアントのインストール

1.gitのインストール

sudo apt-get install git

2.適当なディレクトリでクローンを作成

git clone https://github.com/letsencrypt/letsencrypt

3.依存パッケージのインストール

cd letsencrypt
./letsencrypt-auto --help

証明書を取得する

以下のコマンドを環境に合わせて打つ。

/docroot → ドキュメントルートのパス
example.com → ドメイン
mail@example.com → メールアドレス

./letsencrypt-auto certonly --webroot -w /docroot -d example.com -m mail@example.com --agree-tos

成功すると/etc/letsencrypt/archive/に証明書が作られる。

Apache2の設定

/etc/apache2/sites-available内にhttps化したいサイトの設定ファイルがあるはず。
基本的にやることは以下の2つ。

  • Port443で待ち受ける
  • SSLを有効にして証明書のパスを指定する

Port443で待ち受ける

<VirtualHost *:80>のような待ちうけportが書かれている箇所を443に変更する

<VirtualHost *:443>

SSLを有効にして証明書のパスを指定する

以下の設定を同じ設定ファイルの</VirtualHost>の手前にでも追記する。
証明書のパスには取得時に指定したドメイン名が含まれているので変更する。

example.com → ドメイン

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!DES:!IDEA:!SEED:+3DES:!RC4:!DH
SSLHonorCipherOrder On
Header set Strict-Transport-Security "max-age=315360000;"

Port開放

port443を開放していない場合新たに開放する必要がある。
iptables-persistentがインストールされている前提で書いているのでなかったらインストールしておく。

sudo apt-get install iptables-persistent
sudo cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.bak

/etc/iptables/rules.v4に以下を追記

sudo vi /etc/iptables/rules.v4

-A INPUT -p tcp --dport 443 -j ACCEPT

iptablesの反映と確認

sudo service iptables-persistent start
sudo iptables -L

httpsになっているか確認

Apache2を再起動するとhttpsでアクセスできるようになっているはず。

sudo /etc/init.d/apache2 restart

ヒント

Apache2再起動できないんだけど

カゴヤVPSでない最新のDebianは以下。

sudo systemctl restart apache2

httpへのアクセスをhttpsにリダイレクトさせたい

新たに以下の設定を作って有効化・再起動。

<VirtualHost *:80>
        ServerName example.com
        Redirect permanent / https://example.com/
</VirtualHost>

安全な接続って出ないんですけど

以下の記事が特に置換プラグインで参考になった。

WordPressをhttpからhttpsにSSL化した全手順まとめ(エックスサーバー環境)

テーマのphpとかに直接URL埋め込んじゃってる場合は手動でやるか置換するしかない。
たぶん数が少ないのでhttp://ドメインで検索しながら手動でやっていくほうが早い。

Amazonアソシエイトの画像がhttpsじゃなかった場合は頑張って・・・。

Let’s Encryptの証明書を自動で更新したい

Let’s Encryptの証明書は確か90日。一応切れる前にメールは来る。
自動更新したい場合、証明書取得時のコマンドに「–renew-by-default」を付けてcronにぶち込もう。

./letsencrypt-auto certonly --webroot -w /docroot -d example.com -m mail@example.com --agree-tos --renew-by-default

あとがき

WordPressの高速化に関してはまったく手を出してないためこのブログが早く表示されるかは知らないが、PHP7が速いことは間違いないし、過去二回とも体感でアクセスが速くなっているため、プラグインが動かなくなったりそれによって500エラーが出ても対処できるならPHP7はとても良いと思う。

https化に関してはもうやらざるを得ないところまで来てて面倒だな…って感じ。

メモ見ながらのろのろ書いたのでミスがあれば修正する。
指摘があればコメントで。あと質問などもあれば。

- Apache2, php7 , , , , ,

Comment

  1. nk. より:

    気になるあの子からの返信を高速化する方法を教えてください!!!!!!!!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事