#author("2016-09-11T00:46:20+09:00","default:nowsky","nowsky") #author("2016-09-11T00:47:29+09:00","default:nowsky","nowsky") *Internet Information Services [#x7f34cce] -[[Microsoft Developer Network "Web サーバー(IIS)":+https://msdn.microsoft.com/ja-jp/library/hh831725(v=ws.11).aspx]] Windowsに標準搭載されているWebサーバ。Windows Serverと一部のWindows Clientで利用出来る。 IISではHTTP/HTTPS以外にもSMTP機能を同梱しているのと、.NETアプリと親和性の高い点が特長。 以前、Code Red・Nimdaなどのウイルスから狙われ、大規模障害を起こした事がある。 ~ *メモ [#fd28ebb5] -Windows Client版のIISは、Webサイト作成数・TCPコネクション数などに機能制限がかかっている。 -PHP、ASP等を利用する場合は追加ソフトをインストールする必要がある。 -IIS用プラグインインストーラとして、[[Microsoft Web Platform Installer:+https://www.microsoft.com/web/downloads/platform.aspx]]が用意されている。 ~ *インストール [#m54d88dd] &size(16){&font(b){0. 前提条件};}; -構築環境 [VM]: Hyper-V ver6.3.9600 [OS]: WindowsServer2012R2 64bit [MEM]: 4GB [HDD]: C:50GB / D:50GB [IIS]: IIS 8.5.9600 ~ &size(16){&font(b){1. インストール作業};}; IISは「役割と機能の追加ウィザード」から簡単にインストールする事が出来る。 今回はPHPも動かすので、CGI機能を有効化しておく。 [サーバーマネージャー] -> [役割と機能追加] -> [サーバーの役割] --- ■ Webサーバー (IIS) ├■ Webサーバー │├■ HTTP 共通機能 ││├■ HTTP エラー ││├■ ディレクトリの参照 ││├■ 規定のドキュメント ││├■ HTTPエラー ││├■ 静的なコンテンツ ││├□ HTTP リダイレクト ││└□ WebDAV 発行 ││ │├■ セキュリティ ││├■ 要求フィルター ││├□ IIS クライアント証明書マッピング認証 ││├□ IP およびドメインの制御 ││├□ SSL 証明書の集中サポート ││├□ URL 承認 ││├□ Windows 認証 ││├□ クライアント証明書マッピング認証 ││├■ ダイジェスト認証 ││└□ 基本認証 ││ │├■ パフォーマンス ││├■ 静的なコンテンツの圧縮 ││└□ 動的なコンテンツの圧縮 ││ │├■ 状態と診断 ││├■ HTTP ログ ││├□ ODBC ログ ││├□ カスタムログ ││├□ トレース ││├□ ログ ツール ││└□ 要求の監視 ││ │└■ アプリケーション開発 │ ├□ .NET 拡張機能 3.5 │ ├□ .NET 拡張機能 4.5 │ ├□ Application Initialization │ ├□ ASP │ ├□ ASP.NET 3.5 │ ├□ ASP.NET 4.5 │ ├■ CGI │ ├□ ISAPIフィルター │ ├□ ISAPI拡張 │ ├□ WebSocketプロトコル │ └□ サーバー側インクルード │ ├□ FTP サーバー │├□ FTP サービス │└□ FTP 拡張 │ └■ 管理ツール ├■ IIS 管理コンソール ├□ IIS 6 管理互換 │├□ IIS 6 メタベース互換 │├□ IIS 6 WMI互換 │├□ IIS 6 スクリプトツール │└□ IIS 6 管理コンソール │ ├□ IIS 管理スクリプトおよびツール └□ 管理サービス ~ &size(16){&font(b){2. PHP連携};}; 事前に[[PHP.NET:+https://secure.php.net/]]から、Windows用のPHPバイナリをダウンロードしておく。 PHPにはThread SafeとNon Thread Safeの二種類があるが、特別な事情が無い限りThread Safeを使う。 PHPのバイナリ保存先については、PHPのディレクトリ名にバージョン番号を付け、 シンボリックリンクでポインタを張ると、バージョンアップ・バージョンダウンのメンテナンスをやりやすくなる。 筆者がよくやるディレクトリ構成例 --- [リンク] - C:\php [実ファイル] - C:\php-7.0.10 [実ファイル] - C:\php-7.0.00 [実ファイル] - C:\php-5.6.25 --- cmd> dir <SYMLINKD> php [php-7.0.10] <DIR> php-7.0.10 <DIR> php-7.0.00 <DIR> php-5.6.25 上記の状態を作るには、下記コマンドを実行する。 Linuxのlnコマンドと書式が逆になる点に注意する。 コマンドオプション --- cmd> mklink [[/D] | [/H] | [/J]] リンク ターゲット --- cmd> mklink /D php php-7.0.10 IISからPHPを利用するには、ハンドラーマッピングにPHPを追加する必要がある。 この時、IISの「アプリケーション開発 - CGI」を利用する。 [IISマネージャー] -> [Webサイト] -> [ハンドラーマッピング] --- ┌────────┬─────────┐ │要求パス │*.php │ ├────────┼─────────┤ │モジュール │FastCgiModule │ ├────────┼─────────┤ │実行可能ファイル│C:\php\php-cgi.exe│ ├────────┼─────────┤ │名前 │IIS-PHP-Module │ └────────┴─────────┘ ~ *SQL Server接続 [#m12e7271] PHPからSQL Serverへ接続してDB操作を行うには、 MicrosoftのPHPドライバを追加インストールし、PHPエクステンションとしてロードする必要がある。 今回使うPHPドライバは下記Developer Networkから入手する。 -[[Microsoft SQL Server 用 PHP Driver:+https://msdn.microsoft.com/ja-jp/library/dn865013(v=sql.105).aspx]] -[[Microsoft Drivers for PHP for SQL Server:+https://www.microsoft.com/en-us/download/details.aspx?id=20098]] PHPドライバはexe形式になっている為、exeを実行してドライバを展開(インストール)する。 ドライバはOSのビット数と、PHPの動作モード毎に数種類がインストールされる為、 自環境に合ったPHPドライバを &font(b){"C:\php\ext" に移動};させる。 -"SQLSRV40.EXE"ドライバのファイル例 |OSのビット数|Thread Safe |Non Thread Safe | |32bit|php_sqlsrv_7_ts_x86.dll|php_sqlsrv_7_nts_x86.dll | |~|php_pdo_sqlsrv_7_ts_x86.dll|php_pdo_sqlsrv_7_nts_x86.dll| |64bit|php_sqlsrv_7_ts_x64.dll|php_sqlsrv_7_nts_x64.dll | |~|php_pdo_sqlsrv_7_ts_x64.dll|php_pdo_sqlsrv_7_nts_x64.dll| PHPドライバをインストールした後はphp.iniを編集し、PHPドライバをエクステンションとして読み込ませる。 PHPエクステンションを "C:\php\ext" にインストールしている場合、 下記設定をphp.iniの&font(b){[PHP]ディレクティブに追記};する。 ODBCのエクステンションは読み込まなくても大丈夫な筈だが、エラー抑制の為追加しておく。 [PHP] ; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ; extension_dir = "./" ; On windows: extension_dir = "ext" ;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; extension=php_pdo_odbc.dll ; Extension DLL for access to Microsoft SQL Server. ; See "Microsoft SQL Server PHP Deirver" ; "https://msdn.microsoft.com/ja-jp/library/mt683517(v=sql.105).aspx" extension=php_pdo_sqlsrv_7_ts_x64.dll extension=php_sqlsrv_7_ts_x64.dll PHPエクステンションの設定も完了したら、管理ツールからIISを再起動させ、 PHPエクステンションの設定が完了したら、管理ツールからIISを再起動させ、 Webブラウザからphpinfoを開いてドライバ読込み状況を確認する。 今回追加したPHPドライバを正常に読み込んでいる場合、下記のステータスがphpinfoに表示される。 今回追加したPHPドライバを正常に読み込んでいる場合、下記ステータスがphpinfoに表示される。 &ref(phpinfo_pdo.png,left,nowrap,50%);