LoginSignup
2

More than 3 years have passed since last update.

WindowsServer2012R2における IIS8 PHP7.2 MySQL5.6 環境の構築

Last updated at Posted at 2019-05-16

目標

ベースOS: Windows Server 2012 R2 に対し、
 IISサーバのインストール
 PHP7.2系のインストール
 MySQL5.6系のインストール
 LAMP環境で動いていたソースプロジェクトの展開

Linux, Apache, MySQL, PHP = LAMP ならば、
Windows, IIS, MySQL, PHP = WIMP の構築というところでしょうか。

構築手順

  1. WindowsUpdateをして最新の状態にする
  2. Webサーバ(IIS)の機能を追加する
  3. Microsoft Visual C++ 再頒布可能パッケージをインストールする
  4. Web Platform InterfaceからPHPをインストールする
  5. MySQLをインストールする
  6. PHPの疎通確認
  7. MySQLの疎通確認
  8. PHPからMySQLへの疎通確認
  9. プログラムソースコードを配置する

1. WindowsUpdateをして最新の状態にする

できれば、最新のWindowsUpdateを適用しておく。これ以降の手順で、KB*****のプログラムが適用されていないといけない、などがあるため、アップデートを行う。
スクリーンショット 2019-05-15 18.00.38.png

2. Webサーバ(IIS)の機能を追加する

  1. サーバーマネージャーを起動し「役割と機能の追加」をクリック
    スクリーンショット 2019-05-15 18.06.40.png

  2. 「次へ」をクリック
    スクリーンショット 2019-05-15 18.06.53.png

  3. 「役割ベースまたは機能ベースのインストール」を選択して、「次へ」をクリック
    スクリーンショット 2019-05-15 18.07.07.png

  4. 対象サーバに、インストール先サーバが選択されていることを確認して、「次へ」をクリック
    スクリーンショット 2019-05-15 18.07.22.png

  5. Webサーバー(IIS)」を選択する
    スクリーンショット 2019-05-15 18.07.39.png

  6. 確認ウィンドウが表示されたら、「機能の追加」をクリック
    スクリーンショット 2019-05-15 18.07.47.png

  7. 「次へ」をクリック
    スクリーンショット 2019-05-15 18.08.02.png

  8. 「次へ」をクリック
    スクリーンショット 2019-05-15 18.08.12.png

  9. ログ ツール」、「要求の監視」と、アプリケーション開発内の「CGI」を選択して、「次へ」をクリック
    スクリーンショット 2019-05-15 18.08.35.png

  10. 「必要に応じて対象サーバを自動的に再起動する」にチェックを入れ、警告が出たら「はい」をクリックして「インストール」をクリック
    スクリーンショット 2019-05-15 18.08.44.png

  11. インストールが完了するまで待機する
    スクリーンショット 2019-05-15 18.13.22.png

  12. リモートでもローカルでもよいので、サーバーIPにアクセスし、IISトップページが表示されることを確認する(完了
    スクリーンショット 2019-05-15 18.27.31(2).png

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のランタイムをインストールする。

  1. Microsoft Visual C++ 2015 再頒布可能パッケージのインストーラをダウンロード
    スクリーンショット 2019-05-15 19.01.04.png

  2. 32ビットなのか、64ビットなのかで分岐するので、必要なものを選択してダウンロード(ここでは64ビット)
    スクリーンショット 2019-05-15 19.01.15.png

  3. ダウンロードしたインストーラを実行する(完了
    スクリーンショット 2019-05-15 19.01.33.png

4. Web Platform InterfaceからPHPをインストールする

ここでは、Web Platform InterfaceからPHPをインストールする方法を紹介する。
この方法でインストールすると、PHPを実行するためのIISのCGI設定を自動で行ってくれる。

  1. インターネット インフォメーション サービス(IIS)マネージャー」を開く
    スクリーンショット 2019-05-16 8.31.45.png

  2. 左のメニューから「サーバ名」をクリックすると、Microsoft Web Platformの使用を開始するか聞かれるので、「はい」をクリック
    スクリーンショット 2019-05-16 8.31.59.png

  3. Webブラウザが立ち上がるので、「Install this extension」をクリックして、インストーラをダウンロード
    スクリーンショット 2019-05-16 8.32.12.png

  4. インストーラを実行していく
    スクリーンショット 2019-05-16 8.32.31.png

  5. 「Finish」をクリックして、インストーラを終了する
    スクリーンショット 2019-05-16 8.32.42.png

  6. 「インターネット インフォメーション サービス(IIS)マネージャー」を、開き直すと、「Web Platform Installer」 が追加されているので、ダブルクリック
    スクリーンショット 2019-05-16 8.33.10.png

  7. 開かれるまで待つ
    スクリーンショット 2019-05-16 8.33.18.png

  8. 画面上部から「製品」をクリック
    スクリーンショット 2019-05-16 8.33.45.png

  9. 左のメニューから「フレームワーク」をクリック
    スクリーンショット 2019-05-16 8.33.59.png

  10. 表示された一覧から、希望のPHPバージョンを探す(ここでは、「PHP 7.2.14 (x64) (英語)」を見つけ出す)
    スクリーンショット 2019-05-16 8.35.06.png

  11. 見つけたら、その右端にある、「追加」をクリックし、画面下部の「インストール」をクリック
    スクリーンショット 2019-05-16 8.35.27.png

  12. その他にインストールされるソフトウェアが表示されるので、「同意する」をクリック
    スクリーンショット 2019-05-16 8.35.47.png

  13. インストールが終わるまで待つ
    スクリーンショット 2019-05-16 8.36.05.png

  14. 「PHP Manager for IIS」と「Web Platform Installer ログ」はエラーのためインストールされないが、「完了」をクリック
    インストールされなかったものが必要な方は、調べてインストールくださいm(._.)m
    スクリーンショット 2019-05-16 8.38.41.png

  15. 「インターネット インフォメーション サービス(IIS)マネージャー」を開き直し、「FastCGIの設定」をクリック
    スクリーンショット 2019-05-16 8.41.08.png

  16. すでにPHP5.3とPHP7.2(インストールしたバージョンのPHP)の設定項目が作成されている
    スクリーンショット 2019-05-16 8.41.16.png

  17. いずれかを選択して、「編集」をクリックすると内容が見れるので、必要であれば変更する(完了
    スクリーンショット 2019-05-16 8.42.20.png

5. MySQL5.6をインストールする

ここでは、MySQL5.6をMSIインストーラでインストールする方法を紹介する。

  1. まず「Microsoft .NET Framework 4.5.2」が入っているかを確認する
    インストールされていないのに、MySQLのインストールをはじめると、以下のエラー画面が出て止まる
    スクリーンショット 2019-05-16 9.22.46.png

  2. さらに「Microsoft Visual C++ 2010 ランタイム」が入っているか確認する
    インストールされていないのに、MySQLのインストールをはじめると、以下のエラー画面が出て止まる
    スクリーンショット 2019-05-16 10.53.27.png


Microsoft .NET Framework 4.5.2がインストールされていなかったら

3.「Microsoft .NET Framework 4.5.2インストーラー」をダウンロードする
スクリーンショット 2019-05-16 9.28.04.png

4. インストーラを実行する
スクリーンショット 2019-05-16 9.28.31.png

5.インストールが完了するまで待つ
スクリーンショット 2019-05-16 9.28.43.png

6.インストール終了後、再起動を求められることがあるので、再起動する
スクリーンショット 2019-05-16 9.30.02.png


Microsoft Visual C++ 2010 ランタイムがインストールされていなかったら

7.「Microsoft Visual C++ 2010 再頒布可能パッケージ」をダウンロードする
スクリーンショット 2019-05-16 11.23.18.png

8.インストーラを実行する
スクリーンショット 2019-05-16 11.23.36.png

9.インストールが完了するまで待つ
スクリーンショット 2019-05-16 11.23.43.png


Microsoft .NET Framework 4.5.2Microsoft Visual C++ 2010 ランタイム がインストールされていたら

10.「MySQL Installer 5.6.44」をダウンロードする
スクリーンショット 2019-05-16 9.14.50.png

11.インストーラを実行する
スクリーンショット 2019-05-16 10.52.56.png

12.「Setup Type」を選択して、「Next」(ここでは、Server onlyを選択)
スクリーンショット 2019-05-16 11.26.17.png

13.「Execute」をクリック(ここで何か不足しているソフトウェアがあるとエラーが表示される)
スクリーンショット 2019-05-16 11.26.26.png

14.Executeが終わったら、「Next」をクリック
スクリーンショット 2019-05-16 11.26.52.png

15.「Creating Type」を選択し(ここでは、Development Computer)、「Port」を変更する必要があれば変更し(ここでは、そのまま)、「Next」をクリック
スクリーンショット 2019-05-16 11.27.00.png

16.「Root Password」を入力し、作成したいユーザが決まっていたら「Add User」から作成し、「Next」をクリック
スクリーンショット 2019-05-16 11.27.21.png

17.スタートアップ時に起動するかの選択(ここでは、起動する)、サービス名を変更したければ変更し(ここでは、そのまま)、「Next」をクリック
スクリーンショット 2019-05-16 11.28.41.png

18.「Execute」をクリック(たまに、Starting the serverが長かったり、エラーが起きたりする)
スクリーンショット 2019-05-16 11.28.49.png

19.「Next」をクリック
スクリーンショット 2019-05-16 11.29.10.png

20.「Finish」をクリック(完了
スクリーンショット 2019-05-16 11.29.17.png

6.PHPの疎通確認

PHPが読み込めるかどうか、正常に動いてそうかどうかを確認する

1.C:\inetpub\wwwrootディレクリ内に、info.phpファイルを作成し、以下を追記して保存

info.php
<?php
phpinfo();
?>

2.リモートでもローカルでもよいので、http://サーバIP/info.phpを開く
スクリーンショット 2019-05-16 11.59.02.png

3.(2と前後してもよい)C:\Program Files\PHP\v7.2ディレクトリ内にphp.iniファイルがあるので、適宜設定を変更する
ここでは、

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を再起動する(完了
スクリーンショット 2019-05-16 12.54.52.png

7.MySQLの疎通確認

MySQL自身にローカルから見ることができるか、正常に動いてそうか確認する

1.コマンドプロンプトPowerShellからでもいいので、mysql -u root -pと打って実行し、エラーが出ることを確認する
スクリーンショット 2019-05-16 13.01.18.png

2.「コントロールパネル」>「システム」>「システムの詳細設定」>「環境変数」を開き、「システム環境変数」内のPathを「編集」しC:\Program Files\MySQL\MySQL Server 5.6\binを追記する
スクリーンショット 2019-05-16 13.03.40.png

3.再び、コマンドプロンプトPowerShellを開いて、mysql -u root -pと打って実行し、インストール時に設定したパスワードを入力して、ログインできることを確認する
スクリーンショット 2019-05-16 13.07.30.png

4.C:\ProgramData\MySQL\MySQL Server 5.6ディレクトリ内に、my.iniがあるので、日本語対応する設定等を追記する

my.ini
[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8

5.設定反映のため、「サービス」を開き、MySQL56を選択して、「サービスの再起動」をクリックする
スクリーンショット 2019-05-16 13.16.00.png

6.再び、コマンドプロンプトPowerShellを開いて、MySQLにログインしたら、show variables like "chara%";と叩いて、utf8になっているか確認する(完了
スクリーンショット 2019-05-16 13.36.19.png
なぜか、このときCP932が残ってしまったが、基本はutf8になるはず

8.PHPからMySQLの疎通確認

IISから呼び出すPHPがMySQLと疎通できるか確認する

1.Adminerから、PHPからMySQL接続確認phpファイルを取得する、Adminer 4.7.1 for MySQLをクリックしてダウンロード
スクリーンショット 2019-05-16 13.44.07.png

2.ダウンロードしたファイルをmysql.phpにリネームし、C:\inetpub\wwwrootディレクトリ内に配置する

3.リモートでもローカルでも良いので、http://サーバのIPアドレス/mysql.phpを開き、データベースのユーザ名とパスワードを入れてログインできるか試す(完了
スクリーンショット 2019-05-16 13.49.54.png

9. プログラムソースコードを配置する

ここでは、オープンソースeポートフォリオシステムMaharaをサーバに展開する

1.Maharaのソースコードをダウンロードする

2.ダウンロードしたzipファイルを解凍する(Windowsの場合7-zipやLhaplusを推奨)

3.解凍したディレクトリ内にあるhtdocsmaharaにリネームし、C:\inetpub\wwwrootディレクトリ内に配置する

4.maharaディレクトリに対し、Everyoneによるフルコントロール権限を与える(セキュリティ的には強く非推奨
スクリーンショット 2019-05-16 14.26.38.png

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の中身を修正する

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」をクリック
スクリーンショット 2019-05-16 14.56.21.png

12.インストール完了
スクリーンショット 2019-05-16 14.57.16.png

おわりに

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2