インターネットインフォメーションサービス
インターネットインフォメーションサービス(IIS)は、Windowsサーバおよび特定のクライアントバージョンのWindowsにバンドルされているWebサーバソフトウェアです。 Apache Webサーバはコミュニティサポートがはるかに優れており、ApacheでMoodleを実行する場合は通常問題が少ないことに注意してください。 PHPは64ビットWindowsでも32ビットに制限されているため、Windows OSは大規模なインストールには適していません。代わりに、Linuxまたはその他のUNIXライクなオペレーティングシステムの使用を検討してください。
IISのインストール手順(Windows 7以降)
- コントロールパネルに移動し、プログラムをクリックして、Windowsの機能の有効かまたは無効化に移動します
- "インターネットインフォメーションサービス" と "インターネットインフォメーションサービス / アプリケーション開発機能 / CGI" にチェックマークを付けます
- Microsoft Web PlatformInstallerをインストールします
PHPのインストール手順
公式のMSプラットフォームインストーラーのみを使用することを強くお勧めします。これにより、必要なすべてのコンポーネントが自動的にインストールされ、PHPマネージャで簡単に構成できます。手動インストールの試みは失敗するか、Moodleが正しく機能しない場合があります。残念ながら、MSは通常最新バージョンのPHPを配布していないため、手動でダウンロードする必要がある場合があります。
- Microsoft Web PlatformInstallerをインストールします
- Web PlatformInstallerを使用して最新のPHP7.2.xをインストールする
- [オプション] Web PlatformInstallerを使用してURLRewrite2.0をインストールする
オプションで、必要なコンポーネントを手動でインストールできます。
- IIS用PHPマネージャをダウンロードしてインストールします
- 最新のPHP 7.2.x VC15x64非スレッドセーフを[1]からダウンロードします。 64ビットWindowsでは、x64を選択する必要があります。それ以外の場合、x86
- ZipファイルをC:\PHP\などのディレクトリに抽出します
- Visual Studio2017用のVisualC ++再頒布可能パッケージをインストールする[2] - 64ビットWindowsにrelease / VC_redist.x86.exex86および[3]の両方をインストールする
- インターネットインフォメーションサービス(IIS)マネージャを開きます - このコンピューターを右クリックし、管理を選択します
- PHPマネージャアイコンをクリックします
- 新しいPHPバージョンを登録します - C:\PHP\php-cgi.exeを選択します
警告: PHPはIISのFastCGIを介して構成する必要があります。古いCGIインターフェースには、一部のファイル名に問題があることがわかっています。
PHP構成手順
- PHP構成をPHPマネージャが推奨する値に設定します
- PHPマネージャで必要な拡張子を有効にします:php_intl.dll、php_pgsql.dll
- OPcache拡張機能を有効にする
- PHP.iniでタイムゾーンを設定する
- PHP.iniで適切なメモリ制限を設定する
IIS構成手順
- 以下に説明するURL書き換えの設定
- 詳細なエラーページを表示するようにIISを構成します。
- 非常に長いCGIタイムアウトを設定します-1時間以上。
- IISマネージャで、Moodle dirrootディレクトリを新しい仮想ディレクトリとして追加するか、サイトディレクトリとして設定します
スラッシュ引数
スラッシュ引数の使用で説明されているように、Moodleのさまざまな機能が正しく機能するには、関数 スラッシュ引数 が必要です。
IIS 7は、デフォルトで相対パス引数をサポートする必要があります。それが機能しない場合は、php.iniで以下を有効にしてみてください
cgi.fix_pathinfo = 1
URL書き換え
以下に説明するようにレジストリを変更できない場合は、書き換えルールの手動構成を試すことができます。 Microsoft Web Platform Installer を介したPHPのインストールでは、必要な URL Rewrite 2.0 モジュールがインストールされます。
以下の書き換えルールを追加して、MoodleでのUnicodeファイル名のサポートを有効にし、YUIファイルの提供を破る内部ファイル長の制限を回避します。
- パターンに一致 - 正規表現 -
^([^\?]+?\.php)(\/.+)$
- アクション - 書き換え -
{R:1}\?file={R:2}
- クエリ文字列を追加 - 有効
- 後続のルールの処理を停止します - 有効
オプションのUTF-8ファイル名の修正
デフォルトでは、IISはMoodleにアップロードされたファイルのUnicode文字を処理できません。これにより、MoodleサイトでJavascriptが機能しなくなったり(ナビゲーションを拡張できないなど)、CSSスタイルが壊れたりする可能性があります。
サーバ変数にUTF-8エンコーディングを使用する および KB2277918ホットフィックスを使用してWindows7およびWindowsServer 2008R2のIIS7.5でUTF-8エンコーディングをサポートする方法を参照してください。
実行:
reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\w3svc\Parameters /v FastCGIUtf8ServerVariables /t REG_MULTI_SZ /d REQUEST_URI\0PATH_INFO
CGIタイムアウト
デフォルトでは、IISは5分間の活動後にPHPスクリプトの実行を停止するように構成されています。これは、アップグレードやcronなどの長時間実行されるMoodleスクリプトを妨害します。タイムアウトは少なくとも1時間に増やす必要があります。
ディレクトリのアクセス許可
デフォルトのIISアカウントは IIS_IUSRS。Moodledirroot(読み取り専用)およびdataroot(読み取り/書き込み)ディレクトリへの適切なアクセス権があることを確認してください。
デバッグの問題
既定では、IISは、本番サイトのエラーの詳細を意図的に非表示にするカスタムエラーページを使用します。
しかし、Moodleの問題を診断しているとき、それはあまり役に立ちません。 IISでこれらのデフォルトのエラーメッセージを一時的に無効にして、特定のMoodleエラーメッセージを表示することができます。これを実現するには、IISのカスタムエラーページの "existingResponse" 設定をMoodleサイトの "PassThrough" に設定します。その結果、問題が発生したときにMoodleはエラーに関するより具体的なメッセージを表示します。
通常は問題の詳細が表示されない一般的なIIS「404」エラーメッセージは表示されなくなります。
デバッグメッセージが表示されるように、 設定 > サイト管理 > 開発 > デバッグ のデバッグオプションも有効にする必要があります。