SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Archive for 4月 19th, 2009

[Web サーバー立ち上げ体験日記]IIS のアクセスログを SQL Server に格納

leave a comment

<[Web サーバー立ち上げ体験日記]SQL Server 2008 SP1 + CU1 のインストール

IIS のアクセスログは ODBC ログを使用することによって SQL Server のデータベースに格納することができます。

設定をするにあたり、以下のサイトを参考にさせていただきました。
# 私もこういった情報を提供できるように精進したいと思います。
IIS7 – post #57 – How to setup ODBC Logging in IIS 7.0
How to configure IIS 7.0 for ODBC logging?
【IIS7】 そろそろいいことばかりでなく、現実的なことも重要か

手順としては

  1. 役割サービスの追加
  2. SQL Server の設定
  3. ODBC の設定
  4. IIS の設定

になります。

[機能の追加]

ODBC ログを使用するために、IIS に [ODBC ログ] の役割サービスを追加します。

  1. サーバーマネージャ を起動します。
  2. [役割] の [役割サービスの追加] をクリックします。
    image
  3. [状態と診断] の [カスタムログ] [ODBC ログ] を有効にし、[次へ] をクリックします。
    ?image
  4. [インストール] をクリックします。
  5. インストールが完了したら [閉じる] をクリックします。

[ODBC ログ] をインストールすることにより、[C:WindowsSystem32inetsrvlogtemp.sql] が追加され、ODBC ログの
Class ID がレジストリに追加されるようですね。
image?
ODBC ログはカスタム ログとして実装されているのでカスタムログの役割サービスも必要になります。
# カスタムログの一種として実装されているイメージでしょうか。

[SQL Server の設定]

ODBC ログの記録用のデータベースとテーブルを SQL Server 上に作成する必要があります。
また、情報を見たところ SQL Server 認証でないとログを保存できなさそうですので Windows 認証から SQL Server 認証に
変更する必要があります。

  1. SQL Server Enterprise Manager を起動します。
  2. サーバー名を右クリックして [プロパティ] をクリックします。
  3. [セキュリティ] をクリックし、[SQL Server 認証モードと Windows 認証モード] を選択し、[OK] をクリックします。
    image
  4. サーバー名を右クリックして [再起動] をクリックします。
  5. [データベース] を右クリックして [新しいデータベース] をクリックします。
  6. 新しいデータベースを作成します。
    # 今まで気にしていなかったのですが SQL Server 2008 Express の標準 (model データベース) の復旧モデルは [単純] なんですね。
  7. [セキュリティ] を右クリックして [新規作成] → [新しいログイン] をクリックします。
  8. [SQL Server 認証] のログインを作成します。
    image?

    作成するユーザーは [ユーザー マッピング] で作成したデータベースのユーザーとして設定しておきます。
    image

  9. 作成したデータベースにユーザーが追加されていますので右クリックをして [プロパティ] をクリックします。
    image
  10. [データベース ロールのメンバシップ] として [db_datawriter] を設定しておきます。
    image
  11. 作成したデータベースに対して [C:WindowsSystem32inetsrvlogtemp.sql] を実行して ODBC ログ用の
    テーブルを作成します。
    image

[ODBC の設定]

作成したデータベースを使用する ODBC を作成します。

  1. [管理ツール] → [データソース (ODBC)] をクリックします。
  2. [システム DSN] タブの [追加] をクリックします。
  3. ドライバは [SQL Server] を選択し、[完了] をクリックします。
    image
  4. [データソース名]、[サーバー] を入力し、[次へ] をクリックします。
    image?
  5. [ユーザーが入力する SQL Server 用のログイン ID とパスワードを使う] を選択し、作成した SQL Server 認証の
    ユーザ情報を入力し、[次へ] をクリックします。
    image
  6. 既定のデータベースを ODBC ログ記録用のデータベースに設定し、[次へ] をクリックします。
    image
  7. [完了] をクリックします。
  8. [OK] をクリックして ODBC を作成します。

[IIS の設定]

ODBC ログの設定は GUI から行うことはできません。
IIS サービスマネージャでも以下のような画面が表示されます。
image?
[appcmd.exe] を使用するか、[applicationHost.config] を直接修正することによって設定します。
参考にさせていただいた URL の情報にコマンドが載っていますので今回はそれを使って設定してみたいと思います。

  1. コマンドプロンプトで以下のコマンドを実行し、ログの記録方法を [ODBC ログ] に設定します。
    # <サイト名> は ODBC ログを設定するサイト名を入力してください。

    cd %systemroot%system32inetsrv
    appcmd set site /site.name:"<サイト名>" /logFile.customLogPluginClsid:"{FF16065B-DE82-11CF-BC0A-00AA006111E0}"
    appcmd set site /site.name:"<サイト名>" /logFile.logFormat:"Custom"

  2. コマンドプロンプトで以下のコマンドを実行し、ODBC ログに使用する ODBC の情報を設定します。
    # 一部改行されている個所がありますが appcmd は一行で入力してください。また <> の個所は各情報を入力します。

    cd %systemroot%system32inetsrv
    appcmd set config "Default Web Site" /section:odbcLogging /dataSource:"<ODBC 名>" /commit:appHost
    appcmd set config "Default Web Site" /section:odbcLogging /tableName:"<ODBC ログ テーブル名>" /commit:appHost
    appcmd set config "Default Web Site" /section:odbcLogging /userName:"<SQL Server 認証ユーザー名>" /commit:appHost
    appcmd set config "Default Web Site" /section:odbcLogging /password:"<SQL Server 認証ユーザーのパスワード>" /commit:appHost

以上で ODBC ログの設定は完了です。
テーブルを検索したところきちんとレコードが格納されていました。

image

ただし、SQL Server に接続できないと [500] のエラーになってしまうようです…。
image

実運用で使うには少し厳しそうですね。
あと取得項目として [Referer] がないのも気になります。インターネット公開サイトでは欲しいですよねこの項目は。

カスタムログとして自作すると [500] のエラーも回避できるようになるのでしょうか??
# 取得項目は増やせると思いますが。

ODBC ログの設定はできたので、せっかくですから Reporting Service を使ってアクセスログを表示することにチャレンジしたいと思います。
# アクセスログを Reporting Serivce で表示したかったのでSQL Server Express に With Advanced Services を使っています。

>[Web サーバー立ち上げ体験日記]SQL Server のデータを Reporting Serivces で表示のイメージ

Written by Masayuki.Ozawa

4月 19th, 2009 at 3:47 pm

[Web サーバー立ち上げ体験日記]SQL Server 2008 SP1 + CU1 のインストール

leave a comment

<[Web サーバー立ち上げ体験日記]SQL Server 2008 Express のインストール

SQL Server 2008 の最新のバージョンは SP1 + CU1 ですので先ほどインストールした SQL Server 2008 Express を
最新のバージョンにアップデートしたいと思います。

SQL Server 2008 SP1 , CU1 のダウンロードは以下の URL から↓
SQL Server 2008 Service Pack 1
SQL Server 2008 Service Pack 1 の累積的な更新プログラム パッケージ 1

[SQL Server 2008 Service Pack 1 のインストール]

  1. ダウンロードしたセットアップを実行します。
  2. [次へ] をクリックします。
    image
  3. [使用許諾契約書に同意する] を有効にし、[次へ] をクリックします。
    image
  4. すべてのコンポーネントが選択された状態にし、[次へ] をクリックします。
    ?image
  5. 確認が終了したら [次へ] をクリックします。
    image
  6. [更新] をクリックして SP1 を適用します。
    image image
  7. [次へ] をクリックします。
    image
  8. [閉じる]? をクリックしてインストールを完了します。
    ?image

続いて CU1 のインストールです。
# SP1 と手順は同じです。

[Cumulatie Update 1 のインストール]

  1. ダウンロードしたセットアップを実行します。
  2. [次へ] をクリックします。
    image
  3. [使用許諾契約書に同意する] を有効にし、[次へ] をクリックします。
    image
  4. すべてのコンポーネントが選択された状態にし、[次へ] をクリックします。
    image
  5. 確認が終了したら [次へ] をクリックします。
    image
  6. [更新] をクリックして CU1 を適用します。
    image image
  7. [次へ] をクリックします。
    ?image
  8. [閉じる]? をクリックしてインストールを完了します。
    image

これで SQL Server 2008 の最新のアップデートが適用された状態になります。
SQL Server Management Studio で以下のような SQL を実行してバージョンが [10.0.2710.0] となっていれば
アップデート完了です。
image

ついでに SQL Server 2008 の Books Online? (BOL) の最新版をインストールしておくと便利かと思います。
Microsoft SQL Server 2008 オンライン ブック (2009 年 1 月)

SQL Server 2008 Express のインストール直後の状態では、接続方法は [共有メモリ] のみ許可されていますので、
ローカルサーバーでのみ利用するのであれば [TCP/IP] を有効にする必要はないと思います。
# ポート 1433 / 1434 を開く必要もありませんので。
image?
次は勉強を兼ねて、インストールした SQL Server に IIS のログを出力する手順をまとめてみたいと思います。

>[Web サーバー立ち上げ体験日記]IIS のアクセスログを SQL Server に格納

Written by Masayuki.Ozawa

4月 19th, 2009 at 9:14 am

[Web サーバー立ち上げ体験日記]SQL Server 2008 Express のインストール

leave a comment

<[Web サーバー立ち上げ体験日記]IIS のデフォルトサイトの設定変更

サイトのバックエンドでは大抵情報を格納するためのデータベースサーバーが必要になります。

私は SQL Server が一番使いやすくので SQL Server 2008 の Express をインストールしておきたいと思います。
# WISP (Windows + IIS + SQL Server +PHP) か WISA (Windows + IIS + SQL Server + ASP.NET) を使う予定ですので。

今回は
MicrosoftR SQL ServerR 2008 Express with Advanced Services
使用したいと思います。

SQL Server 2008 Express との違いは

  • SQL Server 2008 Management Studio Basic。使いやすいグラフィカル管理ツールで、SQL Server 2008 Express を容易に管理できます。
  • SQL Server テーブルのプレーン文字ベースのデータに対するフルテキスト クエリの実行。フルテキスト クエリには、語、句、または複数の形式の語句を含めることができます。
  • ローカル リレーショナル データでの SQL Server Reporting Services レポートの実行。

になります。
Management? Studio / Fulltext Search / Reporting Services のサブセットが入っている感じでしょうか。

インストールすためには

が必要になります。
Windows Power Shell 1.0 はサーバーマネージャの [機能の追加] でインストールすることができますが他のものについては
ダウンロードしてインストールする必要があります。

以降の手順は前提モジュールのインストールが終了した状態からになります。

[SQL Server 2008 Express with Advanced Services のインストール]

  1. 事前に [Users グループ] のローカルアカウントを作成しておきます。
    セットアップでは作成したアカウントをサービスアカウントとして設定します。
  2. ダウンロードしたセットアップを実行します。
  3. [インストール] をクリックします。
    image
  4. [SQL Server の新規スタンドアロン インストールまたは既存のインストールへの機能の追加] をクリックします。
    image
  5. [次へ] をクリックします。
    image
  6. [使用許諾契約書に同意する] を有効にし、[次へ] をクリックします。
    image
  7. [インストール] をクリックします。
    image
  8. Windows ファイアウォールで [警告] が発生しますがこれは無視して [次へ] をクリックします。
    # 今回の SQL Server はローカルでのみアクセスを許可する設定にしますのでファイアウォールで特定のポートの許可もしません。
    image
  9. 必要な機能を選択し、[次へ] をクリックします。
    私は [データベース エンジン サービス] と [Reporting Services] と [管理ツール – 基本] をインストールしています。
    image
  10. インスタンス名を入力し [次へ] をクリックします。
    SQL Server Express の既定のインスタンス名 [SQLEXPRESS] は有名ですので私はインスタンス名を変更しています。
    image
  11. [次へ] をクリックします。
    image
  12. サーバーの構成を入力し、 [次へ] をクリックします。

    サービスのアカウントは作成しておいた [Users グループ] のアカウントを設定しています。
    [SYSTEM] は権限が強すぎるので公開用の SQL Server を構築する場合は控えたほうが良いかと思います。
    また、[SQL Server Browser] は外部に公開しないのであればサービスは起動する必要がありませんので [無効] にしておきます。
    # SQL Server を動的ポート構成にしない限りは [無効] で問題ありません。

    image
    照合順序はお好みで。
    SQL Server 2008 の日本語の最新の照合順序は [Japanese_XJIS_100] です。

    ?image

  13. データベース エンジンの構成を入力し、[次へ] をクリックします。

    [認証 モード] は導入するアプリケーションに依存すると思いますがまずはデフォルトのままで。
    [SQL Server 管理者の設定] については、SQL Server の管理権限 ([sysadmin 権限]) を持つするユーザーを設定します。
    ここで設定したユーザーは SQL Server に対してフルコントロールを持ちます。
    [Administrator] 以外のアカウントも設定できますので、サーバー管理者と SQL Server 管理者を分けたい場合は
    別のユーザーを設定します。
    image?

    デフォルトではすべてのシステムデータベースが [C ドライブ] に作成されます。
    C はシステムドライブのため、データベースは配置したくありません。
    IIS のコンテンツディレクトリ同様、私は別のドライブに全データベースを格納するように設定しています。
    image?

    [FILESTREAM] は使用しませんので無効にしたままにしています。
    image

  14. Reporting Services の構成は後で実施しますのでひとまず [レポート サーバーを構成せずにインストールする] を選択し、
    [次へ] をクリックします。
    image
  15. エラーと使用状況レポートは任意で設定して [次へ] をクリックします。
    # 今回はモニターですのでしたほうがいいのかな~と少し思っていますが…。
    image
  16. [次へ] をクリックします。
    image?
  17. [インストール] をクリックしてインストールを開始します。
    image image
  18. [次へ] をクリックします。
    image
  19. [閉じる] をクリックしてインストールを完了します。
    ?image

これで SQL Server 2008 Express のインストールは終了ですが、現時点の最新バージョンは SP1 + CU1 です。
次は SP1 と CU1 のインストールを行いたいと思います。

>[Web サーバー立ち上げ体験日記]SQL Server 2008 SP1 + CU1 のインストール

Written by Masayuki.Ozawa

4月 19th, 2009 at 8:49 am

[Web サーバー立ち上げ体験日記]IIS のデフォルトサイトの設定変更

leave a comment

<[Web サーバー立ち上げ体験日記]Windows のセキュリティについて考える その 4

初期インストール後は [Default Web Site] という Web サイトがポート 80 で作成されています。
デフォルトではシステムドライブにファイルが格納されるようになっていますのでできるだけシステムドライブにファイルは
格納しないように変更したいと思います。
# Windows ServerR 2008 Security Guide にも [Move root directories to a separate data partition] と書かれています。

IIS 系の作業はすべて [インターネット インフォメーション サービス (IIS) マネージャ] で実行します。

[コンテンツディレクトリの変更]

サイトのコンテンツは [%SystemDrive%inetpubwwwroot] に配置されています。
システムドライブにコンテンツを配置したくないので、今回は [E:Web] に移動したいと思います。

  1. [サイト] → [Default Web Site] → [Web サイトの管理] → [詳細設定] をクリックします。
    image
  2. [物理パス] を変更し、[OK] をクリックします。
    ? image

以上でコンテンツディレクトリの変更は終了です。
アクセス権の設定は別途まとめたいと思いますので今回は省略で。

[ログディレクトリの変更]
IIS のアクセスログも初期インストール後はシステムドライブ (%SystemDrive%inetpublogsLogFiles) に出力されます。
ログは [E:WebLog] に出力されるように変更したいと思います。

  1. [Default Web Site] を選択します。
  2. [Default Web Site] の [機能ビュー] をクリックします。
    image?
  3. [ログ記録] をダブルクリックします。
    image
  4. ディレクトリを変更し、[適用] をクリックします。
    image?image

以上でログディレクトリの変更は終了です。

[ホストヘッダーの設定]

Windows ServerR 2008 Security Guide を読んでいたところ、[Configure a Unique Binding] についての記載がありました。
セキュリティ上は Web サイトをホストする IP とホスト名 (以前のバージョンのホストヘッダー) は指定したほうがよさそうでした。

以下の手順で設定できます。

  1. [Default Web Site] を右クリックして、[バインドの編集] をクリックします。
    image
  2. デフォルトでは [http] のみ設定されていますので、これを選択して [編集] をクリックします。
    image
  3. IP アドレスが複数ある場合はどの IP を使用するか選択します。
    ホスト名には公開する DNS 名を設定します。
    設定が終了した [OK] をクリックします。
    # 以下の例の場合は http://webkit.local でアクセスすることを想定しています。
    image?
    # デフォルトでは [未使用の IP アドレスすべて] になっていますのでコンピュータ上の全 IP でアクセスできるようになっています。
    image

ホスト名を設定すると IP アドレスでサイトにアクセスしようとしても [404] エラーとなります。
image?
設定変更できる DNS がある場合は DNS の [A レコード] か [CNAME レコード] を設定すればよいのですが、
お手軽にテストをするにはHOSTS ファイルを変更するのが手っ取り早いです。

[C:WindowsSystem32driversetchosts] をメモ帳で開き以下のような設定を追加します。
image?

これでホスト名に設定した URL でアクセスができるようになります。
image

デフォルトサイトを使用する場合はこのあたりの設定は変えたほうがよさそうですね。
# デフォルトサイトをそのまま使用する人は少ないかもしれないですけど。

Web サイト用のソフトを入れる時には大抵データベースが必要になりますので次は SQL Server Express を
インストールしたいと思います。

>[Web サーバー立ち上げ体験日記]SQL Server 2008 Express のインストール

Written by Masayuki.Ozawa

4月 19th, 2009 at 4:01 am