目標
ベース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