Windows Server 2008R2にPHPとMySQLを入れてIIS、Apacheで動かすときのメモ
Windows Server 2008R2にPHPとMySQLをインストールしてみたので、その作業メモです。
とりあえず使えるようにする為の、必要最低限の設定です。
PHP、MySQL、Apacheはインストーラーからではなく、ZIPから作業します。
PHPは公式ページのダウンロードからVC9のZIPをダウンロードします。
ダウンロードしたのはPHP5.3.21です。 PHP5.4.11も公開されていますが、やり方は一緒ですね。
apache2を使うつもりなら「Thread Safe」、IISを使うなら「Non Thread Safe」をダウンロードします。
PHP公式のマニュアルによると、IISはNon Thread Safe推奨だそうです。
MySQLは公式ページのダウンロードページからMySQL Community ServerのMySQL5.5.29のX86,64bitをダウンロードします。
apache2は、apacheの公式にあるバイナリがVC6なので使えません。
phpのダウンロードページにも書いてありますが、Apache Loungeからバイナリをダウンロードします。
さて、PHPはVC9、ApacheはVC10なのでVCのパッケージが必要かもしれません。
念の為、PHPのダウンロードページから「Microsoft 2008 C++ Runtime (x86)」をダウンロードしておきます。
Apache Loungeのダウンロードページにある 「VC10 SP1 vcredist_x86.exe」もダウンロードしておきました。
まず、PHPの設定。
Dドライブ直下で圧縮ファイルを解凍します。
解凍したフォルダは「php-5.3.21-Win32-VC9-x86」という名前になっているはずなので、フォルダ名をphpに名前を変えます。(変更しなくても問題ないのですが、面倒なので)
あとは、パスを通してphp.iniを編集するだけ。
パスは「システム環境変数」のPathに
D:\php;
と追加するだけです。
php.iniはphp.ini-developmentをコピーして編集します。
修正したのはこんなところです。
error_reporting = E_ALL → 5.3なのでE_STRICTは表示されないようにする
error_log = D:\tmp\logs\php_errors.log -> d:\tmp\logsというフォルダを作っておきます
default_charset = "UTF-8"
extension_dir = "d:\php\ext"
date.timezone = Asia/Tokyo
モジュールは以下をコメントアウトしました。 mysqlなどのDBが必要無ければphp_mbstring.dllだけで十分です。
extension=php_gd2.dll
extension=php_gmp.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pgsql.dll
ここからはmbstringの設定です。
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = Off
mbstring.detect_order = UTF-8,SJIS,EUC-JP,JIS,ASCII
mbstring.substitute_character = none;
mbstring.func_overload = 0
mbstring.strict_detection = Off
ここまで設定したら、コマンドプロンプトで php -v でphpが動くか確認します。
もしVCのパッケージがインストールされていなければエラーになるので、そのときは「Microsoft 2008 C++ Runtime (x86)」をインストールして下さい。
次にMySQLの設定です。
これもDドライブ直下に解凍します。
解凍後、フォルダ名をmysqlに変更しました。 (これまた簡単にする為です)
my.iniはmy-xxxx.iniのどれかをコピーして作成します。
今回はmy-medium.iniをmy.iniにコピーしました。
このmy.iniを編集します。
[client]の修正
socket = d:/tmp/mysql.sock
default-character-set = utf8
[mysqld]の修正
socket = d:/tmp/mysql.sock
character-set-server=utf8
skip-character-set-client-handshake
修正が終わったら、コマンドプロンプトから以下のコマンドを入力してMySQLが起動したらOK。
d:\mysql\bin\mysqld –defaults-file=d:\mysql\my.ini –standalone
起動できたかどうかはタスクマネージャーで確認してみて下さい。
停止するには、このコマンドを使います。
d:\mysql\bin\mysqladmin -u root shutdown
バッチにしておくと簡単ですね。
初回起動時にrootのパスワードが空になっています。
パスワードを設定する為、mysqlのコマンドラインクライアントで接続します。
d:\mysql\bin\mysql -u root
接続できたら、mysql> というコマンドプロンプトになるので、
mysql> set password for root@localhost = password('xxxxxx');
でパスワードを設定します。
ここまでやったらIISの設定をするわけですが、これはPHPのマニュアルの通りなので、こちらをご覧下さい。
と丸投げ。
リンク先のマニュアルにも書いてありますが、php.iniを更に4カ所修正する必要があります。
doc_rootも doc_root = C:\inetpub\wwwroot な感じに変更します。
Apacheの場合は、まずインストールから。
これもZipから作業します。
Dドライブ直下に解凍すると、フォルダの中にApache2というフォルダができるので、これをDドライブ直下に移動します。
(これまた便宜上、移動させました。)
D:\Apache2\conf\httpd.confを修正します。
ServerRoot "D:/Apache2"
LoadModuleとずら~っと書いてある辺りに以下を追加します。
PHPIniDir "D:/php"
LoadModule php5_module d:/php/php5apache2_2.dll
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
さらに書き換え
DocumentRoot "D:/Apache2/htdocs"
<Directory "D:/Apache2/htdocs"><IfModule dir_module>
-> C:をD:に変更 </IfModule>
DirectoryIndex index.html index.php -> index.phpを追加
これでコマンドプロンプトからD:\Apache2\bin\httpdを起動してページが表示されるか確認します。
「It Works!」 と表示されていればOKですね。
起動時にVC10のパッケージがインストールされていないとエラーが表示されたら、前述の「VC10 SP1 vcredist_x86.exe」をインストールして、再度起動してみます。
PHPIniDirを指定しないとD:\PHPにあるphp.iniを見に行かないということに気づかず、小一時間ハマってしまいました。
ついでに、php.iniのdoc_rootを doc_root = "d:\Apache2\htdocs" と書き換えておきます。
phpの動作確認は
<?php phpinfo(); ?>
と書いたテキストをtest.phpという名前でhtdocsに保存して、phpの設定が見れるか確認します。
MySQLがPHPから使えるかどうかは
<?php
$link = mysql_connect("localhost", "root", "パスワード");
if (!$link){ die ("Connect Error!!" . mysql_error());}
else{
echo "Connected!!";
}
?>
こんなコード書いてconnecttest.phpというファイル名でhtdocsに保存してブラウザでどうなるか確認します。
大体こんな感じでPHP、MySQL、Apache2 OR IISが使えるようになります。