常時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のインストール
[bash]
sudo apt-get install git
[/bash]
2.適当なディレクトリでクローンを作成
[bash]
git clone https://github.com/kasparsd/php-7-debian.git
[/bash]
3.build.shを編集
そのままbuild.shを実行するとApache2用のモジュールが作られないため編集する。
ここではapxs2が必要になるので、/usr/binあたりに存在するか確認する。
存在しない場合、以下のパッケージをインストールする。
[bash]
#Apache2 Preforkの場合
sudo apt-get install apache2-prefork-dev
#Apache2 Workerの場合
sudo apt-get install apache2-threaded-dev
[/bash]
もし自分の使っているApache2がどちらかわからない場合、バージョンを確認するとわかる
[bash]
sudo apache2 -V
[/bash]
apxs2が手に入ったらbuild.shを編集する。
CONFIGURE_STRING=””内に「–with-apxs2=/usr/bin/apxs2」を追記してやるとよい。
[bash]
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"
[/bash]
4.インストール
[bash]
./build.sh
sudo ./install.sh
[/bash]
正常に完了すると、/usr/lib/apache2/modules/libphp7.soが生成されている。
また、/etc/apache2/mods-available/php7.confが生成されている。
Apache2側の設定
php7をApache2で扱えるようにするための設定をしていく。
apache2.confの設定
最下行にでも以下を追加する。
[bash]
sudo vi /etc/apache2/apache2.conf
<IfModule php7_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
[/bash]
php7_moduleを有効にする
もしphp5が既に動いている場合は無効にする。
[bash]
sudo a2enmod php7
#php5が既に有効な場合は外す
sudo a2dismod php5
sudo systemctl restart apache2
[/bash]
動作確認
phpinfo()でPHP7が有効になっているか確認する。
[php]
<?php phpinfo(); ?>
[/php]
成功例
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のインストール
[bash]
sudo apt-get install git
[/bash]
2.適当なディレクトリでクローンを作成
[bash]
git clone https://github.com/letsencrypt/letsencrypt
[/bash]
3.依存パッケージのインストール
[bash]
cd letsencrypt
./letsencrypt-auto –help
[/bash]
証明書を取得する
以下のコマンドを環境に合わせて打つ。
/docroot → ドキュメントルートのパス
example.com → ドメイン
mail@example.com → メールアドレス
[bash]
./letsencrypt-auto certonly –webroot -w /docroot -d example.com -m mail@example.com –agree-tos
[/bash]
成功すると/etc/letsencrypt/archive/に証明書が作られる。
Apache2の設定
/etc/apache2/sites-available内にhttps化したいサイトの設定ファイルがあるはず。
基本的にやることは以下の2つ。
- Port443で待ち受ける
- SSLを有効にして証明書のパスを指定する
Port443で待ち受ける
<VirtualHost *:80>のような待ちうけportが書かれている箇所を443に変更する
[code]
<VirtualHost *:443>
[/code]
SSLを有効にして証明書のパスを指定する
以下の設定を同じ設定ファイルの</VirtualHost>の手前にでも追記する。
証明書のパスには取得時に指定したドメイン名が含まれているので変更する。
example.com → ドメイン
[code]
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;"
[/code]
Port開放
port443を開放していない場合新たに開放する必要がある。
iptables-persistentがインストールされている前提で書いているのでなかったらインストールしておく。
[bash]
sudo apt-get install iptables-persistent
sudo cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.bak
[/bash]
/etc/iptables/rules.v4に以下を追記
[bash]
sudo vi /etc/iptables/rules.v4
-A INPUT -p tcp –dport 443 -j ACCEPT
[/bash]
iptablesの反映と確認
[bash]
sudo service iptables-persistent start
sudo iptables -L
[/bash]
httpsになっているか確認
Apache2を再起動するとhttpsでアクセスできるようになっているはず。
[bash]
sudo /etc/init.d/apache2 restart
[/bash]
ヒント
Apache2再起動できないんだけど
カゴヤVPSでない最新のDebianは以下。
[bash]
sudo systemctl restart apache2
[/bash]
httpへのアクセスをhttpsにリダイレクトさせたい
新たに以下の設定を作って有効化・再起動。
[code]
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
[/code]
安全な接続って出ないんですけど
以下の記事が特に置換プラグインで参考になった。
WordPressをhttpからhttpsにSSL化した全手順まとめ(エックスサーバー環境)
テーマのphpとかに直接URL埋め込んじゃってる場合は手動でやるか置換するしかない。
たぶん数が少ないのでhttp://ドメインで検索しながら手動でやっていくほうが早い。
Amazonアソシエイトの画像がhttpsじゃなかった場合は頑張って・・・。
Let’s Encryptの証明書を自動で更新したい
Let’s Encryptの証明書は確か90日。一応切れる前にメールは来る。
自動更新したい場合、証明書取得時のコマンドに「–renew-by-default」を付けてcronにぶち込もう。
[code]
./letsencrypt-auto certonly –webroot -w /docroot -d example.com -m mail@example.com –agree-tos –renew-by-default
[/code]
あとがき
WordPressの高速化に関してはまったく手を出してないためこのブログが早く表示されるかは知らないが、PHP7が速いことは間違いないし、過去二回とも体感でアクセスが速くなっているため、プラグインが動かなくなったりそれによって500エラーが出ても対処できるならPHP7はとても良いと思う。
https化に関してはもうやらざるを得ないところまで来てて面倒だな…って感じ。
メモ見ながらのろのろ書いたのでミスがあれば修正する。
指摘があればコメントで。あと質問などもあれば。
コメント
気になるあの子からの返信を高速化する方法を教えてください!!!!!!!!