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


Mac OS XCGI/SSIの実行環境を!<追記>


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

  ●● 追記. 実際の運用に関して ●●●●●    
ミナ んんん〜〜〜? まだなんかあるんですかぁ?
先生 ちょっとだけ、知っておきたいシステム的な大切なおハナシをしようかと思ってな。
実際にMac OS Xを本格的なCGI開発環境として使用するのならば読んで欲しいトコロだ。よって内容は非常に実地的である。
ミナ ははあ。じゃあちゃんと聞きます。ささ話して話してッ。
先生 うむ。では参るぞッ。カツモクして聞けッ。

 ☆ スクリプトファイル作成 ☆   
先生 さて、もうミミタコだろうが、Mac OS XUNIXがベースになっている。
したがって、作成するスクリプトに関しても、コレももう周知のコトであるが、改行コードはLF(UNIX)にしなくてはならない。
ミナ 今までのMac OSで使われてたCRではダメなんですね。やっぱり。
先生 うむ。そのあたりも含めて、複数の改行コードに対応している[ Jedit for OS X ]をススめるわけだがな。
文字コードに関してであるが、コレは実際のサーバでも一緒なのであるが、基本的には文字コードはEUCと言うコトになっているが、これは必ずしも厳密に守らなくてはイケないワケではない(無論サーバ側の設定によるところが大きいが)。
ブラウザ側ではShift-JISで出力することがほとんどだろうから、スクリプトの文字コードもShift-JISで記述してしまえばよい。
ミナ ふむふむ。それで動きがおかしいようだったらEUCに変換すればいいってワケですね。

 ☆ スクリプトの設置場所は? ☆   
先生 通常、ユーザがMac OS XWebを公開、となる場合、
/Users/(username)/Sites/
がユーザのルートディレクトリとなる。
ブラウザでアクセスする場合、ルータやサーバなどのDHCP機能でプライベートIPが割り振られているときは
http://IPアドレス/~(username)/
http://localhost/~(username)/
http://コンピュータ名/~(username)/(ルータ、サーバでDNS解決をされた場合)
のいずれかとなる。
また、モデムやターミナルアダプタなどを使用したPPPによるダイヤルアップでの接続など、ローカルでIPアドレスが割り当てられていないときは
http://127.0.0.1/~(username)/
となるんだ。
ミナ というコトは、たとえばわたしのユーザ名が[ minna ]だとすれば、
/Users/minna/Sites/
てなるワケですね。
実際にCGIを動かしたいときは、この中にスクリプトを設置すればいいんですね。
で、ブラウザで見るときは
http://IPアドレス/~minna/test.cgi
てカンジに?
先生 違うッ。違うのだよミナくんッ! ソコじゃないのだ。スクリプト設置の際にもっとも注意しなければイケないのはココんトコだ。
前出の設定ファイル[ httpd.conf ]をよく見た人なら解ると思うが、382行目にドキュメントルートの位置を設定する記述がある。ドキュメントルートってのは、つまりはサーバがデフォルトで表示させるトコロ、てコト。
ブラウザのURLで言えば
http://IPアドレス/(あるいはhttp://localhost/http://コンピュータ名/
である。
このアドレスで表示させるページとして、初期設定では
/Library/WebServer/Documents/
が指定されているのだ。この行以降の記述はすべてこのドキュメントルート以下のディレクトリに対する設定であるので、このディレクトリの外側にあるユーザ領域にはCGI実行権限が及んでいない。
したがって、スクリプトの設置場所は、
/Library/WebServer/Documents/
が正しい(もちろんサブディレクトリも含めて)。
で、ブラウザでは
http://IPアドレス/test.cgi
となる。
ミナ なーるほど。でもこのディレクトリには、もともと入ってるのがいっぱいありますよ?
先生 うむ。これらは必ずしも必要なファイルではないので、別にフォルダを作ってひとまとめにしてとっておけばそれでいいだろう。
ミナ にしても先生、設置なんて仰々しい言い方をしてるけれど、結局のトコロ、目的のスクリプトを上記の
/Library/WebServer/Documents/
に、Finder上でドラッグ&ドロップするだけなんですよね。
先生 そうそう。この辺の簡便さがローカルサーバのスバらしいトコロだな。

 ☆ パーミッションはどう立てる? ☆   
ミナ トコロで、ファイル自体を置くのはすっごくラクチンですけど、パーミッションはどうなるんですか?
先生 そうだな。ローカルサーバとはいえパーミッションを設定しなければ当然CGIは動かない。
理想を言えば、上記のディレクトリにファイルをコピーした時点でパーミッションが立ってくれればそれがイチバンなのだが、そんなにウマくはいかないのだな。実際。(AppleScriptを使えばウマくできるかも知れないが。)
したがって、スクリプトをコピーしたのち、手動でパーミッションを立ててやらねばならない。
ミナ てコトは結局FTPソフトなんかが必要になるわけですね。あ、さっきのページの実行テストのときは[ Terminal ]を使ってパーミッションを設定したんでしたよね。
先生 そうだったよな。[ Terminal ]を使ったのは、コマンドを打ち込むという作業自体はちょっと面倒くさくっても、それイッパツで設定を済ませられるからだ。FTPソフトでは全ファイルのパーミッションを個別に設定したりしなくちゃいかんからな。
ミナ なーる。
で、打ち込むコマンドってのは・・・。
先生 うむ、さっきのページでも書いたが、

chmod -R 777 /Library/WebServer/Documents/

だ。これは、/Library/WebServer/Documents/ 以下にあるすべてのファイル(サブディレクトリも含む)のパーミッションを777にする、というイミ。ローカルテスト用には個別にパーミッションを設定する必要性も薄いから、コレで充分だ。

 ☆ Mac OS Xを公開Webサーバにできるか? ☆   
ミナ ここまできっちりとCGIが動くんだったら、それこそもう外向けに公開できちゃうんじゃないですか?
先生 まあね。最近ではインターネットへの安価な常時接続環境も構築しやすくなっているから、グローバルIPアドレスを取得したり、それに相当するしくみを構築できさえすれば、それこそ公開サーバにすることも可能だろう。
ただし、そのような使い方は本来のMac OS Xの用途から言えばイレギュラーなモノだ。
それでも何とか外向きに公開したいなら、まずパーミッションの設定をきっちりしなきゃイケないし、[ httpd.conf ]の設定をもう少しちゃんと見直さねばならん。セキュリティ的には/cgi-bin/ディレクトリだけにCGI実行権限を与えたほうが安全だしな。
ミナ ん〜〜〜にわかシステム管理者キブンですね。
先生 UNIXサーバを公開するってのはそういうコトだ。もっともっと勉強しなくちゃイケない。
それに、そもそもUNIXの基本スタンスである多くのユーザでシェアするという本来の用途は、クライアントOSであるMac OS Xでは不十分。いや通常の公開には問題はないが、ユーザごとにCGIの実行権限を個別設定するというのも(少なくとも今回紹介した設定では)出来ない。
そういうのは、やっぱりちゃんとしたサーバ機能を持ったOSが必要になるわけだ。
ミナ ははあ、Mac OS X Serverのコトですね。
先生 そうだな。Mac OS X Server自体はもうけっこう前にリリースされているが、旧バージョンはアップルコンピュータが次世代OSとして開発していたRhapsodyをベースにしている。対して、新しいバージョンは現行のMac OS Xと共通の技術をベースに開発されたOSだ。これはWebサーバのみならずメールサーバ、プリントサーバ、ファイルサーバなど非常に広範な機能を持つ。
ミナ 本格的にサーバを公開するんだったら、OSも本格的なモノを使え、てコトですかね。結論としては。
先生 そういうコト。Mac OS X ServerはサーバOSとしては価格としても(某マジョリティ系OSと比べ)かなり安価なので、本格的な運用を考えるのであればオススメしたい。

 ☆ 終わりに ☆   
先生 さあ、これで今回のMac OS X関連情報は以上ということだ。
UNIXをベースにしているというコトで、Mac OS Xになってやれることがイッキに広がった。
私自身もまだまだ研究中の部分が多いので、これからもイロイロと紹介できる部分があると思う。今後もゼヒ期待してもらいたい。
ミナ わーい。わたしもMac OS X入れよーッと。


<< Previous Page


<< Back To Faq