インターネット情報サービス

インターネットインフォメーションサービスIIS )は、Windows Server、および特定のクライアントバージョンのWindowsにバンドルされているWebサーバーソフトウェアです。 Apacheウェブサーバははるかに優れたコミュニティサポートを持っており、Apache上でMoodleを実行しても通常問題は少ないです。 PHPは64ビットWindowsでも32ビットに制限されているため、Windows OSは大規模インストールには適していません。代わりにLinuxまたは他のUNIX系オペレーティングシステムの使用を検討してください。

IISのインストール手順(Windows 7以降)

  1. [コントロールパネル]に移動し、[プログラム]をクリックして、[Windowsの機能の有効化または無効化]をクリックします。
  2. 「インターネットインフォメーションサービス」と「インターネットインフォメーションサービス/アプリケーション開発機能/ CGI」にチェックを入れます
  3. Microsoft Web Platform Installerをインストールします。

PHPのインストール手順

公式のMS Platformインストーラのみを使用することを強くお勧めします。必要なコンポーネントをすべて自動的にインストールし、PHPマネージャで簡単に設定できるようにします。手動でインストールしようとすると失敗することが多く、Moodleが正しく機能しなくなる可能性があります。残念ながら、MSは通常PHPの最新バージョンを配布していません。手動でダウンロードする必要があるかもしれません。

  1. Microsoft Web Platform Installerをインストールします。
  2. Web Platform Installerを使用して最新のPHP 7.2.xをインストールする
  3. [オプション] Web Platform Installerを使用してURL Rewrite 2.0をインストールする

必要に応じて、必要なコンポーネントを手動でインストールすることもできます。

  1. IIS用PHPマネージャをダウンロードしてインストールします
  2. https://windows.php.net/download/から最新のPHP 7.2.x VC15 x 64 Non Thread Safeをダウンロードしてください 。 64ビットWindowsではx64を使うべきです。それ以外の場合は、x86
  3. ZipファイルをC:\ PHP \などのディレクトリに抽出します。
  4. 64ビットWindowsにx86x64の両方をインストールする - Visual Studio 2017用のVisual C ++再頒布可能パッケージをインストールする[1]
  5. インターネットインフォメーションサービス(IIS)マネージャを開きます - [このコンピュータ]を右クリックし、[管理]を選択します。
  6. PHPマネージャのアイコンをクリック
  7. 新しいPHPバージョンを登録します - C:\ PHP \ php-cgi.exeを選択します

警告:PHPはIISのFastCGI経由で設定する必要があります。古いCGIインターフェースはいくつかのファイル名に問題があることが知られています。

PHPの設定手順

  1. PHP設定をPHP Managerが推奨する値に設定します
  2. PHPマネージャで必要な拡張機能を有効にします。php_intl.dll、php_pgsql.dll
  3. OPcache拡張を有効にする
  4. PHP.iniでタイムゾーンを設定してください
  5. PHP.iniで適切なメモリ制限を設定する

IIS構成ステップ

  1. セットアップURLの書き換え
  2. 詳細なエラーページを表示するようにIISを構成します。
  3. 非常に長いCGIタイムアウトを設定します - 1時間以上。
  4. IISマネージャでMoodleディレクトリを新しい仮想ディレクトリとして追加するか、サイトディレクトリとして設定します。

スラルカメント

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

IIS 7では、デフォルトで相対パス引数がサポートされています。うまくいかない場合はphp.iniで以下を有効にしてみてください。

cgi.fix_pathinfo = 1

URLの書き換え

下記のようにレジストリを変更できない場合は、書き換え規則を手動で設定してみてください。MicrosoftWeb Platform Installerによる PHPのインストールでは、必要なURL Rewrite 2.0モジュールがインストールされます。

書き換えルール - インターネットインフォメーションサービス(IIS)Manager.png


以下の書き換えルールを追加して、MoodleでのUnicodeファイル名のサポートを有効にし、内部ファイル長の制限を回避してYUIファイルサービングを壊します。

  • パターンにマッチする - 正規表現 -
    ^([^\?]+?\.php)(\/.+)$
  • アクション - 書き換え -
    {R:1}\?file={R:2}
  • クエリ文字列を追加 - 有効
  • 後続のルールの処理を停止します - 有効

オプションのUTF-8ファイル名の修正

デフォルトでは、IISはMoodleにアップロードされたファイル内のUnicode文字を処理することができません。これは、MoodleサイトでJavascriptが機能しない(ナビゲーションを拡張することなど不可能)、または壊れたCSSスタイルをもたらす可能性があります。

サーバー変数にUTF-8エンコーディング使用するおよびWindows 7およびWindows Server 2008 R2のIIS 7.5でUTF-8エンコーディングをサポートする方法 について は、KB 2277918修正プログラムを参照してください

実行します。

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です。Moodleディレクトリ(読み取り専用)とデータルートディレクトリ(読み取り/書き込み)への適切なアクセス権を持っていることを確認してください。

デバッグの問題

既定では、IISは運用サイトでエラーの詳細を意図的に隠すカスタムエラーページを使用します。

IISのデフォルトのエラーメッセージ

しかし、あなたがMoodleの問題を診断しているとき、それはあまり役に立ちません。特定のMoodleエラーメッセージが表示されるように、IISでこれらのデフォルトエラーメッセージを一時的に無効にすることができます。これを実現するには、あなたのMoodleサイトでIISのカスタムエラーページの "existingResponse"設定を "PassThrough"に設定してください。その結果、問題が発生するとMoodleはエラーに関するより具体的なメッセージを表示します。

便利なエラーメッセージ

通常、問題に関する詳細が明らかにされていない一般的なIIS "404"エラーメッセージは表示されなくなります。

デバッグメッセージが表示されるように、 [設定]> [サイト管理]> [開発]> [デバッグ]のデバッグオプションも有効にする必要があります。

関連情報