php5から7.0にアップデートしたらwordpressが早くなった

php5時点でのApacheBench

$ ab -n 100 -c 20 https://helloidea.org/XXXX
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking helloidea.org (be patient).....done


Server Software:        Apache/2.4.25
Server Hostname:        helloidea.org
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128

Document Path:          /XXXX
Document Length:        78540 bytes

Concurrency Level:      20
Time taken for tests:   1.997 seconds
Complete requests:      100
Failed requests:        10
   (Connect: 0, Receive: 0, Length: 10, Exceptions: 0)
Total transferred:      7870988 bytes
HTML transferred:       7853988 bytes
Requests per second:    50.07 [#/sec] (mean)
Time per request:       399.423 [ms] (mean)
Time per request:       19.971 [ms] (mean, across all concurrent requests)
Transfer rate:          3848.81 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       80  301  79.0    305     444
Processing:    34   70  24.6     62     136
Waiting:        7   23  14.3     18      71
Total:        129  370  83.9    374     546

Percentage of the requests served within a certain time (ms)
  50%    374
  66%    414
  75%    422
  80%    436
  90%    458
  95%    490
  98%    542
  99%    546
 100%    546 (longest request)

php7.0変更後のApacheBench

$ ab -n 100 -c 20 https://helloidea.org/XXXX
This is ApacheBench, Version 2.3 <$Revision: 1706008 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking helloidea.org (be patient).....done


Server Software:        Apache/2.4.25
Server Hostname:        helloidea.org
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128

Document Path:          /XXXX
Document Length:        84958 bytes

Concurrency Level:      20
Time taken for tests:   0.967 seconds
Complete requests:      100
Failed requests:        89
   (Connect: 0, Receive: 0, Length: 89, Exceptions: 0)
Total transferred:      8510241 bytes
HTML transferred:       8493241 bytes
Requests per second:    103.38 [#/sec] (mean)
Time per request:       193.454 [ms] (mean)
Time per request:       9.673 [ms] (mean, across all concurrent requests)
Transfer rate:          8592.00 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       58  131  49.8    120     313
Processing:    15   46  31.7     37     164
Waiting:        4   17  10.6     13      40
Total:        105  177  51.1    165     343

Percentage of the requests served within a certain time (ms)
  50%    165
  66%    191
  75%    200
  80%    205
  90%    262
  95%    297
  98%    321
  99%    343
 100%    343 (longest request)

約2倍ほど早くなりました。
キャッシュ系のプラグインを使用していましたが、もう不要かもしれないです。
もっと早く気づきたかった…

パッケージのインストール

apt install php7.0
apt install php5-mysql
apt install libapache2-mod-php7.0
apt install php7.0-gd
apt install php7.0-xml
apt install php7.0-xmlrpc
apt install php7.0-mbstring

php5からphp7.0への切り替え

a2dismod php5
a2enmod php7.0
/etc/init.d/apache2 restart

※php.iniは元々手を加えていた差分だけマージすれば良さそうです

WordPressのコメント欄からメールアドレス、ウェブサイトを消す

調べるとphpファイルを編集する方法と、cssを変更する方法が見つかりますが、
「外観 -> CSS編集」から追加CSSを使って上書きする形が良いと思います。

こんな感じに非表示になるよう上書きします。クラス名はChromeの開発コンソールから追っていくとすぐ見つかりました。

/* メールアドレスが公開されることはありません。 */
.comment-notes {display:none;}
/* コメント欄 */
/* .comment-form-comment {display:none;} */
/* 名前 */
/* .comment-form-author {display:none;} */
/* メールアドレス */
.comment-form-email {display:none;}
/* サイト */
.comment-form-url {display:none;}
/* 新しいコメントをメールで通知 */
.comment-subscription-form {display:none;}
/* 新しい投稿をメールで受け取る */
.comment-subscription-form {display:none;}

上の例で、コメント欄 と 名前 以外は非表示になります。

変更前
変更後

サイトをhttps化してみる

結構前からGoogleが本気でhttps化を促していて、気にはしていたものの結局放置していたのですが、気が向いたのでhttps化してみようと思います。

■環境
Apache2 – 2.4.25-3+deb9u5
DebianパッケージのApache2になります

■構築
1. Apache2のsslモジュールを有効化する

以下のコマンドを実行して、sslモジュールとsslのデフォルト設定を有効化します

# sslモジュール有効化
$ a2enmod ssl
# sslサイトデフォルト設定有効化
$ a2ensite default-ssl
# apache2再起動
$ systemctl restart apache2

コマンドを実行することによって、
mods-availableへのシンボリックリンクがmods-enabledに置かれ
sites-availableへのシンボリックリンクがsites-enabledに置かれることになります
手作業で普通にシンボリックリンクを作成しても良いと思います。
再起動も普通に /etc/init.d/apache2 restart としても良いです。

etc
+apache2
|+conf-available
|+conf-enabled
|+mods-available
||+ssl.conf
||+ssl.load
|+mods-enabled
||+ssl.conf
||+ssl.load
|+sites-available
||+000-default.conf
||\default-ssl.conf
|+sites-enabled
||+000-default.conf
||\default-ssl.conf
|+apache2.conf
|+apache2.conf.dpkg-dist
|+envvars
|+magic
|\ports.conf

これだけでApache2は443ポートで待ち受けするようになりました。

$ ss -ltn | grep 443
LISTEN     0      128         :::443                     :::*

※443ポートアクセスは80ポートとは別のVirtualHostとなるためDocumentRootの設定など揃える必要があります。

2. 証明書の設定
apache2のインストール時に最初から自己証明書が生成されており、
デフォルトのssl設定(default-ssl.conf)からも参照されているので、特に何もしなくても動きはします。
SSLCertificateFileとSSLCertificateKeyFileから参照してます

ssl用の公開鍵と秘密鍵は以下のディレクトリに既に存在しているはずです。

etc
+ssl
|+certs
||+ssl-cert-snakeoil.pem
|+private
||\ssl-cert-snakeoil.key
|\openssl.cnf

この段階ですでにhttpsアクセス出来ますが、認証されていないオレオレ証明書なので
CAサービスから認証済みの証明書を入手し、差し替える必要があります。

今回は無料のCAで有名そうな?letsencryptを使ってみます。
普通は結構高額な金額が掛かるらしいですが無料で使えるそうです。助かる。
https://letsencrypt.jp/

ユーザー登録など不要で、Certbotというソフトを入れるだけでいけます。
debianのbackportsパッケージにcertbotが入っていますので、aptからインストールします。
※backportsは標準ではsources.listに入っていないので追加が必要です。

# パッケージ管理システムからインストールします
$ sudo apt install certbot python-certbot-apache
# 証明書の入手とapacheへの適応を行います
$ certbot --apache

–apacheオプションを付けたことにより、sites-availableディレクトリに “000-default-le-ssl.conf” シンボリックファイルが自動生成されていることが分ります。
そして、”000-default-le-ssl.conf” から/etc/letsencrypt/live/helloidea.org/(略) への証明書の参照があることも分ります。
また、/etc/cron.d/certbot に1日2回の証明書更新クローンが置かれるため、証明書のメンテナンスも不要の様です。

これで、https化完了です。

Web-based SSHクライアントについて調べてみた

手元にSSHクライアントが無い状況でもブラウザさえあればSSH可能になるやつです
セキュリティが気になるのでWEBサービス系の使用は避けたいところです
商用版のあるタイプの物を自鯖に入れたほうが良さげ

shellinabox
https://code.google.com/archive/p/shellinabox/
2016年が最終リリースです。開発はほぼ終わっていてメンテナンスのみの印象です。

tools.bartlweb
https://tools.bartlweb.net/webssh/
shellinaboxを個人で運用公開してるサービスのようです

KeyBox
https://www.sshkeybox.com/
開発が活発な印象です。商用版あり

serFISH
https://www.serfish.com/console/
WEBサービス型のSSHクライアント

Anyterm
https://anyterm.org/
2005年から2017年まで開発が続けられています
13872回という桁違いの恐るべきコミット数です。しかも個人で。恐らくまた開発再開されるでしょう

Ajaxterm
https://github.com/antonylesuisse/qweb/tree/master/ajaxterm
Anytermからインスパイアされて開発
12年前から開発停止中

■ GateOne
http://liftoffsoftware.com/Products/GateOne
開発は現在止まっており、2017年までコミットはありますが、最終リリースは2012年です。商用版あり

.gitconfigメモ

今の.gitconfig設定メモ
いろいろ試した結果コミット操作にターミナル、ビュワー&重要な操作としてSourcetreeを使用するという結論に収まっています。
ただちょっと前からSourcetreeはログインが必須となっています。

[user]
	name = XXXX
	email = XXXX@XXXX
[core]
	quotepath = false
	autoCRLF = false
	# editor = 'C:/Program Files/Microsoft VS Code Insiders/Code - Insiders.exe' --wait
	editor = code --wait
[alias]
	s = status
	d = difftool -d
	t = log --graph --all --date=format:'%Y/%m/%d %H:%M:%S' --format=\"%x09%C(cyan bold)%an%Creset%x09%C(yellow)%h%Creset %cd %C(magenta reverse)%d%Creset %s\"
	# tree = log --graph --all --format=\"%x09%C(cyan bold)%an%Creset%x09%C(yellow)%h%Creset %C(magenta reverse)%d%Creset %s%x09%ai%x09%ci\"	
	cleanup-soft = !git clean -f -d -x && git submodule foreach git clean -f -d -x
	cleanup-hard = !git reset --hard && git clean -f -d -x && git submodule foreach git reset --hard && git submodule foreach git clean -f -d -x

	tool = bc3
[difftool "bc3"]
	path = C:/Program Files/Beyond Compare 4/BComp.exe
[difftool "sourcetree"]
	cmd = 'C:/Program Files/Beyond Compare 4/BComp.exe' \"$LOCAL\" \"$REMOTE\"
[mergetool "sourcetree"]
	cmd = 'C:/Program Files/Beyond Compare 4/BComp.exe' \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
	trustExitCode = true
[gui]
	encoding = utf-8
	fontui = -family \"Ricty Diminished\" -size 10 -weight normal -slant roman -underline 0 -overstrike 0
	fontdiff = -family \"Ricty Diminished\" -size 10 -weight normal -slant roman -underline 0 -overstrike 0