M a c   O S   X   T i p s   1 - 3
Top > FAQ > Mac OS X Tips 1-3


Mac OS XCGI/SSIの実行環境を!<後編>


  ●● Flow ●●●●●
1st 「ルートユーザ」の有効化 [Netinfo Manager]
2nd 「ルートユーザ」でログイン --
3rd システムファイルの表示 [TinkerTool]
4th Perl本体をローカル
ディレクトリにコピー
[Terminal]
5th httpd.conf」の書き換え [Jedit](推奨)
6th 実行テスト --
追記 実際の運用に関して --

  ●● 5th. 「httpd.conf」の書き換え ●●●●●    
先生 さていよいよ最後だッ。このセクションはそれはそれは手間がかかるぞ。
ミナ 負ぁッけなァいぞォぉ〜ッ。
先生 このセクションでは、Mac OS Xで稼働するWebサーバソフト[ Apache ]の設定ファイルに手を加えて、CGIがウマい感じに動作するようにする。
ミナ ほほう! ホントっぽくなってきましたね。
先生 なんという言い草か。
・・・まあ良い。んで、実際ドコにApacheの設定ファイルがあるかというと、
/private/etc/httpd/
の中に[ httpd.conf ]というファイルがある。コレがそうだ。
ミナ 実際んトコ、どうやって編集するんですか? とりあえず、前のセクションでも使った[ TinkerTool ]で、対象のファイルがFinder上で見えるようにしとかないとイけないですよね?
先生 ふむ確かにそうだな。もちろんやり方はいくつかあるが・・・まずは[ TinkerTool ]を使わない、「UNIX的な」方法を紹介しよう。
UNIXには標準で[ vi ]というテキストエディタがインストールされている。また、ちょっと高級な[ emacs ]というテキストエディタもついている。これらのソフトは[ Terminal ]から起動できるから、ルート権限でviを起動し(ルート権限がなければ変更を保存できないためである)目的のhttpd.confファイルを開けば、シェルウィンドウ内で編集していける・・・が。
ミナ ・・・うっわ〜〜〜先生ぇコレすっごいメンドい。ていうか慣れない。やりづら〜い。
先生 そうなんだよ。UNIXではアッタリマエのように使われているエディタであるが、マックのインターフェイスに慣れたヒトにはコマンドラインでの編集はあまりに勝手が違いすぎる。効率悪いよな。
ソコで取り出しましたるは全スクリプター必携のテキストエディタ、[ Jedit for OS X ]、とゆうワケだっ!

[ Jedit for OS X ]は以下のページで手に入る。

http://www02.matsumoto.co.jp/


vihttpd.confを開いたところ。とてもやりづらい。

ミナ じゃあ、まずは[ TinkerTool ]で目的の[ httpd.conf ]を可視状態にして・・・あとはコレをJeditで開くワケですね。
先生 そうそ。実は標準でついてるテキストエディタ[ textedit ]でも開けるには開けるのだが、コレでは行数が表示されないため編集しづらい。その点Jeditはウィンドウの左に行数表示が出るのでらっくちん。もっとも最初「このアプリケーションで開けるかどうかは不明です」と言われるが、気にせず開くのだ。
するってえと、実に1000行に及ぶ設定が書き込まれているのが見えるはずだ。
ミナ せせせせ1000行っ!? そんなに書かなきゃイカンのですか?
先生 慌てなさんな。直すべきところはこのうち10数行程度だ。
ただ、仮にもシステムをイジりにかかるワケであるから、万全は期さねばならん。一応、[ httpd.conf ]を複製して[ httpd.conf.backup]とでもしておいて同じディレクトリに置いておき、イザッて時スグにモトに戻せるようにしておこう。
ミナ ははあ。バックアップはシステム管理者のもっとも大切な仕事のひとつですもんね。
先生 非常に受け売りくさい台詞だがまあその通りだから良しとしよう。
トコロで、この設定ファイル、
Perlと同じように、#で始まる行はコメント扱いになっている。もともと書かれているコメントは設定に関する重要な情報を含んでいるから、後学のためにざっとでも良いので読んでおくことをオススメする。無論英語での表記であるが。
ミナ わたしドイツ人なんで英語はちょっと・・・。
先生 まあどちらにせよ修正がウマくイけばそうそう開く機会があるファイルでもないからな。これぞ好機、てイミで、な。
さて、お待たせしたなッ。それではMac OS XPerlを動作させるための設定ファイル[ httpd.conf ]の修正個所を以下に公開ダッ!!
ミナ 言い忘れてましたけど、修正に関しては自己責任でお願いしますね〜。

【1】 HTTPサーバ機能の設定
【 368行目 】
変更前 Options FollowSymLinks
変更後 Options All

【 369行目 】
変更前 AllowOverride None
変更後 AllowOverride All
 そもそもの機能としてCGIを有効にしなくてはいけない。上記2行はHTTPサーバレベルでCGIを有効にする記述。

【2】 ルートディレクトリ(含サブディレクトリ)でのサーバ機能の拡張
【 391行目 】
変更前 Options Indexes FollowSymLinks MultiViews
変更後 Options Indexes FollowSymLinks MultiViews Includes ExecCGI
 ルートディレクトリ以下でCGI/SSIの実行権限を与える記述。

【3】 .htaccessファイルで上書きできる機能の設定
【 398行目 】
変更前 AllowOverride None
変更後 AllowOverride All
 ユーザが任意で設置できる設定ファイル.htaccessでの実行権限の追加を許可するか否かを設定する記述。.htaccessを使わないのであれば変更の必要はない(と思われる)。

【4】 ブラウザでディレクトリ指定の際にデフォルトで表示するファイルタイプの設定
【 437行目 】
変更前 DirectoryIndex index.html
変更後 DirectoryIndex index.html index.htm index.shtml index.cgi
 ブラウザでのディレクトリ指定(例:http://www.studiohs.com/digitsch/)の際に、デフォルトとして返す拡張子を設定。初期設定ではディレクトリ内にindex.htmlファイルがなければ404(File Not Found)を返すが、上記のような記述を追加することでデフォルトファイルの幅を広げられる。

【5】 スクリプトエイリアスの設定
【 615行目 】
変更前 AllowOverride None
変更後 AllowOverride All

【 616行目 】
変更前 Options None
変更後 Options All
 スクリプトエイリアスの対象ディレクトリCGI-ExecutablesCGIを有効にする記述。【1】【2】でルート以下全体を実行可能ディレクトリにしているので、cgi-binディレクトリをあえて使用しないかぎりは修正は不必要かも?

【6】 ファイルタイプの拡張
【 828行目 】
変更前 #AddHandler cgi-script .cgi
変更後 AddHandler cgi-script .cgi
 サーバ上で.cgiファイルをCGIスクリプトとして認識できるようにする記述。文頭の#を削除する。

【7】 SSIの有効化
【 833-834行目 】
変更前 #AddType text/html .shtml
#AddHandler server-parsed .shtml
変更後 AddType text/html .shtml
AddHandler server-parsed .shtml
 SSIを有効にし、.shtmlファイルをSSI組み込みファイルとして定義する。文頭の#を削除する。

ミナ ・・・ッと・・・、コレで全部ですか?
先生 ふむ。修正に誤りがないかをしっかり確認して、保存して閉じる。一応保存する前にもう一度記述に間違いがないか、バックアップはとってあるか、チェックだっ。
ミナ ふう・・・山は越えたってカンジですね。

  ●● 6th. 実行テスト ●●●●●    
先生 さてさて。ココまでの作業で、すべての設定は終了だ。
ミナ あとは実際にサーバを稼働させて、動くかどうかをテストするだけ、ですね。
先生 そうだな。ココまでの流れでイッてれば、現在はルートユーザでログインしているはず。とりあえず再起動して、通常作業ユーザでログインし直そう。
ミナ ・・・はイッ。オッケーです。次は?
先生 うむ。初期状態ではWeb共有サービスはオフになっている。これを有効にするために、[ システム環境設定 ]を起動し、[ 共有 ]を開く。
で、真ん中へんの[ Web共有の開始 ]をクリックし、ついでに[ FTPサービスを開始する ]にもチェックを入れておこう。



ミナ いよいよッいよいよなのだァですねッ。
先生 よし。ここからは非常に実地的な作業だぞ。
まずは、コレをダウンロードして、StuffIt Expanderで解凍してくれ。

 CGI実行テスト用スクリプト(60kb)

解凍して出来たexectestフォルダを、
/Library/WebServer/Documents/
というディレクトリの中にコピーしてやろう。
次は、また[ Terminal ]の出番だ。

chmod -R 777 /Library/WebServer/Documents/

と打ち込もう(これは、/Library/WebServer/Documents/以下にあるファイルすべてのパーミッションを777にしてちょ、というイミ)。
処理中に「このファイルのパーミッションを変更する権限がありません」という旨のメッセージが出るが、それでも通常ユーザで作成/設置したファイルには変更が及んでるので問題ない。
せっかくFTPサービスを有効にしているのだから、FTPソフトで上記のディレクトリに入って3つのスクリプトファイルにパーミッションを立ててももちろんイイのだがな。
ミナ はイッ。パーミッションオッケーでスッ。
先生 よし。そしたらいよいよブラウザで動作チェックだっ。
ブラウザを立ち上げて、アドレスバーんトコに
http://127.0.0.1/exectest/test1.cgi
と記入してリターンッ!
ミナ ・・・おオーッ! イラストとなんかヤバめの数字や文字列がいっぱい出たーッ!
先生 オッケェッ! ミゴトにCGIが動作したぞ。
もしこれで動かないようだったら、ディレクトリ構成は正しいか、パーミッションはきちんと立っているか、また設定ファイルに間違いがないか、を確認してくれッ。
ミナ やあやっとたどり着いたって感じですねえ。
先生 まあまあ。もう少し確認すべきコトがあるぞ。
今のは、Perlのパス指定が/usr/bin/perlだった。
今度は、ブラウザのアドレスバーに
http://127.0.0.1/exectest/test2.cgi
と記入してリターンだっ。
ミナ ・・・うん、コレもちゃんと表示されましたよ。
先生 よろし。いまのはパス指定が/usr/local/bin/perlのスクリプトだ。
さっきのがオッケーで、今度のがダメだった場合は、/usr/local/binディレクトリにPerlが正しくコピーされていないというコトになる。前のページを参照し、もういちどトライしてみてくれッ。
・・・で、最後にSSIの動作チェックだ。ブラウザのアドレスバーに
http://127.0.0.1/exectest/testssi.shtml
と記入してリターンだっ。
ミナ ・・・はイッ!! コレもオッケーッス!!
先生 ・・・ふうッ。これですべての設定は終了だ。ごくろうさんだったね。
なお、この次のページでは実務に関する情報や、知っておいたほうがよい事柄についていくつか述べている。Mac OS Xを本格的なCGI開発環境として実務に使用する際には一応目を通してみてくれ。
ミナ ・・・や〜〜〜それにしても今日は疲れた〜〜〜。もう寝ますッ。

<< Previous Page | Next Page >>


<< Back To Faq