uzullaがブログ

uzullaがブログです。

Windows Server 2012 + IIS8 + PHP + Mysql + Web Deploy環境を構築する(前編)

連日Windowsの記事を買いているuzullaですこんばんは。
なんなの?俺はWindows系に移行したいの?Linux+(nginx|Apache)+PHPが恋しいです…。

何なの?

一昨日、

インターネット力の低い男がWebMatrixでマットウなWin+PHPをちょっと試す
http://uzulla.hateblo.jp/entry/2013/08/13/233458

という記事をポストしましたが、まとめに書いた通り結構不完全燃焼な記事でした。
というのも、WebMatrixWindowsPHPウェブ開発の先端を行く環境であることは確かですが、あの記事はほぼWebMatrixというIDEの紹介に終始した結果になったからです。


ご存知の通り、マイクロソフトの製品はフルスタックであり、サーバーから開発環境、ご存知ブラウザまでの総合的な環境を提供している企業であり、それが強みであることは誰もが知っている通りですが、上の記事においては、その両輪というべきサーバー側について触れる事ができませんでした。

WindowsApache+PHPとかアホか」「IIS+PHPが至高」と先日のボヤ記事( http://uzulla.hateblo.jp/entry/2013/08/12/215654http://uzulla.hateblo.jp/entry/2013/08/12/013207 )でサジェスト頂いた事への直接の勉強にはなっていなかったわけです。そりゃこいつ結局わかってねえ、といわれても仕方ない話です。


ということで、IIS+PHPを試さなければならないわけですよね。


ただ、やっぱりそれでIIS+PHPの環境をつくったところで、Apacheと差し替えただけで、罠が多少すくないPHP環境になるにすぎません。
WebMatrixやWeb PIがサジェストされたということは、MSの統合開発環境、コーディングからデプロイまでをちゃんとしたMSの流儀にのっとった形を体験してこそ、得る物が有るだろうなと。


と、いうことでホント長々こんな前説書いてるのはさきほど悪戦苦闘の末にMSDNサブスクリプションを買う事なく、無課金ユーザがなんとか試すことができた達成感につつまれているからであり、いい加減さっさとはじめます、サーセン

Windows Server 2012を用意する

まず、Windows Server 2012(以後WS)がないと話がはじまりませんね。手元にあるのは2003であり、古すぎます。最新のMSを体験しなければならないのです。

しかし、前述の通り今回無課金でのぞみます、無課金でMSの一連の環境を評価したいと思います。

WSをDLする

MSのサイトで、WSは評価版がDLできます。「Windows server 2012 評価版」とかでググるとでてきますが、以下にその直リン。
http://technet.microsoft.com/ja-jp/evalcenter/hh670538.aspx

ここから私がダウンロードしたのはISOファイルです、そして実行環境はVMware(ホストOSはWindows)です。

MSに登録したり、フォームに入力などをしないとDLできませんが、その辺りは正直だれも迷わないと思いますので省略。

VMwareにWSを入れる

仮想マシンは、HDD 60GB、メモリ2GB、CPU1で構築しました。
VMwareはOSによっては自動インストールができるのですが、この評価版はそれにうまく対応できません。
一度仮想マシンを手動で作成した後、CDROMドライブを後から有効にして、手動でインストールしましょう。


WSのインストール手順で問題になりそうな所は特にないので、細かい所は省略します。
個人的には、7からだとおもいますが、ついに完全GUIインストールになったのがプチ感動感ありますね。

途中で、どのEditionにするか?ときかれますが、Windows Server 2003 Standard 評価版にします。Datacentorでいけるかは謎です。あと、Webcoreはハードコアモードなので選択しません*1


ところで、NTや2000や2003を入れてた人は、インストール時に「何をいれるか」まったく聞かれない事に違和感を覚えるかもしれませんね、僕は覚えた。
現在のWSは、インストール後にサーバマネージャから「役割と機能の追加」によってIISなどといったコンポーネントをインストールします。


他のOSでも今では流行りのやり方ですが、このおかげで無駄なサービスのない、軽くて安全なWindows Serverができあがるのはとても気持ちいいですね。

起動してまずすべきことは

WSインストール直後は超スッキリした画面で不安をおぼえますね、まずするべきは…そうですね、IEを殺すことです。…すいません…。


WSのIEはセキュリティを重視しすぎて、ActiveXスクリプトがうごかないとか、それ以前になにもファイルがDLできない状態になっています。
もちろん設定を変えることで解決できるんですが、MSは熱心にも安全側に倒しきったために、マジでこれを使い物にするのに一苦労どころか10^3苦労くらいしないといけないので*2、私はあっさりとChromeを使うことにしました。

本番環境においてはそもそもサーバーでブラウザを開くか?という話もあり*3、このMSの対応はわからないでもありません。


きっとマスターの皆様におかれましてはサーバでブラウザをひらくわけがないか、ナイス設定をぱぱっとできるのかもしれませんが、クソマカーがちょっとさわった程度だと、ページ遷移する度にダイアログが大量に生産される昔のエロサイトかよみたいな設定になりましたので、諦めました!!!


さておき、手元のPCでChromeインストーラをひろってきて、サーバーにいれればChromeは普通にはいって動き出します。
これで、とりあえず素のWSが用意できた、ということにします。

IIS等のコンポーネントをインストールする

タスクバー左下にあるサーバと工具箱のアイコンをクリックするとサーバーマネージャが立ち上がります。
ここから、メニュー>管理>役割と機能の追加をえらぶと、役割と機能の追加ウィザードが立ち上がります。

ウィザードが開始したら、
「開始する前に」は適当にスルーするとして、
「インストール種類」においては「役割ベースまたは機能ベースのインストール」をえらんで次へとすすみます。
「サーバー選択」フェーズは、なにもしなければローカルサーバが選択されているはずなので、そのまま次へ。
「サーバの役割」フェーズで、必要なコンポーネントを追加します。
今回は「Webサーバー(IIS)」のまわりを設定します、他は触らなくて良いでしょう。


IIS以下には、
・Webサーバー
FTPサーバー
IIS以下ホスト可能なWebコア
・管理ツール
があります。


まあ好きにチェックすればよいわけですが、今回重要なのはアプリケーション開発>CGIです。
CGIとありますが、ここにFastCGIのサポートも含まれていますのでこの後いれるPHPのためにOnにします。

次に、Web Deployをつかうなら、管理ツール>管理サービスが必須です。これがないとIISマネージャに「管理サービス」アイコンがでてこなくてハマります。(とりあえず、私はIIS6管理互換以外は全部Onにしておきました)
FTPサーバー」と、「IIS以外ホスト可能なWebコア」は特にタッチ不要です。

以上を適切にえらんだら、次へを押してフェーズを進めます。


「機能」フェーズにおいては、特にいじる必要はありません。.net Frameworkまわりは後で勝手にはいりますが、ここで入れておいても良いでしょう。
次へを押します。
「確認」フェーズでは、選択した何がインストールされるか表示されます。「必要に応じてサーバーを自動的に再起動」は、入れておいても良いですが、多分いらないです。


あとはインストールを押すと、勝手に色々インストールがされてしばらくすれば完了です。

IISの設定を確認をする

サーバーマネージャのメニュー>ツール から「インターネットインフォメーションサーバー(IIS) マネージャー」(以後IIS マネージャ)を起動します。

起動すると、WebPIをいれるか?と聞いてくると思います。これは入れましょう。
ただ、IEが立ち上がってもDLができないと思います、前述したとおり 、IEのセキュリティがガチガチなので、ExeファイルをDLできません。
URLをコピペなどして、ChromeでWeb PIのインストーラをDLして、インストールしましょう。WebPIのインストール自体迷う所はないとおもうので省略します。
次回以降も、サーバマネージャをたちあげると、Web PIをインストールしても「いれますか?」って毎回聞いてくるうざいダイアログは殺しましょう。

画面の簡単な説明

左ペインにローカルサーバー(WSはインストール直後ランダムなサーバー名が付与されるので、WIN-XXXXXみたいな名前です)があると思います。
これがIISインスタンスで、この中にさらにサイト(VirtualHost)があります。


サーバを選択すると、メインペインアイコンが並びます。ここは機能ビューとコンテンツビューのタブが下部にあり、基本的に機能ビューだけ使います。
まずは 「Web Platform Installer」(以後WebPIと、「管理サービス」(Web Deployをやらないなら不要)のアイコンが管理グループにあるか確認してください。
ない場合は手順をもどって確認してください 。


右ペインはサーバーの再起動や、なんやかや、設定を追加するときなどにつかう操作があります。

PHPをいれる

Web PIをIISマネージャから起動します。

「製品」タブに移動し、Mysql WindowsPHPMysql Connector/Net(Web Deployをやらないなら不要)を選択します。
左側のフレームワーク、データベース、などをえらぶと量が減って探しやすいですね。


ここでPHPが5.4.9であることに失望をおぼえるPHPerもいるでしょう、5.5.1いれたい、分かります。

しかしおすすめしません、というかやめておこう。し、死にたいのか!そんなに5.5が必要か!
この記事を読むようなWS初心者の人は特にです、酔狂で読んでるマスターの人は別に大丈夫でしょうが…。


冗談めかしてかいてますが、本当にWindowsでPHP5.5いれるのは苦痛です、というか、めげてやめました。

1.Mysql 5.5 はインストーラがない(模様)
2.php.iniはデフォルトではうごかない
3.IISは、エラーメッセージが致命的にたりないか、わかりづらく、解決するのがしんどい。
4.ポチポチ作業とはいえ、結構色々設定しないといけない

もちろん試してみるのはご自由です。わりとブログ記事も豊富にありますので、ハマってもいつかはぬけだせそうです。
ただ、豊富にあってもハマってきええええってなりますし、あきらめた後にゴミがのこって微妙な事になります(なりました)。


さておき、それらを選択したらインストールします。選択していない依存も大量にでますが、まってれば終わります。

動くかためしてみる

この時点で、一切コンフィグなどさわっておりませんが、IIS+PHPの環境構築は完了しています、すごい!!
さすがMSです、ポチポチやるだけで事が済む!!


とりあえずブラウザでlocalhostをひらいてみると、IISのロゴがかかれたページが表示されるはずです。

また、IISのデフォルトのDocumentRootはc:\inetpub\wwwroot\です、ここにtest.phpで定番の

<?php
phpinfo();

を書いてうごかしてみましょう、表示されましたよね?されてない?500エラー?それはなんかまちがえましたね(私がこの記事で記載漏れかもしれませんが、その場合教えてください…)、手動でPHPいれようとしませんでしたか?そのゴミがのこってませんか?


再起動したら治るかもしれませんけど、多分、なんか余計なことやらかしてるはずです。
余談ですが昔よりも、Windowsは再起動が不要になっております、これも感激です。

ということで、今回ここでしめます。

「タイトルのWeb Deployどこいった?」次回にいきました。


IIS+PHPはサーバマネージャ、IISマネージャ、Web PIをつかえば本当にスムーズにできることがよくわかりました、ここまでは本当に罠もすくなく、WSでIIS+PHPが現実的だ、というのもナットクでした、すばらしい。
昔は本当にクソ面倒くさかったし、泣きたくなりましたが、時代はここまで進んでいたのか…と感慨しきりです。当然ながらApache+PHPよりも簡単にはいるのはすばらしいですね。


しかしながら…次の記事は本当に苦労しました。情報がマジでないやつだった。
「つらい…クソが…」とつぶやき続けるクソマカーは「お前がクソだ、ネット力低いやつは金をはらえ」とご指導いただき、MSDNサブスクリプション(電話サポート)の購入も検討しかけましたが、さすがに9万( http://msdn.microsoft.com/ja-jp/subscriptions/buy.aspx )という大金はやはり家庭内審議案件です、この一連、将来仕事で役立つでしょうが、今は単なる好奇心・趣味ですから無課金で検証したいのです!!!


ま、それはさておき、今回のIIS+PHP環境構築はすごいスムーズにはいるし、MSすごい、WSすごいという感じでした(小並感)、みなさんも是非WSでIIS+PHP試してみましょう!!!


ということで、ではまた!

追記 2

MSDNサブスクリプションってこれです。


これがあれば私みたいなインターネット力の低い人間でも、MSの人が電話で懇切丁寧に(うわさによれば、何日でも)対応してくれて、解決へ導いてくれるらしい。すごい。さすがだ…。
課金ユーザーならば、MSは天国だということです。俺も金持ちになれば個人課金ユーザーになりたいですね…。

*1:なにも最初にはいらない

*2:なにせ気合のはいった設定では、IEがはいりさえしません

*3:クライアントでDLして、ファイルだけULすればいい