[FYI] CentOS8 + OpenLiteSpeed 1.6.15 +mariadb 10.5 + php 7.4.8 で このWordPressを移植してみる(テスト)

  • by

Apacheの時代は終わった…?

最近は nginx がシェアを伸ばし、とうとう Apache と逆転したのだとか。これも時代ですね。Apacheは高機能な反面、肥大化しすぎていて太りすぎてしまい、結果メモリ使用量は多くてレスポンスも重いという悪循環に陥っているような気がします。それで nginx が軽量化を謳って登場し一気にシェアを持っていったという流れです。

最近はクラウドも安く使えたり、もしくはタダで運用できる所もあります。そういう場所には軽量で速いWEBサーバアプリはとてもマッチしているでしょう。自分も nginx は触っていますし設定もできますが、そんなんネットで情報を探せば腐る程出てくるので面白くない。

そこで目をつけたのが、OpenLiteSpeed です。ver 1.0 は2013年と比較的新しい割に、積極的なバージョンアップを続けて、現在は 1.7.4 が最新版です。とりあえず今回は簡単に入れられそうな 1.6.15 で試してみようと思います。

前準備

Install OLS from LiteSpeed Repositories
上記を参考にまず OpenLiteSpeed(以下、OLS) をいれられるよう Repository をインストールします。
まずはおまじない。

# rpm --import https://rpms.litespeedtech.com/centos/RPM-GPG-KEY-litespeed
# dnf -y install https://rpms.litespeedtech.com/centos/litespeed-repo-1.2-1.el8.noarch.rpm
# dnf update -y

ここからは色々とやっていくのですが、サーバ上にはソースコンパイルできる環境を整えておいてください。

OpenLiteSpeed インストールと起動

# dnf -y install openlitespeed lsphp74
# dnf -y install lsphp74 lsphp74-common lsphp74-mysqlnd lsphp74-gd lsphp74-process lsphp74-mbstring lsphp74-xml lsphp74-pdo lsphp74-opcache lsphp74-json "lsphp74-*"
# dnf -y install sqlite-devel sqlite
# dnf --enablerepo=PowerTools install oniguruma-devel
# ln -sf /usr/local/lsws/lsphp74/bin/lsphp /usr/local/lsws/fcgi-bin/lsphp5

lsphpというのが、OLS で利用するPHPだそうです。これが速さの秘密だとか何とか。あとでWEB上からPHP 7.4.8 をコンパイルするので、oniguruma-devel も一緒に入れておきます。他にも足りないライブラリがあったら適宜インストールしてください。FYIなので適当に進めていきます。

# systemctl start lsws
# systemctl enable lsws

はい、これで完了です。サーバの設定はWEB上で行います。よって、基本的にはconfファイルを弄る事はありません。

# /usr/local/lsws/admin/misc/admpass.sh

これはadminアカウントのセキュリティ設定を行う為に使います。実行すれば判るはずです。

mariadb インストールと起動

次にデータベースの mariadb をインストールします。最新版を入れたいので 10.5 系を入れてみましょう。

# vi /etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.5/centos8-amd64
module_hotfixes=1
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

vi でファイル作成して、下の行をコピペしてください。

# dnf makecache
# dnf install MariaDB-server MariaDB-client

(略)

GPG 鍵 0x1BB943DB をインポート中:
 Userid     : "MariaDB Package Signing Key <[email protected]>"
 Fingerprint: 1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB
 From       : https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
これでよろしいですか? [y/N]: y

インストール完了。。

# rpm -qi MariaDB-server
# vi /etc/my.cnf.d/server.cnf
[mysqld]
character-set-server = utf8mb4
[mariadb]
character-set-server = utf8mb4

# vi /etc/my.cnf.d/client.cnf
[client]
default-character-set = utf8mb4
[client-mariadb]
default-character-set = utf8mb4

インストールできた事を確認できたら、データベースのキャラクターセットを utf8mb4 に変更します。これは適宜で大丈夫。

ところで余談ですが、最近の mariadb には my-huge.cnf といったようなサンプル config はありません。これ、調べてみたらインストール時には最適化されてるから、基本はデフォ設定で大丈夫だよという事らしいです。なので必要が無ければそのままで大丈夫です。今回はキャラクターセットしたので一部追記しました。

時代は変わりますね(5.5の頃なんかは最適化しまくってた)

# systemctl start mariadb
# systemctl enable mariadb
# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

systemctl での起動設定と初期のセキュリティ設定です。

# mysql -u root -p
Enter password:

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.5.5-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)

はい、問題無く動作しました。それではOLSの設定に移りましょう。

OLSでバーチャルホスト設定とSSL導入

基本的に、OLSはインストール時に大半の機能を備えています。よってチェックボックスで機能のオン・オフをするだけで良いです。アドレスは http://サーバーのIP:7080/ で待受しています。ログイン画面が出るので、admpass.sh で設定したパスワードでログインしてください。



これがダッシュボードです。管理画面からして近代的ですね(笑) Apacheとはえらい差だ
サーバの基本機能はサーバ設定で行います。
リスナーは Apache で言う Listen 、待受ポートですね。
バーチャルホストはApacheで言う vhost.conf です。
VHostテンプレートは共通設定のテンプレートを作れるのですが、今回は面倒なので省きます。



まず、バーチャルホストの設定からしていきましょう。画面右の+を押せば追加できます。
ここからは自分ルールで作っているので、各環境に合わせて設定していきましょう。

バーチャルホスト名は ドメイン名 にしました。

Virtual Host Root、これが厄介なんですが $SERVER_ROOT/web/$VH_NAME としています。ここでいくつかの変数が入るのですが、$SERVER_ROOT はOLSをインストールしたパスになります。具体的には /usr/local/lsws です。その下に web ディレクトリを作り、その下にコンテンツを置くようにしています。Document Root では無い事に注意してください。Apache でも htdocs 外に conf とか置く事があると思いますが、その場所です。Document Root は別に記載する箇所があります(後述)

設定ファイルは、$SERVER_ROOT/conf/vhosts/$VH_NAME/vhconf.conf としました。$VH_NAME は バーチャルホスト名で設定した文字列です。私の場合は、 nakoruru.jp なので 実際には /usr/local/lsws/conf/vhosts/nakoruru.jp/vhconf.conf になります。

ノートはメモです。

シンボリックリンクを許可、スクリプト外部アプリを有効にする、抑制された…この辺は後で設定できるのでシカトして保存しました。



こんな感じになりました。右の虫眼鏡で設定変更ができます。細かく見ていきましょう。



先ほど設定した文字列が入っています。自分はシンボリックリンク類は全て、はいにしました。
「抑制された」という謎設定ですが、はいに設定すると、$VH_ROOT以下のファイルにしかアクセスできなくなります。シンボリックリンクや$VH_ROOTを超えるファイルやディレクトリを指すコンテキストへのアクセスが拒否されるので、$VH_ROOT外のファイルを読む場合にはいいえにしましょう。



ここで漸く Document Root が出てきました。この辺りは Apache を弄っていれば判るはずです。ドメイン名とドメインエイリアスは、Apache の ServerName と ServerAlias ですね。管理者Eメールも そのままです。気をつけるのは、Document Root にも $SERVER_ROOT をつけたりできるって事ですね。実際には /usr/local/lsws/web/nakoruru.jp というパスになっています。あとは、圧縮(gzip)はつけた方が良いでしょう。

サーバインデックスは Indexes になります。私は許可しませんがお好みで。



ログは…まぁこれもお好みで良いと思います。自分は適当につけました。
(というかCDN側で取っているのでいらない。。月間80-100万PV程あるのでCDN無いと死にます。。)

あとはSSLの設定等はこちらも見れば判ると思います。$SERVER_ROOT から見てどこに設置するか、だけですね。



次はリスナーの設定です。バーチャルホストだけでは、どのポートで待受するかという設定はしません。このリスナーで全て管理しています。自分は Port80 と Port443 を作りました。443側はセキュアをはいにしています。



これですね。
リスナー名は任意で良いです。
IPアドレスはANYにしてあります。勿論許可設定、拒否設定もここで可能です。
ポートはそのままポート番号です。バインディングと Enable REUSEPORT の 説明は省きます。

で、下の方にあるバーチャルホストマップで、バーチャルホストとリスナーポートのマッチングをする訳です。合理的ですね。



証明書の設定はこんな感じです。ここではポートに対しての証明書を割り当てます。バーチャルホスト個別に割当したければ、そちらで設定してください。

プロトコルバージョンや SPDY/HTTP2 の設定はお好みで。自分は TLS1.2 以上、SPDY等は積極的に使う設定にしました。



Port80 の方は勿論セキュアをいいえにしてください。あとは同様にバーチャルホストマップで割当します。以上で基本的に設定は完了です。

http://ドメイン名/

でアクセスすればアクセスできるはずです。ただDNSを設定していければ、Hostsファイルで擬似的に何とかしましょう。

PHP 7.4.8 をコントロールパネルからコンパイルする

OLSの機能で、この画面からPHPをコンパイルしてバージョンを上げる事が可能です。早速やってみましょう。



ツールの中の PHPのコンパイルからできます。基本的に画面にそって進むだけなので割愛。ただ途中でコンソールに入ってスクリプト叩いてって所があるので注意。あと、ライブラリが足りないとエラーが出まくるので注意です。コンパイルは結構遅いです(笑)



コンパイルが終わったら入れ替えます。サーバ設定の外部アプリです。ここでlsphpの設定が変更できます。



このコマンドの所です。デフォ状態だと、$SERVER_ROOT/lsphp73/bin/lsphp となっているはずです。これを$SERVER_ROOT/lsphp74/bin/lsphp にする事で、最新版の 7.4.8 にする事ができます。



ダッシュボードのリスナーが緑点灯していれば設定ミスなく動作しているという証拠です。

あとは WordPressのデータをまんまコピーして、旧サーバからalldumpしたSQLを打ち込めば完了です。特に変更する事もなくそのまま動作してしまい拍子抜けしました(笑)


駆け足でしたが、こんな感じで OLS の設定ができました。覚えてしまえばかなり簡単に設定できます。ちなみにABでベンチを取りましたが、素のApacheよりかは全然速く、かつメモリ消費量も少なかったです。何かの参考になれば幸いです。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください