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