Moodle 5.3 日本語ドキュメント(第一次翻訳):ほぼすべてのページが日本語に翻訳されました。まだ第一次翻訳のため、不自然な表現や誤訳が残っている可能性があります。お気づきの点があれば、ページコメントでお知らせいただくか、直接編集してください。スクリーンショットの多くは、まだ英語版の画面のままです。以前のバージョンの日本語ドキュメントは、バージョンメニューからご覧いただけます。
Moodle 5.3 Japanese documentation (first-pass translation): almost all pages have now been translated into Japanese. As this is a first pass, some wording may read unnaturally or be mistranslated. If you notice anything, please leave a page comment or edit the page directly. Most screenshots still show the English interface. Japanese documentation for earlier versions is available from the version menu.

OpenLiteSpeed

提供: MoodleDocs
移動先:案内、検索

OpenLiteSpeedは比較的新しいウェブサーバで、Linux上でApacheやNginxに代わる選択肢として徐々に人気を高めつつあります。 主なセールスポイントの1つ(あるいは2つ)は、変更を加えたり、ウェブサーバを(リモートからも含めて)「グレースフル」に再起動したりできるWeb GUIコンソールが含まれていること、そしてLSCacheが含まれていることです。LSCacheは、表示されるページの種類に応じて、パブリックキャッシュまたはプライベートキャッシュのいずれかでPHPページをキャッシュする機能を提供します。

執筆時点では、このページはサーバ自体のインストール方法についてというよりも(ステップバイステップのガイドを探している場合は、DigitalOceanに「LOMP」スタックのインストールに関する優れた解説があります)、Moodle専用にサーバをインストールおよび設定する際に遭遇する可能性のある相違点や細々とした設定についての内容が中心になります。

初期設定

初期設定は実際のところ比較的簡単で、ほとんどの手順を案内してくれます。一部の人にとって新しいかもしれないのが、「リスナ」と「バーチャルホスト」という概念です。バーチャルホストは文字どおりのもので、1台のサーバで複数のドメインに応答できるようにします。設定は各ホストで独立していますが、共通の設定はサーバレベルで設定でき、その場合は各ホストに継承されます。ただし、ホストレベルで適用した設定はサーバ全体の設定よりも優先されます。ここで、PHPパッケージと、そのOpenLiteSpeed版のパッケージについても触れておきます。名前はPHPのものと同じですが、接頭辞として「ls」が付きます。例:lsphp82-curl、lsphp82-intl。「82」はパッケージのPHPバージョン、つまりv8.2です。Moodle 4.0より後のバージョン(>4.0)を動作させるには、実際に上記の2つのパッケージ(lsphpXX-curlおよびlsphpXX-intl)が必要です。

フォルダの場所

これらのフォルダをどこに置くべきかについてのガイダンスはあまりありませんが、適切なパーミッションが設定されていれば、場所はほとんど問題になりません(詳細はセキュリティの推奨事項を参照してください。また、Internal Pointersにもこれに関するかなり良いハウツーがあります)。筆者の環境では、ウェブサーバのファイルに/var/www/moodleを、MoodleDataフォルダに/var/moodleDataを使用しました。ウェブサーバの場所として/var/www/moodleを使用する場合は、「Document Root」をこの場所に向ける必要があります。これについては後述します。

OLSの実行ユーザの変更

Linuxでは、OpenLiteSpeedはデフォルトでユーザ「nobody」として実行されるように設定されます。Moodleがmoodledataに書き込めるようにする必要があるため、適切なユーザとグループが必要です。筆者の場合、これは常に標準のwww-dataユーザおよびグループでした。ただし、ユーザとグループを変更する場合は、OpenLiteSpeedを再インストールする必要があります。以下は、Moodleフォーラムで別のユーザが提案した手順です(Jonさん、ありがとう!):

#stop lsws: 
systemctl stop lsws

#change user and group in /etc/local/lsws/conf/httpd_config.conf to www-data

#remove the lsws temp directory: 
rm -rf /tmp/lshttpd

#reinstall openlitespeed to re-create profiles under www-data user
apt-get -y install --reinstall openlitespeed

リスナ

リスナとは、基本的にHTTPおよびHTTPSのトラフィックを待ち受けるもので、どのポートで待ち受けるかもこれで決まります。残念ながら、他のソフトウェアのように複数のポートにバインドすることはできないため、通常はHTTPとHTTPS用に、それぞれポート80と443で2つのリスナを作成する必要があります。幸い、Moodleの最近のバージョン(例:4.2)では「CFG -> wwwroot」に設定された値に自動的にリダイレクトされるようなので、この値がhttps://に設定されていれば、MoodleサイトはいずれにせよHTTPSに自動的にリダイレクトされ、手順が1つ省けます。やった!

バーチャルホスト

まずはバーチャルホスト名(VH_NAME)です。筆者は完全修飾ホスト名(例:moodle.mysite.edu)にしましたが、報告すべき問題はありませんでした。

バーチャルホストの設定中に注意すべき小さな点として、「Virtual Host Root」の入力を求められます。これはドキュメントルートではなく、バーチャルホストの設定ファイルが保存される場所です。バーチャルホストルートのデフォルトの場所は通常問題ないため、筆者はそれを使用しました(いくつかのサブフォルダの奥にありますが、見つけることはできます)。ドキュメントルートは、実際のウェブサーバのファイルを保存したい場所です。筆者のインストールでは、比較的標準的な構成にするため、ドキュメントルートを/var/www/moodleに設定しました。 ドキュメントルートは入力を求められないため、手動で設定する必要があります。これはVirtual Host > General > Document Rootにあります。

また、執筆時点(2023年7月)では、サーバルートの場所も明示されておらず、それを設定するためのオプションがあるだけです。Linuxではデフォルトで/usr/local/lswsにあります。この場所は後で、特にサブロケーションに関して役立つので、覚えておくとよいでしょう。

PHPスクリプトの実行

PHPスクリプトを実行するには、作成したバーチャルホストの「Enable Scripts」オプションを変更する必要があります。具体的には、Web GUIのBasic > Security > Enable Scriptsにあります。

SSL証明書とHTTPS

SSL証明書は引き続きCertbotで作成および自動更新できます。OpenLiteSpeedには、その方法をかなりわかりやすく解説したドキュメント(OpenLiteSpeedドキュメント - SSL)があります。

PHPの最適化とキャッシング

ここからが楽しい部分です。セットアップ後に、馬力を追加せずに(つまり効率的な方法で)高速化する方法です :D

PHPの最適化

PHPの最適化(OpCacheの設定を含む)は他のウェブサーバの場合とほぼ同じで、引き続き主にphp.iniファイルで行います。パフォーマンスの推奨事項の内容は、特にPHP設定に関して、ほぼそのまま当てはまります。ただし、php.iniファイルの場所は異なり、デフォルトでは/usr/local/lsws/lsphpXX/etc/php/X.X/litespeed/php.iniにあります(XX/X.Xはインストールしたphpのバージョンです)。

これは、LSがPHPおよびPHPのバージョンを扱う方法によるものです。LSは実際に、ウェブサーバで使用するための別のphpパッケージをインストールします(より正確には、自分でインストールします)。そのパッケージ名は、APTにある通常のphpXXではなくlsphpXXです。また、子プロセスなどの点でPHPの呼び出し方も少し異なりますが、筆者は詳細をよく把握していません。詳しい情報はLSSのドキュメントにあります。これにより、cronの呼び出し方によってはcronで問題が発生することもあります。これについては最後のほうで説明します。

また、OpenLiteSpeedは、共有ホスティングと専用ホスティングの両方について、サーバレベルの最適化に関するドキュメントを作成しています。これもドキュメント内にあります。

HTTP3/QUIC

HTTP3/QUICは、基本的にウェブページをより速く配信するように設計された新しいプロトコルです。バックグラウンドで何やら高度なことをしているのですが、筆者はあまり詳しく調べていないので、ここでわかったふりをするのはやめておきます。ただし、執筆時点でこれをサポートしている数少ないウェブサーバの1つであり、なかなか優れています。有効にするのも非常に簡単で、ウェブサーバでUDPトラフィック用にポート443を開くだけです。LSが変更を検出し、HTTP3/QUICを魔法のように自動で有効にします。また、これは提供元が運営する確認用のウェブサイトでも確認でき、その名前もずばり「HTTP/3 Check」です。

LSCache

最後に、最も大きな違いをもたらす可能性がある部分、LiteSpeed Cacheです。これはかなり長い話になりうるので、それが何であり、どのように機能するかについて、ドキュメントを事前に読んでおくことをお勧めします。幸い、ドキュメントはそれほど長くなく、キャッシングの基本や、パブリックキャッシュとプライベートキャッシュが必要な理由についても、非常に簡潔に説明しています。それらをすべて理解したものとして、以下に続けます。

さて、Moodleは当然ながら、ログインページを除くすべてのページにユーザ固有のデータ(例:名前や、コースなどの表示内容)が含まれているため、パブリックキャッシュには適していません。実際、筆者はどうなるか見るために試してみましたが、他のユーザの名前が表示されたり、ページがそのユーザ向けにキャッシュされたりといった奇妙な問題が発生します。筆者が使用したテスト学生はコースへのアクセスが限られていたため、筆者がログインしたときには、その学生のコースしか表示されず、それ以外は何も表示されませんでした。「サイト管理」タブさえもです!サイト管理者にとって理想的とは言えないため、要するに、シンプルに保ちたい場合はパブリックキャッシュを有効にしないことをお勧めします。

これでプライベートキャッシュが残ります。これを有効にするとうまく機能し、パフォーマンスも向上します(ここでも、これが有効になっているか/機能しているかを確認するためのサイトがあり、「LSCache Check」という名前です。ぴったりの名前で、筆者はこういう命名が好きです)。ただし、Moodleのセットアップの規模とユーザ数を考慮する必要があります。筆者らのセットアップはかなり小規模なので、キャッシングによるディスク容量やメモリの使用量はそれほど多くありませんが、大きなメリットがあります。とはいえ当然ながら、規模が大きくなり、たとえば約1000人のユーザそれぞれについて各ページのコピーを保存しなければならなくなると、これは問題になる可能性があります。そのため、自身の環境にどう当てはまるかを確認し、そこから進めてください。

実際にキャッシュを有効にする方法については、Web GUIからServer Configuration > Modulesに移動すると、その下にcacheがあらかじめ読み込まれています。ここにはいくつかのオプションがありますが(これもドキュメントで説明されています)、キャッシングを制御/有効化するための主なものは、checkPrivateCache、checkPublicCache、enableCacheおよびenablePrivateCacheです。インストールに応じて、これらを1または0に設定してください。1が有効、0が無効です。

また、書き換えルールを使用して、何をキャッシュするかを設定することもできます。これについてはドキュメントといくつかの小さな例がありますが、残念ながら筆者はMoodleの.phpファイル内の要素に十分詳しくないため、キャッシングルールを書くことはできません。しかし、これは当然ながら、すべてが最適にキャッシュされる(パブリックデータはパブリックキャッシュに、プライベートデータはプライベートキャッシュに)ルールを作成できる可能性があるということなので、特に誰かがこれを解明すれば、将来的に間違いなくメリットがあると思います。解明できた場合は、ぜひフォーラムに投稿してください。ここに追加します!

X-Sendfile

LSWSはX-Sendfileをサポートしていますが、ドキュメントでは「Internal Redirect」と呼ばれており、実際のヘッダは「X-LiteSpeed-Location」です。残念ながら、筆者らのサイトではこれを動作させることができませんでした。リダイレクトがパスではなくURIであることに関係しているのではないかと考えていますが、完全には解明できませんでした。もし解明/修正できた場合は、フォーラムでお知らせください。ここに追加します!

cronの潜在的な問題

これは少し変わった問題で、システムにインストールしたパッケージや、cronの設定方法によってはエラーが発生する可能性があります。lsphpXX版のパッケージをインストールした場合は、実装に応じて、cronがこれらのパッケージを使用するように指定する必要があります。crontabでは、通常のphpパッケージ(/usr/bin/php)ではなく、lsphpパッケージ(/usr/local/lsws/lsphpXX/bin/php)を指定します。

それ以外の場合は、必要な依存関係とともに通常のphpパッケージ(phpXX、phpXX-common、phpXX-mbstring、phpXX-intl、phpXX-curl)をインストールし、cronがそのバージョンのPHPを使用する(指す)ようにする必要があります。記載されている追加パッケージがすべて揃っていないと、依存関係が不足するため、cronは正しく機能しません。動作を確認する簡単な方法は、スケジュールタスクのキューとアドホックタスクのキューの両方からタスクを手動で実行してみて、出力を確認することです。何かが不足していれば知らせてくれます(あらゆる技術ソリューションが不満を伝えるときと同じように、エラーを出すことによって)。

成功!

ここまで来たなら、理論上は、きちんと動作し、うまくいけばかなり快調に動いているサーバができているはずです。筆者らのセットアップでは、全体的にパフォーマンスが目に見えて速くなり(これも主にキャッシングによるもので、キャッシュミスの場合はページの読み込み時間が大幅に長くなりました)、Moodle Benchmarkのスコアも改善しました。173ポイント(つまり、すべてのタスクを完了するのに1.730秒)から31ポイント(すべてのタスクを完了するのに0.310秒なので、小さくない差です)まで下がりました。MariaDBもこの要因の1つでしたが、より新しいソフトウェア/パッケージを使用することで、全体的にパフォーマンスが向上したことは明らかです。

残る疑問の1つは、これが自身のインストールに適しているかどうかでしょう。OpenLiteSpeedには、何ができて何ができないかについてのドキュメントや、ApacheおよびNginxとの比較があります。また、DigitalOceanにもApacheとNginxの比較(Apache vs Nginx: Practical Considerations)があり、主にこれら2つのサーバの選択肢について説明していますが、自身のニーズに最も適したものを判断するための、さらなる背景知識が得られるかもしれません。

関連項目

OpenLiteSpeedドキュメント

Internal Pointers - Linuxサーバ上のウェブサイトに適したフォルダパーミッション