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

OpenLiteSpeed+PHP7でWordPressを動かす

投稿日:   投稿者:xx2zz

少し前にこのブログをApache2+PHP7環境に移行してWordPressの動作が速くなった。
ついでにWebサーバーもApache2より速いと噂のOpenLiteSpeedに変えてみたら更に速くなった。
そんなOpenLiteSpeed(とPHP7)でWordPressを動かすところまでを書く。

スポンサーリンク

環境

  • Debian GNU/Linux 8.8 (jessie)
  • OpenLiteSpeed 1.4.26
  • PHP 7.1.6
  • MySQL 5.5

必要なパッケージを入れる

apt-get install curl gcc make g++ zlib1g-dev libpcre3-dev libssl-dev libgeoip-dev libxml2-dev libpng-dev libexpat1-dev

OpenLiteSpeedのビルドとインストール

libssl-devを入れてるのになぜかconfiugre実行時OpenSSLをビルドしてくれる。よくわからないけど動くからOK。

wget http://open.litespeedtech.com/packages/openlitespeed-1.4.26.tgz
tar vzxf openlitespeed-1.4.26.tgz
cd openlitespeed-1.4.26/
./configure --with-openssl=/usr --enable-http2
make
make install

OpenLiteSpeed用PHP7のインストール

OpenLiteSpeedは専用のAPIでPHPを呼び出すらしいのでカスタムなPHPが必要。
aptリポジトリを追加してインストールできる。
PHPで必要そうなモジュール類は適当に入れる。

echo "deb http://rpms.litespeedtech.com/debian/ jessie main" > /etc/apt/sources.list.d/lst_debian_repo.list 
wget -O /etc/apt/trusted.gpg.d/lst_repo.gpg http://rpms.litespeedtech.com/debian/lst_repo.gpg 
apt-get update
apt-get install lsphp71 lsphp71-common lsphp71-curl lsphp71-dbg lsphp71-json lsphp71-mysql lsphp71-opcache lsphp71-modules-source lsphp71-sqlite3

起動・停止・再起動

起動

/usr/local/lsws/bin/lswsctrl start

停止

/usr/local/lsws/bin/lswsctrl stop

再起動

/usr/local/lsws/bin/lswsctrl restart

管理画面

OpenLiteSpeedにはWebで見れる管理画面がついている。基本的な設定はすべてここから行える。
URL: https://[address]:7080/
ユーザー名・パスワード(初期): admin/123456

PHPの設定

PHP7をインストールしたにも関わらず、管理画面を見るとPHP5が設定されているので、それをPHP7に変える。

管理画面 » サーバー設定 » 外部アプリ » 編集

コマンド: $SERVER_ROOT/fcgi-bin/lsphp5 → $SERVER_ROOT/lsphp71/bin/lsphp

バーチャルホストの追加

管理画面から設定できる。適当に追加する。

リスナーの設定

80と443の2つを追加し、両方に追加したバーチャルホストを割り当てる。

SSLの設定

Let’s Encrypt証明書を使う前提で書く。

Let’s Encrypt証明書の取得

apt-get install git
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --webroot -w ドキュメントルート -d ドメイン -m 適当なメールアドレス --agree-tos
openssl dhparam 2048 -out /etc/letsencrypt/live/ドメイン/dhparam.pem (DHキー交換を使う場合)

管理画面 » リスナー » SSL

秘密鍵ファイル: /etc/letsencrypt/live/ドメイン/privkey.pem
証明書ファイル: /etc/letsencrypt/live/ドメイン/fullchain.pem
証明書チェーン: はい

プロトコルバージョン: 必要なものを指定する(基本的にTLSだけでよいはず)

暗号: 必要なものを指定する
(設定例)ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA

ECDH鍵交換を有効にする: 使うなら「はい」
DHキー交換を有効にする: 使うなら「はい」
DH パラメタ: /etc/letsencrypt/live/ドメイン/dhparam.pem

SSL再交渉保護: 使うなら「はい」

SPDY/HTTP2を有効にする: HTTP2を使う場合は「HTTP/2」を指定する

WordPressのインストール

適当に入れる

wget https://ja.wordpress.org/wordpress-4.8-ja.tar.gz
tar vzxf wordpress-4.8-ja.tar.gz
apt-get install mysql-server
mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 43
Server version: 5.5.55-0+deb8u1 (Debian)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>  CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "wpuser"@"localhost"
    -> IDENTIFIED BY "nullpodesune";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

mysql> EXIT
Bye

rewriteルールの設定

管理画面 » バーチャルホスト » Rewrite

Rewriteを有効にする: はい
Rewrite ルール: 以下のような感じで適当に

RewriteBase /
RewriteRule ^/index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

HTTP2のServer Pushを使う場合

WPでServer Pushをしたい場合は、テーマの編集からfunction.phpに以下のようにプッシュさせたいファイルのパスをLinkヘッダで指定すればプッシュしてくれる。

<?php
header("Link: </wp-content/themes/twentyseventeen/style.css?ver=4.8>; rel=preload; as=stylesheet;");

参考にしたページ

UbuntuでOpenLightSpeedを試してみる – Qiita
OpenLiteSpeedの導入からWordPress動作まで – Netassist Blog
http://open.litespeedtech.com/mediawiki/index.php/Help:Install:Command_Line
https://geekflare.com/http2-litespeed-web-server/

- OpenLiteSpeed , ,

Message

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

関連記事