XAMPPの設置メモ     (2007.12.29作成 2008.01.19更新)

XAMPPインストール

 先日、機会があってWindows XP SP2のPCにサーバーの設置を試みたときの作業記録です。

  • XAMPPインストール
     まず、XAMPP Windows版 1.6.5〔ベーシックパッケージ〕を入手します。
    (以下のような構成でした。)
    ・Apache 2.2.6 + OpenSSL 0.9.8g
                  
    ・MySQL 5.0.51
    ・PHP 5.2.5 & PHP 4.4.6
    ・phpMyAdmin 2.11.3
    ・FileZilla FTP Server 0.9.24
    ・Mercury Mail Transport System v4.52

     何も考えるところはなくインストールは完了します。初期状態ではApache,Mysqlがサービスとして起動していなかったので、XAMPP control panelからサービスを開始します。
     http://localhost/にアクセスできればインストール完了です。

  • インストール後のApache起動中に「アプリケーションを正しく初期化できませんでした(0xc0150002)」と表示され、起動できないことがあります。
    http://www.apachefriends.org/f/viewtopic.php?p=112694ここを見て、Microsoft Visual C++ 2005 再頒布可能パッケージ (x86)を入れると直りました。
  • セキュリティ設定

     マニュアルを読むと、最低限のセキュリティの設定が書かれています。単にパスワードをかけるだけです。

  • http://localhost/security/index.phpにアクセスして、MySQL、PhpMyAdminに対するルート・パスワードを設定します。
  • 外部からのアクセスを遮断するため、xampp/htdocs/.htaccessを次のように作成します。
    Order deny,allow
                  
    Deny from All
    Allow from localhost 127.0.0.1
    (外部からアクセスにはIP決めうちで設定しておく)

    もっと詳細な設定をしたい場合には、IPアドレスによるアクセス制限がわかりやすい。
    海外サーバーからのアクセスを弾くなら、IPアドレスで日本国外(海外/外国)からのアクセスを制限する.htaccessを作成するPHPというサイトもあります。
    (プロキシ「proxy server」には効果ないですが)
  • FileZillaのUserにデフォルトでnewuserという名前があるので、名前を変更してパスワードをかける。Anonymousも使わないなら削除する。
  • ルーター、ファイアウォール設定
  • Apacheのために、ルータのTCPポート80を開放する。
     LAN構成は、
     ルーター(192.168.1.1) ⇔ HUB ⇔ PC(Apache 192.168.1.2)
    となっており、ポートマッピングする必要がある。
  • FileZillaのために、Windowsファイアウォールの設定で「詳細接続」「ネットワーク接続の設定→ローカルエリア接続の設定」「サービス→FTPサーバーにチェックマーク」。
  • MysqlのODBC接続のために、Windowsファイアウォールの設定で「例外」「TCPポート3306」を追加する。
  • PHP設定

     PHPの処理を全てutf-8で統一する。

  • php.iniのmbstringを修正
     mbstring.language = uni
                  
     mbstring.internal_encoding = utf-8
     mbstring.http_input = auto
     mbstring.http_output = utf-8
  • Mysql設定

     Mysqlは標準で文字セットがutf-8となっているため、PHPその他の処理も全てutf-8で統一することが望ましい、そうしないと日本語が文字化けしてしまいます。検索して辿り着いたのがこちらのページで、自分用のメモとして転載しています。

  • xampp/mysql/my.cnf内に以下のコードを追加
    [mysqld]
                  
    init-connect = SET NAMES utf8
    character-set-server = utf8
    collation-server = utf8_general_ci

    [mysqldump]
    default-character-set = utf8
    [mysql]
    default-character-set = utf8
  • xampp/phpMyAdmin/config.inc.php内の以下のコードをutf-8に修正
    $cfg['DefaultLang'] = 'utf-8';
                  
    $cfg['DefaultCharset'] = 'utf-8';
  • phpからmysqlにつなぐとき「set name 文字コード」をクエリ送信し文字コード指定するmysql4.1以降の場合は必要みたいです。

    //--------------------
                  
    // D B 接続
    //--------------------
    $host = "****";
    $usr = "****";
    $password = "****";
    $select_db = "****";

    if (!$conn = mysql_connect( $host, $usr, $password )) {
      die("データベース接続エラー");
    }

    mysql_select_db( $select_db, $conn );
    mysql_query( "set names utf8", $conn ); ←ここを追加
  • MYSQLへのODBC接続

     MS-AccessからMysqlに接続したいので、ODBCを利用します。Mysqlのバージョンが5.0なので、ODBC driverは3.1では接続できず、5.1に変更するとうまく行きました。

  •  まず、MySQL Connector/ODBC 5.1を入手します。
  • インストールが完了すれば、コントロールパネルから「パフォーマンスとメンテナンス」「管理ツール」「データソース(ODBC)」を呼び出します。
    ユーザーDSNで追加として「MySQL ODBC 5.1 Driver」を選択し、各項目を入力します。(特に問題になる設定はありませんでした。)
  • phpMyAdminを利用し、特権(アクセス権)の設定を行う。ユーザーID・Pass、接続元IPなどを指定し、DBへの操作権限を設定する。
  • cakePHPの設定

     xampp標準設定では動かない箇所を修正。

  • httpd.confでLoadModule rewrite_module modules/mod_rewrite.soのコメントを外す。
  • cakePHPのapp/config/database.phpの中にencording設定を入れる。
    var $default = array('driver' => 'mysql',
                  
     'connect' => 'mysql_connect',
     'host' => 'localhost',
     'login' => 'id',
     'password' => 'password',
     'database' => 'ddatabase',
     'encoding'=> 'utf8',
     'prefix' => '');
  • Apacheの設定

     httpd.confを編集し、基本的なセキュリティ対策を行います。

  • Webサーバホスト名の変更
    ServerName www.xxx.co.jp
    または
    ServerName 192.168.1.2 (IPアドレスを指定)
  • ポート番号の変更
    Port 80 (Defaultは80なので変更する必要はない)
  • ドキュメントルートの設定
    DocumentRoot /htdocs/
  • エラードキュメントの設定
    ErrorDocument 404 /error/404.html
  • ApacheのバージョンやOSの情報などを表示させない
    ServerTokens ProductOnly
                  
    ServerSignature Off
  • Copyright (C) 2000-2007 ten All Rights Reserved. 【SINCE May 2, 2000