Red Hat Enterprise Linix 9 に http/3 対応の Web サーバー(OpenLiteSpeed)を構築する

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

前回からだいぶ間が空いてしまいましたが、ConoHa の VPS にインストールした RHEL9 上に Web サーバーを導入していきます。

ちょうど最近 OpenLiteSpeed のリポジトリに CentOS 9 用が追加されていましたので、今回は LiteSpeed で構築し、http/3 にも対応させようと思います。

OpenLiteSpeed の導入手順

リポジトリの追加

基本的に公式サイトの手順通りに進めれば問題ありません。

Install OLS from LiteSpeed Repositories – OpenLiteSpeed

epel リポジトリは導入済みなのでスキップしましたが、まだの方は下記コマンドを実行してください。

準備が整ったら OpenLiteSpeed をインストールします。

GPG 鍵のインポートが必要な場合は「Y」でインポートしてください。

※インストールするとサービスが自動的に起動し、OS 起動時の自動実行にも追加されるので systemctl で start や enable は必要ありませんでした。

ファイヤーウォールの設定

OLS の管理画面は 7080 ポートを使用するため、管理者のみアクセスできるようにファイヤーウォールの設定を変更します。

また、HTTP/3 を有効にするためには UDP の 443 ポートも開放する必要があります。

上記を参考に nftables の設定ファイルを修正し、サービスをリスタート(systemctl restart nftables.service)してください。

ログファイルの場所をまとめる

ログファイルが作成されるディレクトリが /usr/local/lsws/logs のため、/var/log/lsws にシンボリックリンクを作成して纏めておきます。

OLS 管理画面から各種設定

管理画面にログイン

初期パスワードは /usr/local/lsws/adminpasswd に記載されていますので、下記コマンドで参照できます。

ログインできたら、右上の「English」の部分をクリックして、日本語に変更しておきましょう。

また、最初にやっておく事として WebAdminの設定 > 一般 > ユーザー > 編集 と辿っていき、管理者パスワードを変更しておきましょう。

http ポートを 80 に変更

OLS の http ポートはデフォルトで 8088 ポートなので、80 番に変更していきます。

左のメニューから「リスナー」を開き、Default リスナーの「アクション」の項目にある虫眼鏡のアイコン(表示)をクリックします。

Default リスナーの一般設定が開きますので、アドレス設定の右にある編集ボタンをクリックします。

アドレス設定画面が開きますので、ポートを 80 に変更して保存します。

OLS を再起動し、ブラウザの新しいタブで「http://IPアドレス」にアクセスしてみます。

初期画面が表示されたら設定完了です。

SSL 証明書の取得

今回はこの手順は省略しますので、過去の記事などを参照してください。

ConoHa のユーザーなら API を使ったワイルドカード証明書がお勧めです。

VPS 割引きっぷを使っている方は、アルファ SSL でも大丈夫です。

SSL 用リスナーの追加

再び OLS の管理画面から「リスナー」を選択し、リスナーリストを追加します。

ここではリスナー名を「SSL」とし、ポートを「443」に指定、セキュアを「はい」にして保存しました。

続いて SSL のタブに移動し SSL 秘密鍵 & 証明書の項目に、先ほど Let's Encrypt で取得した鍵と証明書を指定して保存します。

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

SSL プロトコルの編集画面で TLS v1.2 と TLS v1.3 にチェックを入れて保存します。

暗号の欄は空白にしておく事で、ベストプラクティスに従ったデフォルトの暗号を使用してくれるそうなので、下手に入力しない方が良さそうです。

セキュリティ & 機能の編集画面で下記のように設定します。

  • SSL再交渉保護:はい
  • ALPN:SPDY/3HTTP/2HTTP/3 にチェックを入れる

保存して OLS を再起動しましょう。

管理画面の SSL を変更

OLS 管理画面に https://ドメイン名:7080 でアクセスすると証明書エラーになるため、必要に合わせて変更しておくと良いでしょう。

  1. WebAdmin の設定からリスナーに進み「adminListener」を選択します。
  2. SSL 秘密鍵 & 証明書 の編集画面から下記を修正します。
  • 秘密鍵ファイル:$SERVER_ROOT/admin/conf/webadmin.key
  • 証明書ファイル:$SERVER_ROOT/admin/conf/webadmin.crt
  • 証明書チェーン:未設定

  • 秘密鍵ファイル:/etc/letsencrypt/live/ドメイン名/privkey.pem
  • 証明書ファイル:/etc/letsencrypt/live/ドメイン名/fullchain.pem
  • 証明書チェーン:はい
  1. 保存して OLS を再起動しましょう。

バーチャルホストの追加

続いてバーチャルホストを追加します。

Virtual Host Root はどこでも良いのですが、設定ファイルは「$SERVER_ROOT/conf/vhosts/$VH_NAME/vhconf.conf」にするのが推奨されているので、その通りにしました。

※保存しようとすると警告が出ますので、「CLICK TO CREATE」をクリックして設定ファイルを作成します。

作製したバーチャルホストの「一般」の Document Root を設定します。$VH_ROOT/html がお勧めのようです。

次に「コンテキスト」に移動し、HSTS(HTTP Strict Transport Security)の設定や、セキュリティ対策を施しておきます。

Setting up Security Headers on OpenLiteSpeed – OpenLiteSpeed
  • URI:/
  • 場所:$DOC_ROOT/
  • アクセス可能:はい
  • Header Operations:Strict-Transport-Security: max-age=31536000; includeSubDomains
    Content-Security-Policy "upgrade-insecure-requests;connect-src *"
    Referrer-Policy strict-origin-when-cross-origin
    X-Frame-Options: SAMEORIGIN
    X-Content-Type-Options: nosniff
    X-XSS-Protection 1;mode=block
    Permissions-Policy: geolocation=(self "")

リスナーにバーチャルホストを紐づける

再びリスナーの項目に移動し、SSL に対して作成したバーチャルホストをマップします。

保存して OLS を再起動すれば、設定完了です。

Virtual Host Root にテスト用のファイルを設置し、「https://ドメイン名」でアクセスできることを確認してください。

http/3 で通信できているか確認する

http/3 通信ができているかチェックしてくれるサイトがあるので、そちらを利用してみます。

HTTP/3 Check
Is my site using HTTP3? Check HTTP3 service on any URL. Test QUIC service, too.

ドメインを入力して CHECK ボタンをクリックするだけで、簡単に診断することができます。

QUIC と HTTP/3 の両方に対応していることが確認できました。

SSL の安全性について確認する

Qualys SSL Labs で、SSL の安全性についても確認をしておきましょう。

SSL Server Test (Powered by Qualys SSL Labs)
A comprehensive free SSL test for your public web servers.

評価 A+ なので安心ですね。

php 8.2 にアップデートする

標準でインストールされる php のバージョンは 7.4 なので、現時点で最新バージョンの 8.2 をインストールしていきます。

新しい外部アプリとして追加

OLS の管理画面メニューから「サーバー設定」⇒「外部アプリ」と辿り、新しい外部アプリを追加します。

  • タイプ:LiteSpeed SAPI アプリ
  • 名前:lsphp82
  • アドレス:uds://tmp/lshttpd/lsphp82.sock
  • コマンド:$SERVER_ROOT/lsphp82/bin/lsphp

スクリプトハンドラを変更

一度 OLS を再起動し「サーバー設定」⇒「スクリプトハンドラ」の画面を開きます。

php のサフィックスに対するハンドラ名を、先ほど追加した lsphp82 に変更して保存します。

再び OLS を再起動します。

php のバージョンを確認

Virtual Host Root に phpinfo.php を作成します。

ブラウザからアクセスすると、PHP Version 8.2 になっていることが確認できました。

確認ができたら phpinfo.php は削除しておきましょう。

Perl スクリプトにも対応させる

Perl による CGI スクリプトを動かす必要もあったので、対応させていきます。

FCGI のインストール

まずは FCGI をインストールします。

外部アプリの追加

OLS の管理画面メニューから「サーバー設定」⇒「外部アプリ」と辿り、新しい外部アプリを追加します。

  • タイプ:FastCGI アプリ
  • 名前:PerlFastCGI
  • アドレス:uds://tmp/lshttpd/perl.sock
  • コマンド:$SERVER_ROOT/fcgi-bin/lsperld.fpl

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

スクリプトハンドラの追加

次に「サーバー設定」⇒「スクリプトハンドラ」の画面を開き、新しいスクリプトハンドラの定義を追加します。

  • サフィックス:cgi, pl
  • ハンドラタイプ:Fast CGI
  • ハンドラ名:PerlFastCGI

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

コンテキストの追加

バーチャルホストのリストから Perl スクリプトを有効にしたいホストを選択し、コンテキストのタブから CGI コンテキストを追加します。

バーチャルホスト直下の /cgi-bin/ ディレクトリに perl スクリプトを配置する設定例は下記の通りです。

  • URI:/cgi-bin/
  • パス:$VH_ROOT/cgi-bin/

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

Perl スクリプトの配置

$VH_ROOT/cgi-bin/ にテスト用のスクリプトを作成します。

パーミッションを 755 に変更します。

ブラウザからアクセスして、表示できるか確認してください。

表示が確認出来たら、test.cgi は削除しておきましょう。

まとめ

管理画面からほとんどすべての操作ができるのはとても便利だと感じました。

最初はどこを操作したら良いか戸惑う部分もありましたが、慣れれば何とかなりそうですね。

以上で基本的な OpenLiteSpeed の設定は完了です。

次回はデータベースサーバーを構築します。

コメント

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