‘SQL Server’ タグのついている投稿

phpBB + SQL Server 2008

2009年5月14日 木曜日

phpbb-sqlsrv-setup04

phpBBは、オープンソースの電子掲示板です。

Windows Web Server 2008 + IIS7.0でデータベースにSQL Server 2008を利用する場合の、phpBBのインストール手順を以下に示します。

今のところ日本語を利用すると文字化けしてしまいます。
PHPのソースがUTF-8で、php_sqlsrv.dllを利用して、SQL Serverに文字化けせずにデータを入れる方法をご存じでしたら、お教えくださいm(__)m

2009/08/19にリリースされたSQL Server Driver for PHP 1.1 CTPにより日本語での利用が可能になりました。

※php_sqlsrv.dllを利用するためにphpBBのソースを変更しています。
インストールと記事の投稿・閲覧などの基本的な動作は確認しましたが、全ての動作を保障しているわけではありません。
php_sqlsrv.dllの変更による不具合がありましたら、この記事のコメントよりご連絡ください。

  1. PHPのインストール
    PHPがインストールされていない場合は、本サイトのPHPページを参照して、PHPをインストールする。
  2. SQL Server Driver for PHPのインストール
    PHPからSQL Serverにアクセスするためのドライバである、SQL Server Driver for PHPがインストールされていない場合は「PHP on IISからSQL Serverを使う」を参照してインストールする。
  3. phpBBのダウンロード
    ダウンロードページで「DOWNLOAD STABLE RELEASE」を選択し、zip形式のFull Packageをダウンロードする。(ex. phpBB-3.0.5.zip)
  4. ダウンロードしたファイルを任意のインストールしたいフォルダに展開する。
    ex.) C:¥WebApplications¥phpbb
    以降、「%PHPBB_HOME%」と記述する。
  5. 日本語化ファイルのダウンロード
    ダウンロードページで「DOWNLOAD LANGUAGE PACKS」を選択し、日本語のzip形式LANGUAGEファイルをダウンロードする。(ex. lang_ja.zip)
  6. ダウンロードした日本語化ファイルを、languageフォルダに展開する。
    ex.) %PHPBB_HOME%¥language¥ja
  7. ファイル、フォルダのアクセス権の設定
    当サイトの「IIS アプリケーションフォルダに必要なアクセス許可」を参照して%PHPBB_HOME%のアクセス許可を設定する。
    以下のファイルおよびフォルダ以下は、IUSRグループが書き込み可能にする。

    • %PHPBB_HOME%¥config.php
    • %PHPBB_HOME%¥store¥
    • %PHPBB_HOME%¥cache¥
    • %PHPBB_HOME%¥files¥
    • %PHPBB_HOME%¥images¥avatars¥upload¥
  8. データベースの設定
    phpBBは、標準でSQL Serverに対応している。
    しかしそれは、php_mssql.dllを利用するSQL Server 2000だけで、SQL Server 2008や2005には対応していない。
    今回はphpBBのソース修正も伴うが、SQL Server 2008を利用する。
    SQL Server 2008にphpBB専用のデータベースを作成する場合は、 当サイトの「SQL Server 2008 データベースの作成」を参照。
  9. phpBBソースの変更
    phpBB 3.0.4の場合の変更対象を示す。

    • 以下のファイルの「case 'mssql_odbc':」の次の行に「case 'sqlsrv':」と書き加える。
      • %PHPBB_HOME%¥search.php
      • %PHPBB_HOME%¥includes¥cache.php
      • %PHPBB_HOME%¥includes¥functions_admin.php
      • %PHPBB_HOME%¥includes¥message_parser.php
      • %PHPBB_HOME%¥includes¥acp¥acp_database.php
      • %PHPBB_HOME%¥includes¥acp¥acp_profile.php
      • %PHPBB_HOME%¥includes¥acp¥acp_reasons.php
      • %PHPBB_HOME%¥includes¥acp¥acp_users.php
      • %PHPBB_HOME%¥includes¥db¥db_tools.php
      • %PHPBB_HOME%¥install¥database_update.php
      • %PHPBB_HOME%¥install¥install_convert.php
      • %PHPBB_HOME%¥install¥install_install.php
      • %PHPBB_HOME%¥install¥convertors¥functions_phpbb20.php

      ex.)


      case 'mssql':
      case 'mssql_odbc':
      case 'sqlsrv': ← 追加行

      「mssql_odbc」で全ファイルをgrepし、変更箇所を探すと良いだろう。

    • %PHPBB_HOME%¥language¥en¥install.phpに、「DLL_SQLSRV」リソースを追加する。
      ex.)

      'DLL_MSSQL' => 'MSSQL Server 2000+',
      'DLL_SQLSRV' => 'MSSQL Server 2005+',   ← 追加行
      'DLL_MSSQL_ODBC' => 'MSSQL Server 2000+ via ODBC',

    • %PHPBB_HOME%¥includes¥functions_install.phpのget_available_dbms関数に、データベースへの接続情報を追加する。
      ※mssqlとmssql_odbcの間あたりが良いかも。
      ex.)

      'mssql' => array(
      ... 省略 ...
      ),
      // ↓ここから追加
      'sqlsrv' => array(
      'LABEL' => 'MS SQL Server 2005+',
      'SCHEMA' => 'sqlsrv',
      'MODULE' => 'sqlsrv',
      'DELIM' => 'GO',
      'COMMENTS' => 'remove_comments',
      'DRIVER' => 'sqlsrv',
      'AVAILABLE' => true,
      '2.0.x' => true,
      ),
      // ↑ここまで追加
      'mssql_odbc' => array(
      ... 省略....

  10. phpBBソースファイルの追加
    • %PHPBB_HOME%¥install¥schemas¥sqlsrv_schema.sql
      1. %PHPBB_HOME%¥install¥schemas¥mssql_schema.sqlからコピーしてファイルを作成する。
      2. 先頭の

        BEGIN TRANSACTION
        GO

        末尾の

        COMMIT
        GO

        を削除する。

    • %PHPBB_HOME%¥includes¥db¥sqlsrv.php
      当サイトからsqlsrv.phpをダウンロードし、%PHPBB_HOME%¥includes¥db¥に置く。
      ※同じディレクトリにあるmssql.phpを参考にして作成しました。このファイルの利用は自己責任でお願いします。
      ※このファイルは、phpBB3.0.4, 3.0.5用です。他のバージョンをご利用の場合は、これを参考にしてmssql.phpを変更してください。
  11. IIS仮想ディレクトリの設定
    IIS仮想ディレクトリの作成を参照して、IISの仮想ディレクトリを追加する。
    物理パスには%PHPBB_HOME%(ex. C:¥WebApplications¥phpbb)を指定する。
  12. phpBBのセットアップを行う。
    1. サイトURL(http://{あなたのURI}/{IIS仮想ディレクトリ}/にアクセスし、「はじめに」ページで上部の[インストール]タブをクリックする。
      ex.) http://www.yourdomain.com/phpbb/
      phpbb-setup01
    2. 「導入」ページで「次のステップへ」をクリックする。
      phpbb-setup02
    3. 「Installation compatibility」ページで、問題がないことを確認する。
      • 「PHPのバージョンと設定」のすべて:「はい」
      • 「mbstring拡張モジュールのチェック」のすべて:「はい」
      • 「データベースサポート」の「MSSQL Server 2005+」:「利用できます」
      • 「ファイルとディレクトリ [ 必須 ]」のすべて:「見つかりました, 書き込めます」

      phpbb-setup03

    4. 「データベースの設定」ページで、データベースへの接続情報を入力する。
      phpbb-en-setup04

      データベースの種類 MSSQL Server 2005+
      データベースサーバのホスト名またはDSN SQL Serverのサーバー名
      ローカルのSQL Server 2008 Expressなら
      「localhost¥SQLEXPRESS」
      データベースサーバのポート番号 受信ポート番号をデフォルトから変更している場合は入力する
      データベースの名前 phpBBのデータを蓄積するための、前述の8.データベースの設定で作成したデータベースか、既存のSQL Serverデータベース名を指定する。
      ex.) phpbb
      データベースのユーザー名 データベースに接続するためのユーザー名を指定する。
      ただし、SQL ServerがWindows認証の場合は空欄にする。
      ex.) phpBB
      データベースのパスワード データベースに接続するユーザーのパスワードを指定する。
      ただし、SQL ServerがWindows認証の場合は空欄にする。
      データベーステーブルの接頭語 データベースのテーブル名の先頭につける文字列を指定する。
      一つのデータベースに複数のアプリケーションのテーブルを作成する場合、テーブル名がぶつからないようにするためのもの。
      ex.) phpbb_
    5. 「データベースの設定 - データベースへの接続」ページで、接続に成功することを確認する。
      phpbb-setup05
    6. 「管理人設定」ページで、管理者の情報を入力する。
      phpbb-setup06
    7. 「管理人設定」ページ(2)で、テストをパスすることを確認する。
      phpbb-setup07
    8. 「コンフィグファイル」ページで、コンフィグファイルconfig.phpにデータを書き込んだことを確認する。
      phpbb-setup08
    9. 「詳細な環境設定」ページで、必要な設定をする。
      PHPのSMTP設定をしている場合、「SMTPサーバの仕様」は「いいえ」で良い。
      phpbb-setup09
    10. 「データベーステーブルの作成」ページで、テーブルの作成と初期データの投入がされたことを確認する。
      phpbb-setup10
    11. 以上でphpBBの初期設定は完了
      phpbb-setup11
  13. セキュリティの向上
    1. %PHPBB_HOME%¥installディレクトリを削除する。
    2. config.phpファイルをIUSRグループから書込み禁止にする。
  14. トップページ
    トップページのURLは、http://{あなたのURI}/{IIS仮想ディレクトリ}
    ex.) http://www.yourdomain.com/phpbb/
    phpbb01

以上

[2009/08/18] SQL Server Driver for PHP 1.1 CTPのリリースに伴い、日本語環境で利用できるように内容を修正しました。

  1. 日本語化ファイルのダウンロード
    ダウンロードページで「DOWNLOAD LANGUAGE PACKS」を選択し、日本語のzip形式LANGUAGEファイルをダウンロードする。(ex. lang_ja.zip)
  2. ダウンロードした日本語化ファイルを、languageフォルダに展開する。
    ex.) %PHPBB_HOME%¥language¥ja

[参考書籍]

SQL Server 2008 データベースの作成

2009年5月14日 木曜日

WebアプリケーションのデータベースとしてSQL Server 2008を利用する場合、そのアプリケーション専用のデータベースを作成しておくと管理しやすいです。
レンタルの共有サーバーなどで、SQL Server 2008のデータベース数に制限がある場合は、仕方ないですが。

以下に、Microsoft SQL Server Management Studioを利用して、SQL Server 2008 Expressにデータベースを追加する手順を示します。

  1. SQL Server 2008 Expressのインストール
    当サイトの「SQL Server 2008 Express」を参照する。
  2. PHP on IISからSQL Server 2008を利用するための設定
    当サイトの「PHP on IISからSQL Serverを使う」を参照する。
  3. SQL Serverデータベースの作成
    1. Microsoft SQL Server Management Studioを起動する。
      [スタート]メニュー - [プログラム] - [Microsoft SQL Server 2008] - [SQL Server Management Studio]を選択して起動し、サーバーに接続する。
    2. 左側ツリーで[データベース]を右クリックし、「新しいデータベース...」を選択する。
      sql_server_newdb01
    3. 「新しいデータベース」画面で、「データベース名」を入力する。
      sql_server_newdb02
  4. IISユーザーをアプリケーションのデータベースにマッピングする。
    1. 左側ツリーで[セキュリティ] - [ログイン] - [NT AUTHORITY¥IUSR]をダブルクリックする。
      sql_server_newdb03
    2. ログインのプロパティ画面の左側で[ユーザー マッピング]ページを選択する。
      • 「このログインにマップされたユーザー」の一覧で、3-3で入力したデータベースを選択する。
      • 「{データベース名}のデータベース ロール メンバシップ」の一覧で、「db_owner」を選択する。

      sql_server_newdb04

以上

[参考書籍]

PHP on IISからSQL Serverを使う

2009年5月14日 木曜日

IIS上のPHPからSQL Server2008/2005にアクセスするには、以下の手順を踏む必要があります。

  1. Microsoft SQL Server Native Clientのインストール
    Microsoft SQL Server 2008 用 Future Packのダウンロードページの注意事項の一覧から、IISが稼動している環境にあったMicrosoft SQL Server 2008 Native Client(sqlncli*.msi)をダウンロードし、インストールする。
    ページ先頭にある、一括でのダウンロードなどでもかまわない。
  2. SQL Server Driver for PHPのインストール
    1. SQL Server Driver for PHP Version 1.1のダウンロードページから、ファイルをダウンロードする。
    2. ダウンロードしたファイルを適当なフォルダにファイルを展開する。
    3. 展開したファイルの内、以下のファイルをPHPのextension_dir(ex. C:¥php52¥ext)にコピーする。
      • php_sqlsrv_52_nts_vc6.dll
        (Non-thread-safeのPHP5.2を利用している場合)
      • php_sqlsrv_52_ts_vc6.dll
        (Thread-safeのPHP5.2を利用している場合)
      • php_sqlsrv_53_nts_vc9.dll
        (VC9バージョンでNon-thread-safeのPHP5.3を利用している場合)
      • php_sqlsrv_53_ts_vc9.dll
        (VC9バージョンでThread-safeのPHP5.3を利用している場合)
      • php_sqlsrv_53_nts_vc6.dll
        (VC6バージョンでNon-thread-safeのPHP5.3を利用している場合)
      • php_sqlsrv_53_ts_vc6.dll
        (VC6バージョンでThread-safeのPHP5.3を利用している場合)

      ※Non-thread-safeかThread-safeかは、PHPのフォルダにphp5.dllかphp5ts.dllのどちらがあるかで判断できる。

      • php5.dllがある場合、Non-thread-safe
      • php5ts.dllがある場合、Thread-safe

      ※VC9バージョンかVC6バージョンかは、%PHP_HOME%¥snapshot.txtに、「msvcr90.dll」という文字列が含まれるかどうかで判断できる。

      • msvcr90.dllが含まれる場合、VC9
      • msvcr90.dllが含まれない場合、VC6
  3. php.iniファイルの編集
    php.iniファイルにextensionとして、追加したファイルを指定する。
    ex.) extension=php_sqlsrv_53_ts_vc9.dll
    ※ファイル名を変更しても良い
  4. SQL Serverにログインの作成
    IISからWindows認証でログインできるよう、SQL Serverに「NT AUTHORITY¥IUSR」ログインを作成する。

    1. Microsoft SQL Server Management Studioを起動
      [スタート]メニュー - [プログラム] - [Microsoft SQL Server 2008] - [SQL Server Management Studio]を選択し、ログインする。
    2. 左側のツリーで「ログイン」を右クリックし、「新しいログイン...」を選択する。
      sql_server_login01
    3. 「ログイン」 - 新規作成画面で必要な情報を入力する。
      • 「全般」ページ
        ログイン名:NT AUTHORITY¥IUSR
        sql_server_login02
      • 「ユーザー マッピング」ページ
        「このログインにマップされたユーザー」の一覧で、PHPから利用したいデータベースを選択する。
        sql_server_login03

以上

参考)

[2009/08/19] SQL Server Driver for PHP 1.1 CTPのリリースに伴い、バージョンに合わせて内容を修正しました。
SQL Server Driver for PHP 1.0をご利用の場合は、Microsoft SQL Server 2005 用 Future PackのNative Clientをインストールしてください。

[参考書籍]

SQL Server 2008 Express

2009年4月27日 月曜日

WebアプリケーションのデータベースというとMySQLやPostgreSQLなどのオープンソースデータベースが一般的ですが、Microsoft SQL Serverを利用することができるものもあります。
そのようなWebアプリケーションであればデータベースにSQL Serverを選択することで、可用性や耐障害性を強化することが可能です。

今回は、SQL Serverの無償版であるMicrosoft SQL Server 2008 ExpressをWindows Server 2008にインストールする手順を以下に示します。

  1. 事前に必要なソフトウェアのインストールと設定
    SQL Server 2008 Expressのインストールには、Windows Installer 4.5とWindows PowerShell 1.0が必要です。

    • Windows Installer 4.5のインストール
      ダウンロードページからインストールするWindowsの環境にあったインストーラをダウンロードしてインストールする。
      インストールするOSに対応するインストーラは、ダウンロードページの「注意事項」に記載されている。
      Windows Server 2008の場合は、

      • 32bit: Windows6.0-KB942288-v2-x86.msu
      • 64bit(x86_64):Windows6.0-KB942288-v2-x64.msu
      • Itanium:Windows6.0-KB942288-v2-ia64.msu
    • Windows PowerShellのインストール
      1. [スタート] - [管理ツール] - [サーバー マネージャ]を起動する。
      2. 左側ツリーで「機能」を選択する。
        右側の機能に表示される一覧に、「Windows PowerShell」が表示されている場合はインストール済み。
        そうでない場合は「機能の追加」をクリックする。
        powershell-setup01
      3. 「機能の選択」画面で「Windows PoserShell」を選択する。
        powershell-setup02
      4. 「インストール オプションの確認」画面でWindows PowerShellがインストールされることを確認し「インストール」する。
        powershell-setup03
      5. 「インストールの結果」画面で、インストールが正常に完了したことを確認する。
        powershell-setup04
      6. 「サーバー マネージャ」に戻り、Windows PowerShellが機能に含まれていることを確認する。
        powershell-setup05
    • SQL Server Database Engineサービスのアカウントを作成する。
      1. [スタート] - [管理ツール] - [サーバー マネージャ]を起動する。
      2. 左側ツリーの[構成] - [ローカル ユーザとグループ] - [ユーザー]を右クリックし、「新しいユーザー...」を選択する。
        sql_server_express-user01
      3. 「新しいユーザー」画面で、アカウント名とパスワードを入力し、「パスワードを無期限にする」にチェックをする。
        sql_server_express-user02
  2. SQL Server 2008 Expressのダウンロード
    Microsoft SQL Server 2008 Express with Advanced Servicesのダウンロードページより、インストール先のWindowsが32bitであれば「SQLEXPRADV_x86_JPN.exe」を、64bitであれば「SQLEXPRADV_x64_JPN.exe」をダウンロードする。
  3. ダウンロードしたファイルを実行すると、「SQL Server インストール センター」が起動する。
  4. システム構成をチェックする。
    1. 「システム構成チェッカー」をクリックする。
      sql_server_express-setup01
    2. 「セットアップ サポート ルール」画面で、失敗や警告が0になっていることを確認する。
      0じゃない場合は、「詳細の表示」ボタンをクリックして、失敗の原因を確認し、「合格」となっていない問題を解消する。
      sql_server_express-setup02
  5. 「SQL Server インストールセンター」画面に戻り、左側メニューの「インストール」をクリックする。
    sql_server_express-setup03
  6. 「SQL Server の新規スタンドアロン インストールまたは既存のインストールへの機能の追加」をクリックする。
    sql_server_express-setup04
  7. 「セットアップ サポート ルール」画面で、失敗や警告が0になっていることを確認する。
    (4-2.システム構成のチェックで確認済みのため、0になっているはず。)
    sql_server_express-setup02
  8. 「プロダクト キー」画面が表示されるが、SQL Server Expressでは入力の必要がないので、そのまま「次へ」をクリックする。
    sql_server_express-setup05
  9. 「ライセンス条項」画面で、「使用許諾契約書に同意する。」を選択する。
    sql_server_express-setup06
  10. 「セットアップ サポート ファイル」画面で、「インストール」をクリックし、インストールを実行する。
    sql_server_express-setup07
  11. 「セットアップ サポート ルール」画面で、問題となる失敗や警告が出ていないか確認する。
    「Windows ファイアウォール」が警告となる場合があるが、ここではそのまま進める。
    sql_server_express-setup08
  12. 「機能の選択」画面で、「データベース エンジン サービス」「管理ツール - 基本」「SQL クライアント接続 SDK」を選択する。
    sql_server_express-setup09
  13. 「インスタンスの構成」画面では、インスタンスの名前やIDなどを変更する必要がなければ、そのまま「次へ」をクリックする。
    sql_server_express-setup10
  14. 「必要なディスク領域」画面で、ディスク領域が不足していないことを確認する。
    sql_server_express-setup11
  15. 「サーバーの構成」画面で、SQL Server Database Engineサービスの「アカウント名」と「パスワード」に、前述(1-SQL Server Database Engineサービスのアカウントを作成する。)で作成したアカウントの情報を入力する。
    sql_server_express-setup12
  16. 「データベース エンジンの構成」画面で、SQL Server 管理者を指定する。
    SQL Serverの管理専用ユーザーを作成しても、既存のユーザーを指定しても良いだろう。
    sql_server_express-setup13
  17. 「エラーと使用状況レポート」画面で、エラー時などにMicrosoftに自動で送信する情報を指定する。
    これは、選択してもしなくても、どちらでもよい。
    sql_server_express-setup14
  18. 「インストール ルール」画面で、インストール処理がブロックされる原因がないか確認する。
    失敗や警告が0でない場合は、その問題を解消する。
    sql_server_express-setup15
  19. 「インストールの準備完了」画面で、設定を確認し、問題なければインストールする。
    sql_server_express-setup16
  20. 「インストールの進行状況」画面で、各機能のセットアップが成功していることを確認する。
    sql_server_express-setup17
  21. これで、SQL Server 2008 Expressのインストールは完了。
    sql_server_express-setup18
  22. IIS上のPHPからSQL Serverを利用する場合は、当サイトのPHP on IISからSQL Serverを使うに従って設定する。

以上

[参考書籍]