業務アプリ開発・現場の知恵

プログラミング初学者や未経験者向けの「業務アプリ開発現場はどうやってる?」を疑似書店業務管理アプリの開発を通じて体験しましょう。

Bookim開発環境のURLを設定

XAMPP等各種アプリケーションをインストールされたことと思います。この状態でXAMPPを起動し、Apacheをスタートさせローカルの開発環境へブラウザからアクセスするには、ブラウザのURL欄に

http://localhost/bookmin/index.php

あるいは

http://127.0.0.1/bookmin/index.php

と入力することになります。 これを、「機能マップとアプリの基本構成」で示した通りドメイン名「http://www-dev.bookmin.jp」でアクセスできるようにします。

OSの設定

まず、

C:¥windows¥system32¥drivers¥etc¥hosts

の[ hosts ]ファイルを編集します。[ hosts ]ファイルには拡張子はありません。この[ hosts ]ファイルはIPアドレスとホスト名の対応を制御するための設定ファイルです。この[ hosts ]ファイルを編集することでローカルPCでも[ http://www.bookmin.jp ]のように指定できるようになるわけです。 [ hosts ]ファイルは管理者以外では編集できないようになっています。そこで、[ hosts ]ファイルののプロパティを開きセキュリティの「グループ名またはユーザー名」に、ログインユーザーを追加し、そのユーザーのアクセス許可に変更を追加します。変更権限が追加されたところで、以下のように編集します。PostgreSQLをインストールをした際のユーザー[ postres ]の権限を編集した手順と同じ手順です。

[ host ]ファイルをメモ帳等で開き末尾に

127.0.0.1	www-dev.bookmin.jp pos-dev.bookmin.jp try.bookmin.jp

を追加します。各ドメイン間は半角スペースで区切ります。 ちなみに、一つのIPアドレスに対し、指定できるドメイン名はWindowsの場合8つまでです。

127.0.0.1とは?
[127.0.0.1]はローカル・ループバックアドレスといい、自分自身、マシン自体を指すIPアドレスです。

さて、これで、ブラウザのURLにドメイン名を入れて自分自身にアクセスできるようになりました。 続いて、[ VirtualHost ]という機能を使用して、それぞれのドメインに対応した、フォルダを指定します。 [ VirtulaHost ]とは、1台のサーバーで複数ドメインを運用するための機能です。[ VirtualHost ]の設定はApacheの設定ファイルで行います。

Apacheの設定

次のファイルを開きます。

C:\xammp\apache\cont\extra\httpd-vhosts.conf

開きましたら、末尾に以下を追記してください。

<VirtualHost *:80>
    ServerAdmin  webmaster@www.bookmin.jp
    ServerName   www-dev.bookmin.jp
    DocumentRoot "C:\wwwroot\bookmin\manager"
    ErrorLog     "logs/bookmin.error.log"
    CustomLog    "logs/bookmin.access.log" common
</VirtualHost>

<VirtualHost>

このブロックが、VirtualHostの一つの単位になります。ドメイン名ごとに異なるディレクトを指定したい場合は、このブロックを複数記述します。

[ *:80 ]はこのVirtualHostに対応するIPアドレスとポート番号です。[ * ]はワイルドカードといって、このPCのすべてのIPアドレスが対象であるという意味です。[ : ]コロンで区切られた右側はポート番号です。80ということはHTTP通信を受け付けた場合という意味になります。ここが443ですとHTTPS通信の場合はという意味になります。

例えば、と書いた場合、HTTP通信でIPアドレス[127.0.0.1]にアクセスしてきた場合という意味になります。

ServerAdmin

404エラー等の画面に表示される管理者のメールアドレスです。ServerAdminは無くても構いません。 ServerAdminを省くと[ httpd.conf ]の210行目あたりに記述されている

ServerAdmin postmaster@localhost

このメールアドレスが使用されます

エラー画面をカスタマイズ
[ httpd.conf ]の450行目あたりの#ErrorDocument 500 "The server made a boo boo.”のコメントを外し、ファイル名等を指定します。カスタマイズしない場合は、[ conf/extra/httpd-multilang-errordoc.conf ]の設定に従って表示されます。

この画面のウェブ管理者Linkにマウスのカーソルを重ねると右下に、[ webmaster@www.bookmin.jp ]が表れます。ServerAdminが埋め込まれていることが確認できます。

stock-1

ServerName

ここで指定したドメイン名でアクセスしてきた場合という意味です。複数ドメイン名を指定することも可能 です。

DocumentRoot

ServerNameで指定したドメイン名でアクセスしてきた場合、ここで指定したディレクトリ内のファイルを参照するという意味です。

この例ですと、

http://www-dev.bookmin.jp/

でアクセスした場合、

"C:\wwwroot\bookmin\manager”

内のファイルを参照するという意味です。

なぜこのような設定をするかと言いますと、[ manager ]と同じ階層にある、[ inclueds ]や[ app-data ]といった重要なサーバー設定データやプログラムを外部からアクセスできなくし、保護することができるからです。これらのディレクトリに外部からアクセスする方法をそもそもなくしてしまうというわけです。 しかし、このままでは一つ問題があります。[ manager ]と同じ階層にあり静的コンテンツを格納している[ assets ]にもアクセスできません。するとCSSファイルをブラウザが読み込んだりや画像をブラウザ上に表示できなくなってしまいます。そこで後述する仮想ディレクトリという機能を使用して[ assets ]にはアクセスできるように設定します。

ErrorLog, CustomLog

何かしらのエラーが生じた場合のログをどこに何というファイル名で記録するかを指定します。相対パスで記述する場合、[apache]ディレクトリ以下を記述します。

この例ですと、

C:\xampp\apache\logs\bookmin.error.log

というパスになります。

それでは、[ pos-dev.bookmin.jp ]と[ try.bookmin.jp] 分も追記します。

<VirtualHost *:80>
    ServerAdmin  webmaster@www.bookmin.jp
    DocumentRoot "C:\wwwroot\bookmin\pos-regi"
    ServerName   pos-dev.bookmin.jp
    ErrorLog     "logs/bookmin-pos.error.log"
    CustomLog    "logs/bookmin-pos.access.log" common
</VirtualHost>
<VirtualHost *:80>
    ServerAdmin  webmaster@www.bookmin.jp
    DocumentRoot "C:\wwwroot\bookmin-try"
    ServerName   try.bookmin.jp
    ErrorLog     "logs/bookmin-try.error.log"
    CustomLog    "logs/bookmin-try.access.log" common
</VirtualHost>

 

[assets]を仮想ディレクトリとして設定する

[ httpd.conf ]の330行目あたりにある<IfModule alias_module>探してください。

その中に

Alias /assets "C:\wwwroot\bookmin\assets"
<Directory "C:\wwwroot\bookmin\manager">
    Allow from all
</Directory>

と追記します。

Alias

仮想ディレクトリの設定であるという識別子です。

/assets

仮想ディレクトリ名です。

C:\wwwroot\bookmin\assets

仮想ディレクトリ名に対応する物理ディレクトリパスです。

Allow from all

すべてのアクセスを許可するという意味です。ここにオプションの書き加えることで様々なアクセス制御を行えます。例えば[ Allow from bizapp.co.jp ]を記述するとドメイン名が[ bizapp.co.jp ]のクライアントからのアクセスのみを許可するという意味になりますし、[ Allow ]を[ Deny ]に変更すればアクセスを拒否するという意味になります。

今回の設定ですと、

http://www-dev-bookmin.jp/assets

というリクエストが来たら

"C:\wwwroot\bookmin\assets”

このディレクトリを参照を全て許可するという意味になります。

パスの書き方
[ /assets ]の末尾に[ / ]を書き入れると、つまり[ /assets/ ]とすると、assetsフォルダ以下のサブフォルダにアクセスできなくなります。また、 [ "C:\wwwroot\bookmin\assets” ]の末尾に[ \ ]を書き入れるとApacheが起動時にエラーとなって、起動できなくなります。このような記述ミスで「動かないよう」って、はまってしまうことってよくあるんですね。ソースサンプルとして[ /assets/ ]と記述されているサイトをよく見かけます。もしかすると環境によって記述方法に違いがあるのかもしれませんので、一概にそれが間違いとは言い切れません。これに限らずサンプルソース通りにサーバーの設定情報等を編集してもうまくいかない場合など、ちょっとした記述の違いも疑ってみるのもいいかもしれません。