- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2016-09-10T21:47:27+09:00","default:nowsky","nowsky")
*Microsoft SQL Server [#ea1145c4]
-[[SQL Server 2008 Express:+https://www.microsoft.com/ja-jp/download/details.aspx?id=1695]]
-[[SQL Server 2014 Express:+https://www.microsoft.com/ja-jp/download/details.aspx?id=42299]]
-[[SQL Server 2016 Express:+https://www.microsoft.com/ja-JP/download/details.aspx?id=52679]]
#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]]
マイクロソフトが開発しているRDBMSの一種。SQL ServerとかMSSQLと呼ぶ事が多い。
名前から判るとおりWindows環境で使う事が多く、ADO.NETを使ったシステム構築がしやすいのが特長。
ライセンス料が非常に高く、バージョンによっては100万円する物もある。
検証・勉強用として機能制限がされているが無料のSQL Server Expressも用意されており、
余程の事が無ければExpress版で要件を満たせる場合が多い。
Windowsに標準搭載されているWebサーバ。Windows Serverと一部のWindows Clientで利用出来る。
IISではHTTP/HTTPS以外にもSMTP機能を同梱しているのと、.NETアプリと親和性の高い点が特長。
以前、Code Red・Nimdaなどのウイルスから狙われ、大規模障害を起こした事がある。
~
*メモ [#s0409475]
-SQL Server 2016 ExpressからWith Tools等の細分化が無くなり、
SQL Server Management Studioが同梱されなくなった。
-別途、SSMS 2016(無料版)をインストールすれば、今までのWith Tools相当を使う事は出来る。
-SQL Server 2014/2016 Expressだと、1DBで10GBまで構築出来る。
*メモ [#fd28ebb5]
-Windows Client版のIISは、Webサイト作成数・TCPコネクション数などに機能制限がかかっている。
-PHP、ASP等を利用する場合は追加ソフトをインストールする必要がある。
-IIS用プラグインインストーラとして、[[Microsoft Web Platform Installer:+https://www.microsoft.com/web/downloads/platform.aspx]]が用意されている。
~
*インストール [#n4d4e742]
*インストール [#m54d88dd]
&size(16){&font(b){0. 前提条件};};
-構築環境
[VM]: Hyper-V ver6.3.9600
[OS]: WindowsServer2012R2 64bit
[MEM]: 4GB
[HDD]: C:50GB / D:50GB
[SQL]: SQL Server 2016 Express
[SSMS]: SQL Server Management Studio 2016
[IIS]: IIS 8.5.9600
-パラメータ
[インストール用TEMP]: C:\SQLServer2016Media
[DBデータディレクトリ]: D:\Microsoft SQL Server
[インスタンス構成]: 既定のインスタンス
~
&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){1. インストール作業(MSSQL)};};
Microsoftから事前にSQL Serverのインストーラをダウンロードしておく。
下記手順だとReporting Servicesもインストールしているが、必要無ければインストールをしなくても良い。
&size(16){&font(b){2. PHP連携};};
事前に[[PHP.NET:+https://secure.php.net/]]から、Windows用のPHPバイナリをダウンロードしておく。
PHPにはThread SafeとNon Thread Safeの二種類があるが、特別な事情が無い限りThread Safeを使う。
#region(MSSQL 2016 Express インストール手順)
>&ref(sql_express2016_01.png,left,nowrap,50%);
インストーラを起動したらカスタムを選択
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
>&ref(sql_express2016_02.png,left,nowrap,50%);
SQL Serverのインストールで使用するテンポラリを指定
この段階では実際のインストールはまだ動かない -> [インストール]
上記の状態を作るには、下記コマンドを実行する。
Linuxのlnコマンドと書式が逆になる点に注意する。
コマンドオプション
---
cmd> mklink [[/D] | [/H] | [/J]] リンク ターゲット
---
cmd> mklink /D php php-7.0.10
>&ref(sql_express2016_03.png,left,nowrap,50%);
バイナリをダウンロードし出すのでしばらく放置
>&ref(sql_express2016_04.png,left,nowrap,50%);
放置していると、SQL Serverのインストーラが起動する
新規インストールの場合「新規スタンドアロンインストール」をクリック
>&ref(sql_express2016_05.png,left,nowrap,50%);
「ライセンス条項に同意」をチェック -> [次へ]
>&ref(sql_express2016_06.png,left,nowrap,50%);
「SQL Serverの更新プログラムを自動入手」をチェック -> [次へ]
>&ref(sql_express2016_07.png,left,nowrap,50%);
インストール要件を満たしているか確認が走る
WindowsFirewallの警告が出るが、後で修正すれば良いので無視 -> [次へ]
>&ref(sql_express2016_08.png,left,nowrap,50%);
インストールする機能を選択。殆ど使わないLocalDBだけはチェックを外す
インスタンスルートは、データベース・バックアップ・ログ等が入るディレクトリ
共有機能ディレクトリは、SQL Server実行バイナリのインストール先
今回は上記の通りに選択・入力を行う -> [次へ]
>&ref(sql_express2016_09.png,left,nowrap,50%);
「既定のインスタンス」を選択。IDはデフォルトのまま -> [次へ]
>&ref(sql_express2016_10.png,left,nowrap,50%);
SQL Serverの実行ユーザを選択。とりあえずデフォルト(上記)のまま
ボリュームメンテナンスタスク実行特権は&color(#ff0000){&font(B){チェックを外す};}; -> [次へ]
>&ref(sql_express2016_11.png,left,nowrap,50%);
DBアクセスユーザと認証方法を設定する
デフォルトだとログイン中のOSローカルユーザが登録されるが後から消す事が出来る
SSMSからOSローカルユーザを消せば、結果としてSQL Server認証に限定させる事も出来る -> [次へ]
>&ref(sql_express2016_12.png,left,nowrap,50%);
Reporting Servicesは構成処理を行う -> 次へ
>&ref(sql_express2016_13.png,left,nowrap,50%);
利用規約を確認する -> [承諾] -> [次へ]
この後は画面に従ってクリックすればインストールが完了する
>&ref(sql_express2016_14.png,left,nowrap,50%);
インストールが完了したらインストーラを閉じる
インストーラを閉じたらインストールテンポラリ「C:\SQLServer2016Media」を削除する
#endregion
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]]
~
&size(16){&font(b){2. インストール作業(SSMS)};};
SQL ServerをGUI操作する為に、SQL Server Management Studio (SSMS)を追加インストールする。
インストーラは[[MSグローバル:+https://msdn.microsoft.com/en-us/library/mt238290.aspx]]の方からダウンロードを行うが、
インストールの段階で日本語が反映される為、実際には日本語版のSSMSを使う事が出来る。
#region(SSMS 2016 インストール手順)
>&ref(ssms2016_01.png,left,nowrap,70%);
事前にインストーラを入手しておく
>&ref(ssms2016_02.png,left,nowrap,50%);
規約を読んだら「インストール」を選択
この後、5~10分程度でインストールが完了する
#endregion
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|
~
&size(16){&font(b){3. TCP/IP接続の有効化};};
デフォルトの状態では、IPアドレスによるMSSQL接続が拒否されている為、
SQL Serverのネットワーク構成を変更してTCP/IP接続を有効化する。
TCP/IP接続の設定変更をしただけではTCP/IP接続が有効にならないので、DBの再起動も実施する。
#region(MSSQL構成マネージャー設定内容)
-DBインスタンスの構成によって、MSSQL通信に使用するプロトコルとポート番号が変化する。
サーバにFWを設定している場合、内容に合わせてポートを開けておく。
|既定のインスタンス |TCP:1433 |
|名前付きインスタンス|UDP:1434 / TCP:1025-65535|
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
>&ref(mssql_tcpip_01.png,left,nowrap,50%);
「SQL Server 構成マネージャー」->「SQL Server ネットワークの構成」->
「"DBインスタンス名" のプロトコル」->「TCP/IP」->「状態:有効」
>&ref(mssql_tcpip_02.png,left,nowrap,50%);
「SQL Server 構成マネージャー」->「SQL Server のサービス」->
「SQL Server "DBインスタンス名"」->「再起動」
#endregion
PHPエクステンションの設定が完了したら、管理ツールからIISを再起動させ、
Webブラウザからphpinfoを開いてドライバ読込み状況を確認する。
今回追加したPHPドライバを正常に読み込んでいる場合、下記ステータスがphpinfoに表示される。
&ref(phpinfo_pdo.png,left,nowrap,50%);