目標
ベースOS: Windows Server 2012 R2 に対し、
IISサーバのインストール
PHP7.2系のインストール
MySQL5.6系のインストール
LAMP環境で動いていたソースプロジェクトの展開
Linux, Apache, MySQL, PHP = LAMP ならば、
Windows, IIS, MySQL, PHP = WIMP の構築というところでしょうか。
構築手順
- WindowsUpdateをして最新の状態にする
- Webサーバ(IIS)の機能を追加する
- Microsoft Visual C++ 再頒布可能パッケージをインストールする
- Web Platform InterfaceからPHPをインストールする
- MySQLをインストールする
- PHPの疎通確認
- MySQLの疎通確認
- PHPからMySQLへの疎通確認
- プログラムソースコードを配置する
1. WindowsUpdateをして最新の状態にする
できれば、最新のWindowsUpdateを適用しておく。これ以降の手順で、KB*****のプログラムが適用されていないといけない、などがあるため、アップデートを行う。
2. Webサーバ(IIS)の機能を追加する
3. Microsoft Visual C++ 再頒布可能パッケージをインストールする
WindowsにおいてPHPを実行するためには、Microsoft Visual C++ 20xxのランタイム(Microsoft Visual C++ 20xx 再頒布可能パッケージ)が必要となる。そのランタイムのバージョンは使用するPHPのバージョンによって少し異なる。
PHPバージョン | Visual C++ のランタイムバージョン |
---|---|
5.5.x, 5.6.x | Microsoft Visual C++ 2012 |
7.x 以降 | Microsoft Visual C++ 2015 |
今回はPHP7.2系をインストールするため、Microsoft Visual C++ 2015のランタイムをインストールする。
4. Web Platform InterfaceからPHPをインストールする
ここでは、Web Platform InterfaceからPHPをインストールする方法を紹介する。
この方法でインストールすると、PHPを実行するためのIISのCGI設定を自動で行ってくれる。
-
左のメニューから「サーバ名」をクリックすると、Microsoft Web Platformの使用を開始するか聞かれるので、「はい」をクリック
-
Webブラウザが立ち上がるので、「Install this extension」をクリックして、インストーラをダウンロード
-
「インターネット インフォメーション サービス(IIS)マネージャー」を、開き直すと、「Web Platform Installer」 が追加されているので、ダブルクリック
-
表示された一覧から、希望のPHPバージョンを探す(ここでは、「PHP 7.2.14 (x64) (英語)」を見つけ出す)
-
「PHP Manager for IIS」と「Web Platform Installer ログ」はエラーのためインストールされないが、「完了」をクリック
インストールされなかったものが必要な方は、調べてインストールくださいm(._.)m
5. MySQL5.6をインストールする
ここでは、MySQL5.6をMSIインストーラでインストールする方法を紹介する。
-
まず「Microsoft .NET Framework 4.5.2」が入っているかを確認する
インストールされていないのに、MySQLのインストールをはじめると、以下のエラー画面が出て止まる
-
さらに「Microsoft Visual C++ 2010 ランタイム」が入っているか確認する
インストールされていないのに、MySQLのインストールをはじめると、以下のエラー画面が出て止まる
Microsoft .NET Framework 4.5.2がインストールされていなかったら
3.「Microsoft .NET Framework 4.5.2インストーラー」をダウンロードする
6.インストール終了後、再起動を求められることがあるので、再起動する
Microsoft Visual C++ 2010 ランタイムがインストールされていなかったら
7.「Microsoft Visual C++ 2010 再頒布可能パッケージ」をダウンロードする
Microsoft .NET Framework 4.5.2 と Microsoft Visual C++ 2010 ランタイム がインストールされていたら
10.「MySQL Installer 5.6.44」をダウンロードする
12.「Setup Type」を選択して、「Next」(ここでは、Server onlyを選択)
13.「Execute」をクリック(ここで何か不足しているソフトウェアがあるとエラーが表示される)
15.「Creating Type」を選択し(ここでは、Development Computer)、「Port」を変更する必要があれば変更し(ここでは、そのまま)、「Next」をクリック
16.「Root Password」を入力し、作成したいユーザが決まっていたら「Add User」から作成し、「Next」をクリック
17.スタートアップ時に起動するかの選択(ここでは、起動する)、サービス名を変更したければ変更し(ここでは、そのまま)、「Next」をクリック
18.「Execute」をクリック(たまに、Starting the serverが長かったり、エラーが起きたりする)
6.PHPの疎通確認
PHPが読み込めるかどうか、正常に動いてそうかどうかを確認する
1.C:\inetpub\wwwroot
ディレクリ内に、info.php
ファイルを作成し、以下を追記して保存
<?php
phpinfo();
?>
2.リモートでもローカルでもよいので、http://サーバIP/info.php
を開く
3.(2と前後してもよい)C:\Program Files\PHP\v7.2
ディレクトリ内にphp.ini
ファイルがあるので、適宜設定を変更する
ここでは、
# 出てくる順に以下を変更していく
memory_limit = 1024M
post_max_size = 1024M
doc_root = "C:\inetpub\wwwroot"
extension_dir = "C:\Program Files\PHP\v7.2\ext"
upload_max_filesize = 1024M
date.timezone = "Asia/Tokyo"
# ここはコメントアウトを解除して記入
[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
# 末尾の方にあるTimeZoneの値を一致させる
[WebPIChanges]
date.timezone=Asia/Tokyo
4.設定反映のため「インターネット インフォメーション サービス(IIS)マネージャー」を開き、右側のメニューから「再起動」をクリックし、IISを再起動する(完了)
7.MySQLの疎通確認
MySQL自身にローカルから見ることができるか、正常に動いてそうか確認する
1.コマンドプロンプト
やPowerShell
からでもいいので、mysql -u root -p
と打って実行し、エラーが出ることを確認する
2.「コントロールパネル」>「システム」>「システムの詳細設定」>「環境変数」を開き、「システム環境変数」内のPath
を「編集」しC:\Program Files\MySQL\MySQL Server 5.6\bin
を追記する
3.再び、コマンドプロンプト
かPowerShell
を開いて、mysql -u root -p
と打って実行し、インストール時に設定したパスワードを入力して、ログインできることを確認する
4.C:\ProgramData\MySQL\MySQL Server 5.6
ディレクトリ内に、my.ini
があるので、日本語対応する設定等を追記する
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
5.設定反映のため、「サービス」を開き、MySQL56
を選択して、「サービスの再起動」をクリックする
6.再び、コマンドプロンプト
かPowerShell
を開いて、MySQLにログインしたら、show variables like "chara%";
と叩いて、utf8
になっているか確認する(完了)
なぜか、このときCP932が残ってしまったが、基本はutf8になるはず
8.PHPからMySQLの疎通確認
IISから呼び出すPHPがMySQLと疎通できるか確認する
1.Adminerから、PHPからMySQL接続確認phpファイルを取得する、Adminer 4.7.1 for MySQL
をクリックしてダウンロード
2.ダウンロードしたファイルをmysql.php
にリネームし、C:\inetpub\wwwroot
ディレクトリ内に配置する
3.リモートでもローカルでも良いので、http://サーバのIPアドレス/mysql.php
を開き、データベースのユーザ名とパスワードを入れてログインできるか試す(完了)
9. プログラムソースコードを配置する
ここでは、オープンソースeポートフォリオシステムMaharaをサーバに展開する
1.Maharaのソースコードをダウンロードする
2.ダウンロードしたzipファイルを解凍する(Windowsの場合7-zipやLhaplusを推奨)
3.解凍したディレクトリ内にあるhtdocs
をmahara
にリネームし、C:\inetpub\wwwroot
ディレクトリ内に配置する
4.mahara
ディレクトリに対し、Everyone
によるフルコントロール権限を与える(セキュリティ的には強く非推奨)
5.適当な場所にmaharaのdataディレクトリ
を作成する(ここでは、C:\inetpub\temp\
ディレクトリ内に、\uploaddir
を作成)
6.作成したdataディレクトリ
に、Everyone
によるフルコントロール権限を与える(セキュリティ的には強く非推奨)
7.MySQL
で、mahara用のデータベースを、root
ユーザで作成する(以下のコマンドを使用)
CREATE DATABASE mahara CHARACTER SET utf8;
8.続けて、以下のコマンドを実行する
GRANT ALL ON mahara.* TO '<maharaデータベース用ユーザ>'@'localhost' IDENTIFIED BY 'そのユーザのパスワード';
9.ソースのmahara
ディレクトリ内のconfig-dist.php
をコピーし、config.php
として作成
10.config.php
の中身を修正する
# データベース
$cfg->dbtype = 'mysql';
$cfg->dbhost = 'localhost';
$cfg->dbport = null; // Change if you are using a non-standard port number for your database
$cfg->dbname = '<作成したデータベース名>';
$cfg->dbuser = '<maharaデータベース用ユーザ>';
$cfg->dbpass = '<そのユーザのパスワード>';
# dataディレクトリの場所
$cfg->dataroot = 'C:\inetpub\temp\uploaddir';
# サイトURLの設定
$cfg->wwwroot = 'http://<サーバのIPアドレス>/mahara/';
# maharaを使うためのおまじない
$cfg->urlsecret = null;
$cfg->passwordsaltmain = '<適当に長い文字列を入れましょう>';
11.リモートでもローカルでも良いので、http://サーバのIPアドレス/mahara
にアクセスし、「Install Mahara」をクリック
おわりに
Windows Sever 2012 R2のIISによっても、PHPとMySQLを構築して、LAMP環境で動いていたものを構築することができた。
しかし、IIS側の設定、セキュリティ設定を加味した方法ではないので、あくまで構築フローとして参照されたい。
参考文献
[1] Windows Server 2012にIIS 8 + PHP 5.4.10の環境を構築する - Symfoware
[2] PHPをWindows Server の IIS(Internet Information Services)環境にインストールする (Windows Server Tips)
[3] Windows Server 2016 & IIS 10.0 に PHPをインストール|No IT No Life - おすぎやん サーバの設計・構築
[4] PHP: インストール要件 - Manual
[5] MySQL Server 5.6 を Windows にインストールする手順 | WEB ARCH LABO
[6] Windows Server 2012 へMySQL 5.5をインストールし、IIS 8 + PHP 5.4.10から接続する - Symfoware
[7] Mahara日本語ドキュメント/システム管理者ガイド/Maharaのインストール - Mahara Wiki