apache2.4.25とphp5.6.30とMySQL5.7.18をWindowsPC(Windows10)にインストールしたときのメモ
20170609


coskx
0.動作する組み合わせ
 
apache: win32-VC14
php:    win32-VC11-x86

の組み合わせで動作するので20170524では

httpd-2.4.25-win32-VC14.zip

php-5.6.30-Win32-VC11-x86.zip

を使用する。


httpd-2.4.25-win64-VC14.zip
php-5.6.30-Win32-VC11-x64.zip
の組み合わせについては試していないのでわからない。



1.Apache2.4.25


ApacheはWWWサーバを実現するソフトであり,WindowsPCでも動作させることができる。

1-1.Apache2.4.25をダウンロード

http://httpd.apache.org

において,Apache HTTP Server 2.4.25 Released 内の download に進み
Apache HTTP Server 2.4.25 (httpd): 2.4.25 is the latest available version
内の  Binaries に進み

Index of /software/apache//httpd/binaries

win32
に入る

Index of /dist/httpd/binaries/win32

Downloading Apache for Windows
にApache HTTP Server Project はbinaryファイルは配布しないので,個々のサイトで配布している
と書いてある。その中に「Apache Lounge」というところがあるので,

http://www.apachelounge.com/download/
ここで,ダウンロードする。

「Apache 2.4.25 Win64」と「Apache 2.4.25 Win32」があるので

httpd-2.4.25-win32-VC14.zip 

をダウンロード。


2.Apache2.4.25をインストール

httpd-2.4.25-win32-VC14.zipを解凍すると,中にApache24フォルダがある。これをC:\にコピーする。


1-3.apache2.4の起動
    (Apache Webサーバーの起動)

adminでコマンドプロンプトを立ち上げて,C:\Apache24\binをカレントDirにする
>cd C:\Apache24\bin

Apache Webサーバーを実行できるかどうかテスト
>httpd.exe

コマンドプロンプト内には何も表示されないが,
ブラウザで「http://localhopst/」
「It works!」が表示されたら成功。
ApacheがWebサーバとして動作している。
このコマンド(httpd.exe)で立ち上げを行うと,エラーメッセージで
エラー内容が判明することがあるので,
後でhttpd.confの記述などで問題が生じた時にもこの作業は有用である。
ApacheMonitor使用時には,ApacheMonitorで,Apacheをstopさせてから,
httpd.exe で,Apacheを起動する。
Apacheを終了したい場合は「コントロール+C」を打つか,コマンドプロンプトを閉じる。

再度コマンドプロンプトを管理者権限で起動する。
>cd C:\Apache24\bin
でカレントディレクトリを移動して
>httpd.exe -k install
でインストールする。Windowsがfirewall許可を求めてくるので許可する。

ブラウザで「http://localhopst/」
「It works!」が表示されたら成功してることが確認できる。
http://localhost/はhttp://localhost/index.htmlのことであり,
C:\Apache24\htdocs\index.htmlがブラウザから見えている。
>httpd.exe -k uninstall
でアンインストールできるが,ここでは実行しない。
windowsのサービス設定でapache2.4の自動起動を手動起動に変更してもよい。
学習用環境では,PC起動時に
apache2.4が,自動的に立ち上がる必要はない。

1-4.ApacheMonitorの起動
    (Apache Webサーバーの起動停止を任意に行えるようにする)

C:\Apache24\bin の ApacheMonitor.exeを実行

タスクトレイでApacheMonitorのアイコン右クリックでOpen Apache Monitor
Start Stop が切り替えられる。Startにして
ApacheServerがサービスを開始する。

ブラウザでhttp://localhost/を見ると「It works!」が表示され無事サービス開始が確認できる。
firewall通過を許可しているので、他のPCのブラウザからも
http://xx.xx.xx.xx/
で見える。xx.xx.xx.xxは当該PCのIPアドレス

http://localhost/はhttp://localhost/index.htmlのことであり,
C:\Apache24\htdocs\index.htmlがブラウザから見えている。


2.PHP5.6.30


PHPはWWWサーバ上で動作するプログラミング言語である。動的Webサイトを構築するのに使われている。

1.PHP5.6.30をインストール(PHP 5.6 (5.6.30))

http://php.net/downloads.php
Current Stable PHP 5.6.30 の
 Windows downloads へ進み 
http://windows.php.net/download#php-5.6
PHP 5.6 (5.6.30)に4つバージョンがあるところで


(x64ではなく,x86でthreadsafeのものを選ぶ)
「VC11 x86 Thread Safe zip」

 
解凍するとphp-5.6.30-Win32-VC11-x86のフォルダが出来るので,
C:\php フォルダを作って,
php-5.6.30-Win32-VC11-x86のフォルダの中身をすべて移動する。
(C:\php\php.exeができれば成功)
 
それから、C:\php フォルダ中の
php.ini-development ファイルを同じフォルダ内にコピーし、ファイル名を php.ini に変更して
中身を変更する。(
php.ini はphpの設定ファイルである。


2-2.MSVCR110.dllをインストール

MSVCR110.dllが必要なので(重要)
https://www.microsoft.com/ja-jp/download/details.aspx?id=30679
(
★重要★ VSU4\vcredist_x86.exe が必要。新しいバージョンが公開されているが,この古いバージョンでなければ動作しない)

こちらからVSU4\vcredist_x86.exe
をダウンロードしてインストール

(このdllは,Visual Studio 2012 でビルドされた C++ アプリケーションを実行するために必要なランタイム コンポーネント)



2-3.php.iniを設定

ファイル: C:\php\php.ini
------------------------------------------------------

php.iniにアップロードできるファイルサイズの制限が記述されているので、それを変更する。

upload_max_filesize = 512M
post_max_size = 512M
memory_limit = 512M
max_execution_time = 0

default_charset = "UTF-8"
  ↓
default_charset =

; PHP's default setting for include_path is ".;/path/to/php/pear"
; http://php.net/include-path
include_path = ".;c:\php\includes"

; http://php.net/doc-root
doc_root = "C:\Apache24\htdocs"

extension_dir = "C:\php\ext"  ディレクトリextの場所を設定

以下を有効にする(行頭の;をとる)
extension=php_curl.dll

extension=php_mbstring.dll ; mbxxxxの関数を使うため
extension=php_exif.dll      ; Must be after mbstring as it depends on it

extension=php_mysql.dll ←文頭のコメントアウト(;)をはずす mysqlを使うとき
extension=php_mysqli.dll ←文頭のコメントアウト(;)をはずす mysqlを使うとき

extension=php_openssl.dll

extension=php_pdo_mysql.dll

date.timezone ="Asia/Tokyo"



3.httpd.confの設定

次に、Apacheの設定ファイルであるhttpd.confを、PHPを読み込むように書き換える。
以下の部分を書き加えた。

ファイル: C:\Apache24\conf\httpd.conf
------------------------------------------------------

・ServerRoot: 行の次に,次の2行を追加 安全のためにサーバ情報を隠す
 意味ないかもしれないが、おまじない。
ServerSignature Off
ServerTokens ProductOnly

・次の行を探して,有効にして1行追加 安全のためにサーバ情報を隠す
LoadModule headers_module modules/mod_headers.so
Header unset X-Powered-By

・<Directory "c:/Apache24/htdocs">の中,ディレクトリ構造を見えないようにするため
Options Indexes FollowSymLinks

Options FollowSymLinks

・<IfModule dir_module>の中,index.phpも有効にする
DirectoryIndex index.html

DirectoryIndex index.html index.php

・次の内容をファイルの末尾に付け加えた。

#PHPを使うために必要である
LoadModule php5_module "c:\php\php5apache2_4.dll"

<IfModule php5_module>
    # configure the path to php.ini
    PHPIniDir "C:\php"
    AddHandler application/x-httpd-php .php
    AddType application/x-httpd-php-source .phps
</IfModule>

#.c,.cpp,のファイルをブラウザ内に表示するために必要である。
AddType text/plain .c
AddType text/plain .cpp
AddType text/plain .h


以上の2ファイルを書き換えて保存したら、Apacheを再起動する。
Apacheの操作は、Windows画面のタスクバー右下に常駐しているApacheのアイコンから。
Apache2.4→Restartで再起動できる。
起動に失敗したら,管理者権限のコマンドプロンプトで
>C:\Apache24\bin\httpd.exe
でエラーメッセージが得られる。UTF-8でのメッセージのようだ。


ここまでの作業が成功していれば,この段階でC:\Apache24\htdocs内にindex.htmlがあれば,

(1)サーバが稼働しているPCでは,ブラウザで「http://localhost/index.html」のようにアクセスすると
index.htmlを閲覧できる。
(2)サーバ以外のPCでは,サーバの名前がDNSで得られる環境ならば,
(サーバの名前がpolarstar.tokyo-ct.ac.jpなら)
ブラウザで「http://
polarstar.tokyo-ct.ac.jp/index.html」で閲覧できる。
失敗談
2度と同じ失敗を繰り返さないために失敗の様子も大事なので残しておく。
「1」のApache単体のインストールに成功し,ブラウザで「It worsk!」も見えて安心し,ApacheMonitorでのstarat/stopも出来るようになった。そして,「2」のphpもインストールが終 わり,「3」の「httpd.conf」を設定し,
ApacheMonitorでRestartした。しかし,再起動に失敗した。

このような場合は,「1.3」に戻り,「>httpd.exe」で起動すると起動時のエラーメッセージが見える。
エラーメッセージでは,httpd.confのXX行目にある「LoadModule php5_module "c:\php\php5apache2_4.dll"」が実行できないと指摘された。その後1行ほど,表示できない文字コードらしきものでエラーが表示されているようだったが,読めるようにはできなかった。

"c:\php\php5apache2_4.dll"も適正な場所にあるので,原因不明であった。答えは「Apache Lounge」にあった。
「2.2」でインストールする時に「MSVCR110.dll」の名前だけでネット検索してインストールしたため,
VS2012以降の最新バージョンをインストールしてしまったことが原因であった。

「VSU4\vcredist_x86.exe」
でネット検索してインストールするべきであった。

 
★ここまでの注意点
(1)phpのパスを記述するところは全部で3か所
  php.ini内にディレクトリextをフルパスで記述するところが1か所
  httpd.conf内に2か所(2行)
(2)文字コードに関してはphp.ini中に1か所のみ
  初期状態では
  default_charset = "UTF-8"
  だが,右辺を消去してデフォルト文字コードは設定しないことにしておく


4.PHP5.6.30の動作確認

無事にApacheを再起動できたら、テスト用のPHPファイルを作ってみる。
中身は以下のように書きます。

ファイル: C:\Apache24\htdocs\info.php ←新しく作る

中身は---------------------
<?php

phpinfo();

?>
---------------------------

そしてこのファイルにアクセスしてみる。

http://localhost/info.php

青っぽい表がずらーっとある、phpinfoのphpの設定一覧画面()が表示されたら成功。

5.Windowsのファイアウォールの設定
既にここまでの設定でうまく設定されているので,ここでの以下の作業は不要であると思われる。

Windows ファイアウォールでWebサーバ用にport80を開く必要がある。

  コントロールパネル → セキュリティ → ファイアウォール
【Windowsファイアウォール】の左メニューの【詳細設定】を開くと、
【セキュリティが強化されたWindowsファイアウォール】が表示されます。
【受信の規則】を選択し、右側で【新しい規則】をクリックします。
【ポート】を選択し、次へ。
TCPの方にチェックを入れ、特定のローカルポートに【80】と入力し次へ。
接続を許可するにチェックを入れ次へ。
ドメイン,プライベート,パブリックの3つにチェックを入れ次へ。
名前を適当に【Apache24 TCP】とし完了。

6.MySQL5.7.18のインストール

(1)MySQLのwindows用バイナリをダウンロード
http://www-jp.mysql.com/
「ダウンロード」
MySQL Community Edition (GPL)
  Community (GPL) Downloads ≫

MySQL Community Downloads
(Current Generally Available Release: 5.7.18)

Windows(x86, 32 & 64-bit), MySQL Installer MSI
をダウンロードへ進む

Note: MySQL Installer is 32 bit, but will install both 32 bit and 64 bit binaries.
と書いてあるので、安心して

(mysql-installer-community-5.7.18.1.msi)側のWindows (x86, 32-bit), MSI Installer
を使うことにする。

Begin Your Download - mysql-installer-community-5.7.18.1.msi
ここでLoginを求められるが,「No thanks, just start my download.」
でダウンロードできる。
mysql-installer-community-5.7.18.1.msi
をダウンロードして置く。


(2)MySQLのインストール

msiの実行(mysql-installer-community-5.7.11.0.msi)を起動
ライセンス同意画面が表示されたら【I accept the term in the license agreement】(同意する)を選ぶ

Choosing a Setup Typeの画面が表示されたらFullを選択


C:\Program FilesMySQLにインストールされる
データは
ProgramData\MySQL\MySQL Server 5.7\data
に設定される。


Checking Requirements の画面 何もしないで先に進む

ここで1つエラーが出て、インストールできないものがあると表示されたが気にしない。

Installation すべて選択されているのでそのまま Execute

次にInstallerが起動する。
nextで先に進む。

Product Configuration
nextで先に進む。


Type and Networking

    ●Standalone MySQL Server / Classic MySQL Replication

    config type → Development Machine
    レEnable TCP/IP Networking
    Port Number: 3306

    レOpen Firewall port for network access これがなかった

Root account Password
    ID:root                ← IDは「root」に決まっている
    password: rootpwd
   

Windows Service
    Service Name:MySQL57(デフォルト)

    start the MySQL Server at System Startupのチェックをはずす(使用時以外に勝手にサービスが起動しないようにするため)

Plugins and Extensions
    なし

Apply Server Configuration
    Execute
    Finish

Product Configration
    そのまま次へ

Connect To Server
    check
    next

Apply Server Configuration
    Execute
    Finish

Product Coniguration
   next

Installation Complete
    start MySQL Workbench は起動しないのでチェックを外す。
    Finish

C:\Program Files\MySQLにインストールされる
exeは
C:\Program Files\MySQL\MySQL Server 5.7\bin
データは
C:\ProgramData\MySQL\MySQL Server 5.7\data
に設定される。(ProgramDataはWindowsの隠しフォルダ)


(3)Pathの設定
pathが通っていないようなので,付け足す。
コントロール パネル→システムとセキュリティ→システム→システムの詳細設定
→環境変数→Pathを選択して編集 新規で以下を追加
C:\Program Files\MySQL\MySQL Server 5.7\bin


(4)MySQLの動作確認
cmdなどで【mysql -u root -p】を実行し、rootのパスワードを入力し、【Welcome to the MySQL…】が表示されればインストールは成功
phpからMySQLが呼び出せるか確認する Apacheの再起動をする
ブラウザからhttp://localhost/info.phpにアクセスし、MySQLの項目があればOK

(5)テスト
ID:root(pass=rootpwd) でログインして使用するデータベース:testuserDB を作成し,
テスト用にデータテーブルmygoodlistを作成した。
コマンドプロンプトを立ち上げて,次のように入力する。
>mysql -u root -p
Enter password: rootpwd    ←ここの表示は実際には********になる。
create database testuserDB;
use testuserDB;
create table mygoodlist(ID int, name varchar(20), price int);
insert into mygoodlist (ID, name, price) values (1, "みかん", 100);
insert into mygoodlist (ID, name, price) values (2, "りんご", 150);
insert into mygoodlist values (3, "りんご青森", 200);
select * from mygoodlist;
これでテーブルが表示される。
drop database testuserdb;
quit;
これで終了