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.

Apache

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

このページは更新が必要です。 更新を行い、完了したらこのテンプレートを削除してください。


この記事は「Apache HTTPサーバ」を対象としています

Apache HTTPサーバは、(PHPスクリプト言語とともに)Moodleを「動かす」ソフトウェアです。なお、代替となるもの(たとえば、Windows上のIIS、LinuxやMacOS上のNginx)もありますが、Apache HTTPサーバはすべてのプラットフォームで非常によく使われています。

Apacheのインストール

ほとんどのプラットフォーム向けのインストーラを http://httpd.apache.org/download.cgi から入手できます。公式のインストール手順はこちらです:http://httpd.apache.org/docs/2.0/install.html 。Linuxを使用している場合は、可能であればパッケージ版を使用することをお勧めします。たとえば、Debian/Ubuntuでは次のコマンドを実行するだけです:

sudo apt-get install apache2

手順については、使用しているプラットフォームのドキュメントを参照してください。必要であれば、Apacheはソースから簡単にビルドできます。また、PHPのドキュメントには、ApacheとPHPを一緒にビルドする方法についての記事があります。ただし、そうする必要があることはほとんどありません。

パフォーマンス

パフォーマンスの推奨事項を参照してください。

ルーティング

Moodle 4.5以降、Moodleにはルーティングエンジンが含まれています。リクエストを処理するには、FallbackResourceディレクティブを使用して設定する必要があります:

DocumentRoot /var/www/moodle/public
<Directory /var/www/moodle/public>
    AllowOverride None
    Require all granted
    FallbackResource /r.php
</Directory>

FallbackResourceは、サイトのルートからの相対パスです。

注: Moodle 5.1以降、/publicディレクトリが導入されました。ウェブからアクセス可能なファイルのみが提供されるように、Apacheのドキュメントルートをこのディレクトリ(例:/var/www/moodle/public)に設定する必要があります。詳細は再構成ガイドを参照してください。


Slasharguments

スラッシュ引数の使用で説明しているように、Moodleのさまざまな機能が正しく動作するには、スラッシュ引数機能が必要です。

有効にするには、httpd.conf、またはローカルディレクトリの.htaccessファイルに次の行を追加します:

AcceptPathInfo On

注: ローカルのMoodleインストールフォルダで「.htaccess」を使用する場合は、まず「httpd.conf」で「AllowOverrideディレクティブ」を追加または有効にする必要がある場合があります。

注: .htaccessファイルを使用すると、サーバのパフォーマンスが低下します!

Ionos(旧1&1)の共有ウェブホスティングを使用している場合、上記の方法は機能しません。PHPをCGIとして使用する場合の既知のバグがあるためです。解決策は、moodleディレクトリに次の内容のphp.iniファイルを作成することです:

cgi.fix_pathinfo = 0

また、Ionosでは、スクリプトが実行されるすべてのディレクトリにこのphp.iniが存在する必要があります。次の手順を使用して、すべてのサブディレクトリのphp.iniから元のphp.iniファイルへのリンクを作成してください。

cd your_moodle_directory
find -type d -exec ln -s $PWD/php.ini {}/php.ini \;

出典:Ionos php.ini Help

これは、他の共有ホスティング業者にも当てはまる場合があります。

40xエラーの処理

これにより、存在しないファイルのエラーページにMoodleのテーマを適用できます。

ErrorDocument 404 /error/index.php
 
# This sends any 403 from apache through to the same page, but also
# overrides the http status with 404 instead for better security.
ErrorDocument 403 /error/index.php?code=404

内部パスの秘匿

mod_rewriteを有効にして(Ubuntuでは必須)、Apacheを再起動します。

sudo a2enmod rewrite

sudo systemctl restart apache2
RewriteEngine On
 
RewriteRule "(\/vendor\/)" - [F]
RewriteRule "(\/node_modules\/)" - [F]
RewriteRule "(^|/)\.(?!well-known\/)" - [F]
RewriteRule "(composer\.json)" - [F]
RewriteRule "(\.lock)" - [F]
RewriteRule "(\/environment.xml)" - [F]
Options -Indexes
RewriteRule "(\/install.xml)" - [F]
RewriteRule "(\/README)" - [F]
RewriteRule "(\/readme)" - [F]
RewriteRule "(\/moodle_readme)" - [F]
RewriteRule "(\/upgrade\.txt)" - [F]
RewriteRule "(\/UPGRADING\.md)" - [F]
RewriteRule "(phpunit\.xml\.dist)" - [F]
RewriteRule "(\/tests\/behat\/)" - [F]
RewriteRule "(\/fixtures\/)" - [F]
RewriteRule "(\/upgrade\.txt|UPGRADING\.md|UPGRADING\-CURRENT\.md)" - [F]

注: 上記のルールによって、必要なコンテンツ(たとえば「vendor」ディレクトリを含むSCORMパッケージ)の読み込みがブロックされる場合があることに注意してください。

上記のApacheのルールはセキュリティ上は問題ありませんが、report/security checks/[すべての公開およびプライベートパスをチェックする]のMoodleのチェックに準拠したい場合は、次のルールを使用すると、403([F])の代わりに404が返されます。

    RewriteEngine On

    RewriteRule "(\/vendor\/)" - [L,R=404]
    RewriteRule "(\/node_modules\/)" - [L,R=404]
    RewriteRule "(^|/)\.(?!well-known\/)" - [L,R=404]
    RewriteRule "(composer\.json)" - [L,R=404]
    RewriteRule "(\.lock)" - [L,R=404]
    RewriteRule "(\/environment.xml)" - [L,R=404]
    RewriteRule "(\/lib\/classes)" - [L,R=404]
    RewriteRule "(\/install.xml)" - [L,R=404]
    RewriteRule "(\/README)" - [L,R=404]
    RewriteRule "(\/readme)" - [L,R=404]
    RewriteRule "(\/moodle_readme)" - [L,R=404]
    RewriteRule "(\/upgrade\.txt)" - [L,R=404]
    RewriteRule "(phpunit\.xml\.dist)" - [L,R=404]
    RewriteRule "(\/tests\/behat\/)" - [L,R=404]
    RewriteRule "(\/fixtures\/)" - [L,R=404]
    RewriteRule "(\/upgrade\.txt|UPGRADING\.md|UPGRADING\-CURRENT\.md)" - [L,R=404]

また、メインディレクトリのOptionsルールでIndexesを定義しないようにしてください。

SSL

Moodleには、サイト全体、またはログインページのみでHTTPSを有効にするオプションがあります。いずれのオプションでも、ウェブサーバがSSL用に設定されている必要があります。

  • サイト全体のHTTPSは、config.phpの「wwwroot」パラメータでhttp://<url>をhttps:// <url>に変更することで有効になります。
  • ログインのみのHTTPSは、「loginhttps」パラメータを設定することで有効になります。この場合、wwwrootのスキーマはhttp://のままにします。

注:ログインのみのhttpsは非推奨となり、Moodle 3.4で削除されました:https://tracker.moodle.org/browse/MDL-42834

Moodle 3.3以前では、管理画面の管理 > セキュリティ > HTTPセキュリティでボタンにチェックを入れることで、ログインのみのhttpsを利用できます。(警告に注意し、下記のSSLセクションを参照してください。)

Moodle 2.3より前では、クライアント側のキャッシュに関する従来の制限のため、サイト全体をHTTPSで運用することは推奨されていませんでした。クライアントのブラウザが「Cache-Control: public」方式をサポートしていれば、現在はそのようなことはありません。このバージョンのMoodleでサポートされているすべてのブラウザは、この方式をサポートしています。

HTTPSを使用するには、SSL証明書を入手する必要があります。方法は2つあります:

  • 自己署名証明書を生成します。これは(たとえば)イントラネットでは問題ありませんが、公開インターネットには適していません。公開して使用すると、証明書が信頼されていないという警告がユーザに表示されます。
  • ベンダから証明書を購入します。価格や付加価値サービスは驚くほど多様です。無料の証明書を提供しているホスティング業者もあります。

Debianは、同プロジェクトのwikiで自己署名証明書をインストールする手順を提供しており、SSL用のApacheの設定に関する一般的な情報も掲載しています。 ベンダの証明書を購入した場合は、通常、そのインストール手順が提供されます。

Apacheの基本的なSSL設定は、次のようにまとめられます:

Listen 443
NameVirtualHost *:443
<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /path/to/your/certificate.crt
    SSLCertificateKeyFile /path/to/your/certificate.key
    ...
</VirtualHost>

ロードバランサのヒント(AWS)

インフラストラクチャの前段でAWSのロードバランサを使用している場合は、上記の設定の一部をロードバランサで行い、トラフィックがその先に転送されないようにできます。以下は、ファイルを隠すために適用した設定です。既知の制限により、いくつか考慮すべき点があります:

  • Application Load Balancerあたりのルールは合計100個まで
  • ルールあたりの条件値は5個まで
  • ルールあたりのワイルドカードは5個まで
  • ルールあたりの重み付きターゲットグループは5個まで:

[
    {
        "Conditions": [
            {
                "Field": "path-pattern", 
                "Values": [
                    "*/.*", 
                    "*/upgrade.txt", 
                    "*/db/install.xml",
                    "*/README.md"
                ], 
                "PathPatternConfig": {
                    "Values": [
                        "*/.*", 
                        "*/upgrade.txt", 
                        "*/db/install.xml",
                        "*/README.md"
                    ]
                }
            }
        ], 
        "Actions": [
            {
                "Type": "fixed-response", 
                "Order": 1, 
                "FixedResponseConfig": {
                    "ContentType": "text/html", 
                    "MessageBody": "<html>\n<head><title>404 Not Found</title></head>\n<body>\n<center><h1>404 Not Found</h1></center>\n<hr>\n</body>\n</html>", 
                    "StatusCode": "404"
                }
            }
        ]
    }, 
    {
        "Conditions": [
            {
                "Field": "path-pattern", 
                "Values": [
                    "*/composer.json", 
                    "*/Gruntfile.js",
                    "*.lock", 
                    "*/environtment.xml",
                    "*/readme.txt"
                ], 
                "PathPatternConfig": {
                    "Values": [
                        "*/composer.json", 
                        "*/Gruntfile.js",
                        "*.lock", 
                        "*/environtment.xml",
                        "*/readme.txt"
                    ]
                }
            }
        ], 
        "Actions": [ #### Same as above
            ...
        ]
    }, 
    {
        "Conditions": [
            {
                "Field": "path-pattern", 
                "Values": [
                    "*/fixtures/*", 
                    "*/behat/*", 
                    "*/phpunit.xml"
                ], 
                "PathPatternConfig": {
                    "Values": [
                        "*/fixtures/*", 
                        "*/behat/*", 
                        "*/phpunit.xml"
                    ]
                }
            }
        ], 
        "Actions": [ #### Same as above
            ...
        ]
    }
]

関連項目