Red Hat Enterprise Linix 9 の OpenLiteSpeed に WordPress (LiteSpeed Cache) をインストール

conoha Linux
このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク

これまで ConoHa の VPS に Red Hat Enterprise Linix 9 をインストールし、Web サーバー(OpenLiteSpeed)とデータベースサーバー(MariaDB)を構築してきました。

今回は WordPress を設置し、LiteSpeed Cache プラグインも設定していきたいと思います。

WordPress 用のデータベースを準備

事前準備として前回構築した MariaDB に WordPress ユーザーを追加して、同名のデータベースも用意していきます。

phpMyAdmin に root ユーザーでログインし、「ユーザアカウント」⇒「ユーザアカウントを追加する」と辿ってください。

  • ユーザ名:wordpress(テキスト入力項目の値を利用する)
  • ホスト名:localhost(ローカル)
  • パスワード:(自動生成)
  • 同名のデータベースを作成してすべての権限を与える:チェックを入れる

自動生成したパスワードをメモ帳などにコピーしたうえで、画面下部の「実行」からユーザーを作成します。

WordPress のダウンロード

WordPress の最新版をダウンロードして解凍します。

OpenLiteSpeed のデフォルトユーザーが nobody なので、WordPress のディレクトリも nobody に変更しておきます。

※今回は敢えてドキュメントルートより前に設置しましたが、$DOC_ROOT に展開するのが一番無難だと思います。

WordPress の設定ファイルを編集

WordPress を展開したディレクトリの直下にある wp-config.php を編集します。

認証用ユニークキーについては(https://api.wordpress.org/secret-key/1.1/salt/)の内容で上書きします。

OpenLiteSpeed 設定

OpenLiteSpeed の管理画面で WordPress 用の設定を入れていきます。

「バーチャルホスト」⇒ ホスト名 ⇒「コンテキスト」から新しいコンテキストを追加します。

  • タイプ:Static
  • URI:/wordpress
  • 場所:/var/www/wordpress/
  • アクセス可能:はい

設定を保存し、OLS を再起動後に https://ドメイン名/wordpress/ へアクセスします。

WordPress のセットアップ画面が表示されたら、OLS の基本設定は完了です。

WordPress セキュリティ設定

続いて、WordPress の管理画面にアクセス制限をかけていきます。

再び OLS の管理画面から「バーチャルホスト」⇒ ホスト名 ⇒「コンテキスト」と辿り、新しいコンテキストを追加します。

  • タイプ:Static
  • URI:/wordpress/wp-admin
  • 場所:/var/www/wordpress/wp-admin/
  • アクセス可能:はい
  • アクセスが許可されました:(アクセスを許可する IP アドレス)
  • アクセスが拒否されました:*

.htaccess で特定ファイルへのアクセスを遮断する

続いて、xmlrpc.php と wp-trackback.php のアクセスもブロックしておきましょう。

こちらは .htaccess でブロックする方法で設定してみます。

OLS はデフォルト状態では .htaccess が有効になっていないため、管理画面から「バーチャルホスト」⇒ ホスト名 ⇒「Rewrite」と辿り、Rewrite 制御を編集します。

  • Rewriteを有効にする:はい
  • Auto Load from .htaccess:はい

設定を保存し、OLS を再起動します。

続いて WordPress のディレクトリ直下にある .htaccess ファイルを編集しましょう。

# BEGIN WordPress から # END WordPress の間に記述すると上書きされる可能性があると注意書きされてますので、ファイルの先頭にアクセス禁止ルールを追加しました。

.htaccess が反映されるタイミングは Apache とは異なり、OLS の再起動をしないと適用されませんでした。

OLS 再起動後に https://ドメイン名/wordpress/wp-trackback.php にアクセスし、403 Forbidden のエラー画面が表示されることを確認してください。

LiteSpeed Cache のインストール

せっかくの OpenLiteSpeed と WordPress の組み合わせなので、有名な LiteSpeed Cache も設定していきましょう。

Redis のインストール

Redis の設定

Unix ソケットを使用するのでポートを 0 に変更し、ソケットの場所を指定します。

ソケットのパーミッションは redis グループに対して許可したいので 770 としました。

また、タイムアウトを 600 秒に変更しておきました。

Redis のソケットのパーミッションを redis グループに対して使用できるようにするため、LiteSpeed のユーザー(nobody)を redis グループに追加しておきます。

Redis を起動する

Redis を起動 & 自動起動するようにしておきます。

メモリオーバーコミット対策

Redis を起動した際に、ログに「WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.」と記録されるので、指示に従って設定を記述する。

上記設定を /etc/sysctl.conf の最終行に追加し、OS を再起動しました。

php-redis の有効化

Redis の導入ができましたので、php の拡張モジュールを入れていきます。

LiteSpeed の php8.2 で WordPress を動かしますので、lsphp82 用の Redis 拡張モジュールをインストールします。

LiteSpeed Cache

ブラウザから https://ドメイン名/wordpress/wp-admin/ にアクセスし、WordPress の管理画面にアクセスしてください。

新規プラグインを追加から「LiteSpeed Cache」を検索してインストール、有効化します。

インストール済みプラグインから LiteSpeed Cache の設定を開きます。

[6] オブジェクト のタブを開き、Redis の設定を入れます。

  • オブジェクトキャッシュ:オン
  • 方法:Redis
  • ホスト:/run/redis/redis.sock
  • ポート:0

変更を保存した後、ステータスの接続テストが OK になることを確認してください。

ブラウザのキャッシュ設定

次に、[7] ブラウザー のタブを開きます。

カスタムヘッダーの設定方法についてリンクがありますので、下記ページを参考に OLS に設定を入れます。

How to Set Up Custom Headers – OpenLiteSpeed

OLS の管理画面を開き、「バーチャルホスト」⇒ ホスト名 ⇒「コンテキスト」から新しいコンテキストを追加します。

js ファイル用のコンテキスト追加

  • タイプ:Static
  • URI:/wordpress/wp-content/cache/js/
  • 場所:/var/www/wordpress/wp-content/cache/js/
  • アクセス可能:はい
  • 有効期限を有効にする:はい
  • タイプ別の期限:application/x-javascript=A15552000, text/javascript=A15552000, application/javascript=A15552000
  • Header Operations:unset Cache-control
    set Cache-control public, max-age=15552000

CSS ファイル用のコンテキスト追加

  • タイプ:Static
  • URI:/wordpress/wp-content/cache/css/
  • 場所:/var/www/wordpress/wp-content/cache/css/
  • アクセス可能:はい
  • 有効期限を有効にする:はい
  • タイプ別の期限:text/css=A15552000
  • Header Operations:unset Cache-control
    set Cache-control public, max-age=15552000

画像ファイル用のコンテキスト追加

  • タイプ:Static
  • URI:exp:/wordpress/(.*gif|ico|jpeg|jpg|png|webp|woff|woff2|fon|fot|ttf)$
  • 場所:/var/www/wordpress/$0
  • アクセス可能:はい
  • 有効期限を有効にする:はい
  • タイプ別の期限:image/gif=A15552000, image/x-icon=A15552000, image/jpeg=A15552000, image/png=A15552000, image/webp=A15552000, font/ttf=A15552000, font/woff=A15552000, font/woff2=A15552000, application/x-font-ttf=A15552000, application/x-font-woff=A15552000, application/font-woff=A15552000, application/font-woff2=A15552000
  • Header Operations:unset Cache-control
    set Cache-control public, max-age=15552000

※場所の $0 の部分には、URI でヒットした拡張子のファイル名が入ります。

コンテキストの順番

QUIC.cloud オンラインサービスに登録

再び WordPress の管理画面で「LiteSpeed Cache」⇒「一般」⇒「一般設定」の画面を開き、ドメインキーの項目にある「ドメインキーを要求」ボタンをクリックします。

ページをリロードして、ドメインキーが自動で入力されている状態であれば完了です。

※CDN を使用しない場合は QUIC.cloud アカウントへのリンク(関連付け)をする必要はありません。

他の項目は、WordPress のテーマやプラグインなどで設定が異なるため、個別に調整してください。

動作確認

LSCache Check というサイトで、LiteSpeed Cache が正しく動作しているかチェックできます。

LSCache Check
Does my site's cache work? Verify LSCache service on any URL.

意図したとおりに動作していることが確認できました。

まとめ

今回は $DOC_ROOT より上に WordPress を配置してみましたが、画像キャッシュのコンテキストで苦労しました。

  • $DOC_ROOT:/var/www/vhosts/ホスト名/
  • WordPress:/var/www/wordpress/
  • phpMyAdmin:/usr/share/phpMyAdmin/

OLS 公式の通りに設定すると phpMyAdmin で画像が表示されなくなるなど、トラブルが多発しました。

同じバーチャルホスト上でディレクトリごとに配置する場合は、$DOC_ROOT 配下に見た目通りに配置したほうがトラブルが少ないように思われます。

次回はメールサーバーの構築をしていきます!

コメント

タイトルとURLをコピーしました