chrome firefox IE safari chain youtube-play pocket hatena facebook feedly github google-plus rss twitter search code envelope-o home pencil website works calendar drawer tag
2016/12/07

[VPS]PHPアクセラレーション等を駆使してWordPressの高速化を図る

CentOS7.2にPHP7の導入とOPCacheとAPCuによるWordPressの高速化を行いました。導入方法と設定を解説いたします。

PHPアクセラレーション等を駆使してWordPressの高速化を図る

せっかくVPSを借りて、自分の好きなように出来るのでPHP7の導入とOPCacheとAPCuによるWordPressの高速化を行いました。導入方法と設定を解説いたします。

設定環境
ローカル: Mac/OS: Mac Sierra
ConoHa VPS
VPS: CentOS Linux release 7.2.1511 (Core)
Apache2.4.6 (CentOS)
作業用ユーザ名: devuser
sftpユーザ名: sfuser

PHP7へアップデート

標準のyumレポジトリではPHP5.4までしかまだありませんが、外部レポジトリを追加する事でPHP7へアップデートが可能です。

EPELレポジトリの追加(ConoHaでは既にインストールされていました)

$ sudo yum install epel-release

Remiレポジトリ
どうやらこのRemiレポジトリが色々用意されているらしく、中々いいらしいです。
Remiレポジトリの目的は最新版のディストリビューションを提供するという事らしく、最新版をインストールすることが可能です。

$ rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
Retrieving http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
warning: /var/tmp/rpm-tmp.BvtG1n: Header V4 DSA/SHA1 Signature, key ID 00f97f56: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:remi-release-7.2-1.el7.remi ################################# [100%]
-省略-

古いPHPの削除

yumで管理されていたPHP5を念のため削除します。

$ sudo yum remove php-*
Loaded plugins: fastestmirror, langpacks
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.4.16-36.3.el7_2 will be erased
-省略-
Remove 7 Packages

Installed size: 19 M
Is this ok [y/N]:y

Removed:
php.x86_64 0:5.4.16-36.3.el7_2 php-cli.x86_64 0:5.4.16-36.3.el7_2
php-common.x86_64 0:5.4.16-36.3.el7_2 php-gd.x86_64 0:5.4.16-36.3.el7_2
php-mbstring.x86_64 0:5.4.16-36.3.el7_2 php-mysql.x86_64 0:5.4.16-36.3.el7_2
php-pdo.x86_64 0:5.4.16-36.3.el7_2

Complete!

PHP7をRemiレポジトリからインストールする

Remiレポジトリの追加、古いPHPも削除もしたので、いよいよPHP7をインストールします。

$ sudo yum --enablerepo=remi-php70 install php php-cli.x86_64 php-pdo.x86_64 php-gd.x86_64 php-mbstring.x86_64 php-common.x86_64 php-mysql

Loaded plugins: fastestmirror, langpacks
remi-php70 | 2.9 kB 00:00:00
remi-php70/primary_db | 164 kB 00:00:01

Install 7 Packages (+4 Dependent packages)

Total download size: 8.9 M
Installed size: 34 M

Total 657 kB/s | 8.9 MB 00:00:13
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Importing GPG key 0x00F97F56:
Userid : "Remi Collet <RPMS@FamilleCollet.com>"
Fingerprint: 1ee0 4cce 88a4 ae4a a29a 5df5 004e 6f47 00f9 7f56
Package : remi-release-7.2-1.el7.remi.noarch (installed)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
Is this ok [y/N]: y

Installed:
php.x86_64 0:7.0.13-1.el7.remi php-cli.x86_64 0:7.0.13-1.el7.remi
php-common.x86_64 0:7.0.13-1.el7.remi php-gd.x86_64 0:7.0.13-1.el7.remi
php-mbstring.x86_64 0:7.0.13-1.el7.remi php-mysqlnd.x86_64 0:7.0.13-1.el7.remi
php-pdo.x86_64 0:7.0.13-1.el7.remi

Dependency Installed:
fontconfig.x86_64 0:2.10.95-7.el7 fontpackages-filesystem.noarch 0:1.44-8.el7
gd-last.x86_64 0:2.2.3-1.el7.remi php-json.x86_64 0:7.0.13-1.el7.remi

Complete!

これで、PHP7のインストールが完了したので、PHPのバージョンを確認します。

$ php -v
PHP 7.0.13 (cli) (built: Nov 8 2016 20:16:29) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

PHP7に変わっていたら、完了です。

また、WordPressでXMLを使用しているので、追加で他に必要そうなものをインストールしていきます。

$ sudo yum --enablerepo=remi-php70 install php-xml php-mcrypt

今現在phpで何がインストールされているかは、以下二つのコマンドで確認出来ます。

$ rpm -qa | grep php
$ yum list installed | grep php

インストールが完了したら、php.iniがクリアされているので、書き換えを忘れずに。
変更した部分は以前の記事と同じ所です。
php.iniの書き換えが完了したら、Apacheの再起動を行い、phpinfo(); などでPHP7になっているか確認してください。

OPCache / ACPu

OPCacheとAPCuとは、PHPが動作しているページなどにアクセスすると、
プロセスはコンパイル->中間コード(オペコード)生成->プログラムの実行となりますが、
その中間コードをキャッシュすることにより、キャッシュ->プログラムの実行となるので処理が高速化するという特徴があります。

特にこういったWordPressなどのPHPベースのCMSにはかなり効果があるかと思います。
早速インストールの方法ですが、以下のコマンドを実行します。

$ sudo yum --enablerepo=remi-php70 install php-opcache php-pecl-apcu

インストールが完了したら、

/etc/php.d/10-opcache.ini
/etc/php.d/40-apcu.ini

で項目 opcache.enable=1 / apc.enabled=1 になっていれば、有効になっています。
0になっていたら無効なので、有効にしましょう。

最後にapacheを再起動して、phpの設定を反映します。

$ sudo systemctl restart httpd.service

WordPress側では、翻訳ファイルをプラグインでキャッシュさせています。

プラグインは、「001 Prime Strategy Translate Accelerator」を使用しました。

設定と言ってはなんですが、

  • キャッシュを有効にする
  • キャッシュタイプはAPC
  • サイト側の表示は翻訳停止
  • ログイン/管理画面の翻訳はそれぞれキャッシュを使用

という感じにしていますが、早くなったのは実感できます。

まだまだサーバ周りはチューニング次第でさらに早くできるとは思います。

 

参考サイト

CentOS7へPHP7+MySQL5.7+Apache2.4のインストール&設定

CentOS7 に 旧 APC (apcu &amp; opcache)を導入する – Qiita

OPcache導入してみた!(速さ検証もあるよ!) – Qiita

今後の励みになりますので、良かったらシェアをお願いします。

このエントリーをはてなブックマークに追加