homeホームHTMLに役立つヒントMAC OS X Darwin Tips > MAC OS X PB Darwin Tips

Mac OS X PBDarwin Tips

※今はなきパブリックβ版に関するTipsです。これらのTipsはすでに使えません。

※僕は体系的にUNIXの勉強をしたことがないシロートです。このページの記述は間違ってるかも。また、クローズドなサーバを前提にしているので、公開サーバとしては非常識な設定かもしれないです。自分でも試してみようという方はオウンリスクでお願いします。


■ 目次 ■
メモ ●デベロッパーツール ●nkf ●cgi ●SSI ●cgi2 ●cgi3 ●Options ●リンク 

 自分用のメモです。日々改訂してます。MAC OS PB(パブリックベータ)のUNIX系のTipsです。フツーのMACユーザには用がありません。MACをサーバにしちゃおうという人にだけ役に立ちます。僕の目的はperlスクリプトの開発環境として使うことです。今まではMAC上でMACperlで開発していたから、MAC perlとUNIX perlの両方で動くように記述しないといけなかった。これが片方でよいとなればありがたい。
 それに、UNIXとMACの二つのOSが同時に走ってるんだから(ほんとはちょっと違うけど)、これを使わない手はない。

 実はまだうちのMACにはOS Xを入れていません(2000/10/29入れました)。だって仕事に使ってるんだもーん。同じ日にPBを買った同僚が自分のMACに入れたので(PowerBook G3 ブロンズ 400MHz 192MB)、それを覗かせてもらってわかったことのメモです。もっといじらせてくれないかな〜。su権限ほしいな〜。壊れたっていーじゃんか。どーせぼくのMACじゃないし。

2000/11/16 デベロッパーツールに関して、公の場でも討論して良いことになったそうです。→Developer Toolsはもはや秘密ではない さっそく削除してあった関連の記述を復活させました。


●メモ
・WWWソフト ▲ページトップ
wwwソフトはapache 1.3.12。

・webで見られる領域 ▲ページトップ
/HD/Library/webwerver/Documents/ (ファインダーで見た場合)
 ここに入れたものがアクセス可能になる。terminalでpwd(パスを表示するコマンド)してみると「/Library/webserver/Documents」とパスが表示される。ファインダーのパスとちょっと違うようだ。そーでなきゃ困るわけですけど。

・webサーバとして機能させる ▲ページトップ
1. 「doc」の「System Preferences」から「ネットワーク」の「TCP/IP」でIPを設定する。LANなどを通じてインターネットに接続されているなら、OS9そのままの設定でOK。
 モデム接続でスタンドアロンサーバとして機能させたいなら、TCP/IPを「手入力」にして「192.168.0.1」に設定すればよい。試しに「127.0.0.1」(ループバックアドレス)に設定したら立ち上がらなくなってしまったので注意。こうなるとOS Xを再インストールするしかない。
 
2. 同じく「ネットワーク」の「サービス」をクリックしてSU権限(「編集できません」をクリックしてIDとパスワードを入力)で「Webサーバ」を「入」にする。
 
3. 設定したIPにブラウザでアクセスすると、ちゃんとMACがwebサーバとして機能していることがわかる。でもcgiが動いてないみたい。

・perlは5.6.0 /usr/bin/perl ▲ページトップ
 perlの最新版。これまでのperlスクリプトはまあ大丈夫でしょう。

・terminalを使う ▲ページトップ
 /Applications/Utilitiesにある。よーするにtelnetソフトである。「telnet サーバ名」で他のサーバに接続できる。terminalの設定はアプリケーションのプレファレンスメニューで行う。

・シェル ▲ページトップ
シェルはcsh、tcsh、zshが入っているみたい。terminalで接続するとtchが立ち上がる。これはterminalの環境設定メニューの「シェル」で変更できる。え? シェルの場所がわからない? シャーロックで検索すればバッチリですよ。ああ、OSを行ったりきたりできるのってやっぱり便利。

・エディタもちゃんと入っている。 ▲ページトップ
viエディタもemacs(Mule)も入っている。「vi簡単マニュアル」はこちら。


●デベロッパーツール ▲ページトップ 

・デベロッパーツールの必要なわけ
 PS X PB標準ではccもmakeといったコンパイルに必要なコマンドが削られている。デフォルトの「/usr/bin/」の中味をここに示す。NAMAZUをインストールしたりサーバ機能を拡張したりといったコンパイル作業が必要なことを行いたいなら、デベロッパーツールをインストールしなくてはならない。

・ファイルの取得
 まずはMac OS X Public Beta Developer Toolsをアップルからダウンロードしてとってくる。これにはADCのメンバーになる必要がある。料金はかからない。それにしてもメンバーになるアンケートが長い(;_;)
<URL:http://developer.apple.com/membership/macosx.html>

 ADCに入ったら「Download Software」→「Mac OS X」と進んでダウンロード。恐ろしいことにツールキットは69.6MBもある。
「Download」をクリックするといきなり画面に中味が表示されるのにもビックリ。途中で止めて、ファイルメニューから「別名で保存」して無事ダウンロード。1時間ちょっとかかった。

・インストールの失敗
 自分のPowerBookにインストールしようとしたが、何度やってもうまくインストールできない。同僚のPowerBookにインストールしたら、1発でうまく行った。インストール時間は20分ほど。
 両者の大きな違いは、僕のPowerBookがパーティションを切っていて、OS XとOS 9を分けているのに対し、同僚のPowerBookはパーティションが一つだという点である。もう一つ、うちの時にはterminalからtarコマンドで解凍したが、同僚の時にはStuffIt Expander 6.0(OS Xに付属しているものではない。こちら)で解凍している。
 なにが原因かは分からない。
 なお、インストールの最初の場面で管理者の認証をするのだが、どういうわけか2回認証しないと先に進めなかった。

・拡張されるもの
 で、デベロッパーツールでどんなものが拡張されるのか、「/usr/bin/」の中味をこちらに示します。

・インストールの工夫
 二つ思いついた。一つはまっさらな状態でインストールすること。もう一つは、僕のPowerBookは、OS Xインストール時にrootの名前と自分の名前(Usersフォルダにできる個人用フォルダの名前)を別にしていたことである。デベロッパーツールのエラーに「No such file or directory」と表示されるのは、ひょっとしてsu権限が不十分だからではないかと思ったのである。
 そこで、OS Xをインストールし直し、その際にrootの名前と自分の名前を一致させてみた。直後にデベロッパーツールをインストールすると、見事に一発でインストールできた。
 何が原因なのかわからないが、インストールがうまく行かない人は、この方法を試してみてはどうだろう。
 言い忘れてました。自分のPowerBookにインストールするときには、ディスク容量が途中で不足しないように空き容量の大きい(空き容量1.3MB)パーティションでデベロッパーツールの解凍とインストールを行っている。

・ディスク容量
 なお、デベロッパーツールのインストールは、インストール時に269MBの容量が必要と表示されるが、実際には360MBほど容量を喰うようだ。これはインストール前とあとの空き容量を比べた数字である。うちのPowerBookの場合1.2MBのパーティションにOS Xを入れた。OS Xとデベロッパーツールのインストールで、空き容量はわずか63MBととなってしまった。やはり2MB程度はパーティションがほしい。
 OS X正式版がでたら、パーティションを切り直すことにしよう。


●nkf

・nkfは標準では入っていないので入れてやります。nkfはNetwork Kanji code conversion Filterという漢字コード変換フィルタ。日本語を扱うUNIX界では大変広く使われていますし、これを利用するアプリケーションも多くあります。日本のサーバに入っていないとしたら「えー!?」ってなもんです。 ▲ページトップ

nkfのインストール 〜これで正しいのか自信なし。

 nkfをインストールしてみる。nkfのインストールにはmakeが必要なため、OS X PB標準ではできない。必ずデベロッパーツールをインストールしておく必要がある。

・ファイルの取得
 FreeBSDの左にあるPorted Applicationsをクリックして、nkfをサーチするとすぐに見つかる。バージョンは1.71。sourceをクリックして「nkf171.shar」をダウンします。126KBあります。

・ファイルの展開
 ファイルの置き場所は一応「/library/receipts/」にしました。ここに展開用ディレクトリ「nkf171」を作り、その中に「nkf171.shar」を置きます。
 なぜかファインダー上ではデスクトップにある「nkf171.shar」が見つからなかったので、シャーロックでnkfを検索して見つかったファイルをドラッグして移動させました。以下、今いる場所は「/library/receipts/nkf171」とします。

sh nkf171.shar ←ファイルを解凍する。いろいろファイルやらディレクトリができます。
make ←コンパイルする
cd nkf ←先ほどの展開で作られるNKFディレクトリにおります
perl Makefile.PL ←前準備
make ←コンパイルします
make test ←一応テスト。う、なんかMIMEテストに失敗している。大丈夫か?
su ←スーパーユーザにスイッチ
パスワード ←スーパーユーザのパスワード
make install ←インストールする
exit ←スーパーユーザを抜ける

 以上で終わりです。なんか、テストに失敗しているし、これで正しいインストールなのか全然自信ないです。正しいインストール方をご存じの方はDarwin掲示板までお願いします。


●cgiを使えるようにする ▲ページトップ 

※以下の説明はスタンドアローンサーバだからできることです。特に、cgi-bin制限を外してdocuments以下全体にわたってcgiとSSIが動くようにしていますが、本来はdocumentsではcgi-binの制限をかけたままにしておき、addusrしてユーザーに開放した領域だけでcgi-binの制限を外す方が安全です(のはず)。サーバを解放する場合はそのあたりに注意すること。

cgiを動かす設定 〜cgi-bin制限付き

2000/10/26

cgiの設定を実際にやってみました。オリジナルのapache.confはapache.conf.orgと名前を変えてとっておくこと。

●/Library/webserver/Configuration/apache.confの書き換え(以下の3箇所)

・624行付近
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options None
 を

<Directory "/Library/WebServer/CGI-Executables">
AllowOverride All
 に(これは.htaccessを有効にするという意味なので必要ないかも)
Options All
 に(Optionsのメモ

・822行付近
#AddHandler cgi-script.cgi
 の行頭の#を外して
AddHandler cgi-script.cgi にする。

・827行付近
#AddType text/html .shtml
#AddHandler server-parsed .shtml
 の行頭の#を外して
AddType text/html .shtml
AddHandler server-parsed .shtml
 に

●/Library/webserver/CGI-Executables/printenv を printenv.cgi という名前でコピーしてterminalから .chmod 777 printenv.cgi した。これを/Library/webserver/documents/ の下に持っていってブラウザからアクセスしたが、「You don't have permission to access /printenv.cgi on this server」と表示されて動作しなかった。
 documents/cgi-bin/を作って、この下に入れて試してみた。これもダメ。

 てーことは上の解説、間違ってるってことですね。すみません。どーやればいいんだろう。エラーにでてくるパーミッションはファイルパーミッションのことではないはずだ。ちゃんと設定してるもんなぁ。

 configファイルがapache.conf1本に統合されたのはバージョン1.34以降と思っていたが、OS Xのapacheは1.3.12なのに1本になっている。うーむむむ。

●解決。cgiファイルの置き場所を間違えていた。この設定ではcgiファイルを /Library/webserver/CGI-Executables/ に置くとcgiが動くようになる。printenv.cgiはここにおいてバッチリ動いた。めでたしめでたし。
 なおアクセスするときには http://IPアドレス/cgi-bin/cgi名 です。上のprintenv.cgiの例では http://IPアドレス/cgi-bin/printenv.cgi となります。

●この方法でとりあえずcgi動くようになりますが、UNIX的に見て、というか、サーバ管理者として正しい設定なのかどうか自信なし。

●好きな場所でcgiを使いたいので、/Library/webserver/CGI-Executables/に置くという制限を取り除きたいです。これは後日試してみます。

 なんか、後ろで「オレのMACが壊されていく」とか声が聞こえますが、「みんなのためだ、死んでくれ」と無視します。そんな大したことしてないしね。

cgi-bin制限を外す設定 〜成功しました

2000/10/28

 前回cgiを動かすことに成功しましたが、cgiスクリプトの置き場所がcgi-bin(/Library/webserver/CGI-Executables/)に制限されていました。この制限を外します。
 /Library/webserver/CGI-Executables/とcgi-binの置き換えを無効にして、/Library/WebServer/Documentsの中でcgiとSSIを有効になるように設定します。

その1 617行付近 置き換えを無効に
ScriptAlias /cgi-bin "/Library/Webserver/CGI-Executables" の行頭に#を付けて

# ScriptAlias /cgi-bin "/Library/Webserver/CGI-Executables" として置き換えを無効にします。

その2 624行付近 制限も無効に
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride All 
(上のように直していなければNone)
Options All (上のように直していなければNone)
Order allow,deny
Allow from all
</Directory>
 を、各行頭に#を付けて

# <Directory "/Library/WebServer/CGI-Executables">
# AllowOverride All 
(上のように直していなければNone)
# Options All (上のように直していなければNone)
# Order allow,deny
# Allow from all
# </Directory>
 として無効にします。

その3 399行付近 /Library/WebServer/DocumentsでcgiとSSIを有効にする。
Options Indexes FollowSymLinks MultiViews  を

Options Indexes FollowSymLinks MultiViews Includes ExecCGI  とする(Optionsの設定

 リスタートさせて、テストのために/Library/WebServer/Documents/に先日のprinsenv.cgiを置いてブラウザでアクセスします。アクセス先は「http://IPアドレス/prinsenv.cgi」となります。前回と違って「cgi/bin」がない点に注意。
 動きました? 動かなかったら念のためprinsenv.cgiの改行コードとパーミッションをチェックしてください。

 これで/Library/WebServer/Documents/以下に置いたcgiがすべて動きます。


●SSIを使えるようにする ▲ページトップ 

SSIを動かす 〜成功しました

2000/10/28

 上の設定でSSIも有効になります。
 SSIのテストはindex.htmlのコピーを作ってindex.shtmlとして、中に次の行を付け足してみました。

<!--#config timefmt="%y/%m/%d %H:%M" -->
[改定日: <!--#flastmod file="index.shtml" -->]

 これで改定日が表示されれば成功です。実際にテストしてSSIが動いていることが確認できました。


●CGIその2 別パーティションでも使えるようにする。 ▲ページトップ 

別パーティションを公開する 〜成功しました

2000/10/30

 自分のMACにもOS X入れました。PowerBook G3 Bronze keyboard 333MHz 192MBです。同僚のPowerBookがOS XとOS 9が同じパーティションであるのに対し、僕のPowerBookはOS 9は別パーティションにある。ホームページのデータはOS 9側のパーティションにある。こちらをWEBとして公開しなくては、「サーバにアップする前に手元でシミュレーションする」という僕の目的は達成できない。
 そこで、別パーティションにあるホームページ領域を公開することにする。

●ドキュメントルートを変更する
 WEB公開するフォルダを変更します。これは簡単。システムプレファレンスから「ネットワーク」を選択し、「サービス」タグで変更できる。ここにある「書類フォルダ」を変更してやればよい。

 ちなみに、terminalで見てみると、別パーティション(OS 9領域)にもちゃんとモード設定が使えるようになっている。これまでのMACにはパーミッションの概念がなかったのでどうなるかと思っていたが、やっぱり全体がUNIXになるのね。


●CGIその3 /usr/local/bin/perlでも動くようにする。 ▲ページトップ 

/usr/local/bin/perlでも動くようにする 〜成功しました

2000/10/30

 perl スクリプトは、最初の1行目にperlの位置を書くことになっています。OS Xのデフォルトでは「/usr/bin/perl」にperlがありますが、シンボリックリンクを使って「#!/usr/local/bin/perl」としても動くようにしてみます。terminalで作業します。

cd /usr/local ←移動する。
su ←スーパーユーザー(管理者)になる
パスワード ←スーパーユーザー(管理者)になる
mkdir bin ←binディレクトリを作る。
cd /usr/bin ←perlのあるディレクトリに行く
ln -s perl /usr/local/bin ←シンボリックリンク(エイリアス)を作る
ln -s perl5.6.0 /usr/local/bin ←シンボリックリンク(エイリアス)を作る
exit ←スーパーユーザーを抜ける

 以上の作業で、スクリプトの1行目が「#!/usr/bin/perl」でも「#!/usr/local/bin/perl」でも動くようになります。


2000/10/31

●問題発生
 「●CGIその2 別パーティションでも使えるようにする。」で別パーティションに公開ルートを移したところ、なぜか「/usr/local/bin/perl」では動かなくなった。「/usr/bin/perl」ではちゃんと動くのだが。

●解決方法
 シンボリックリンクが利かないなら、ハードリンクではどうかと思って試したら、これが当たった。上記で、シンボリックリンクを作る2行分を次のようにしてハードリンクを作る。

ln perl /usr/local/bin ←ハードリンクを作る
ln perl5.6.0 /usr/local/bin ←ハードリンクを作る

 よーするに「-s」というシンボリックリンクを作るオプションを外してコマンドを打つだけだ。
 これでバッチリ別パーティションでも「/usr/bin/perl」でも「/usr/local/bin/perl」でも動くようになった。ターゲットサーバがどちらの設定であれ、シミュレーションができる。

メモ:シンボリックリンクがただのエイリアスで実態がないのに対して、ハードリンクはオリジナルのライブコピーである。オリジナル、またはハードリンクのどちらかを変更すると、もう片方も内容変更が反映されるのである。オリジナル分だけハードディスクを消費することも大きな違いだ。今回の場合、perlとperl5.60.合わせて容量は20kほどである。


●AllowOverride Optionsの設定 ▲ページトップ 

 cgiのところででてきたAllowOverrideのOptionsに関するメモ。Optionsを指定しない(Options行を記述しない)場合は関係ない。Optionsの各設定は半角スペースを使って複数記述できる(例:OptionsExecCGI IncludesIndexes)。

Optionsの設定

意味

Options All すべてのオプションを有効にする(Multiviewsを除く)。
Options ExecCGI CGIを有効にする。
Options Includes SSIを許可する。
Options IncludesNoEXEC コマンド(#exec)の実行を除いてSSIを許可する。
Options Indexes index(ファイルリスト)表示を許可する。
Options FollowSymLinks シンボリックリンク(MACでいうエイリアス)を有効にする
Options SymLinksIfOwnerMatch シンボリックリンク(MACでいうエイリアス)を有効にする。上のオプションとの違いはシンボリックのオーナーと実態のオーナーが一致した場合だけ許可します。
 このオプションなら上と違って他人の領域に進入することができません。シンボリックリンクできるのは自分の所有するファイルやディレクトリだけということになります。
Options MultiViews Multiviewsを許可する。


●役に立つリンク ▲ページトップ

 やはりまだ時期が早いのか、OS X PBについての記事は以下のリンクにもほとんどありません。買ったよという報告くらい。特にUNIXというかFreeBSDというか、Darwinの話はないですねー(;_;)

 MACユーザー系のページでは、OS9との共存というか互換というか、そのあたりに気がいっていて、UNIXサーバとしての記事を見かけません。UNIXサーバ系のページでは、基本的なインストール後の設定変更についての解説となっているので(当たり前ですね)、OS Xでは応用できないものが多いようです。なぜなら、最初からOS XのUNIXはカスタマイズされているから。しかもかなり。まずはどこがどう変更されているのか突き止めて、それから設定変更に取りかかる、というのが正しい態度でしょうね、本当は。
 えーい、そんなの面倒なんじゃー、オレのMAC(他人のMACだけど)のことを解説してくれ!

 ●FreeBSD OS XのベースはFreeBSDというシステムなので、ここが総本山。各種パーツもここで手に入る。日本語ページ
 ●FreeBSD Project(JAPAN) FreeBSDの日本の本家。
 ●open source Darwin アップルのダーウィンページ。Darwin(ダーウィン)というのはFreeBSDをベースに開発されたUNIXシステムのこと。OS Xのコアを形成してます。
 ●Darwinists's Houseまたはダーウィン使イ共之家 ダーウィン関係のディープな情報が載ってます。
  ・Darwin FAQ 日本語版 これは労作! すごいです。
 ●Darwinists's room ダーウィン関係のTipsが載ってます。
 ●Darwin -jp Mailing List ダーウィンの日本語メーリングリスト。
 ●Tech-arts Mac OS X Home Page OS Xサーバーやダーウィンについてのメーリングリスト。
 ●アップルMac OS X public Beta はじめに アップルのページ。下の方にDarwinの情報の入ったPDFがある。しかも日本語だ。うれしー。
 ●MacWIRE  MacWIREのトップページ。情報が速い。
  ・MacWIRE OS X PB特設掲示板  OS Xの掲示板ですが、まだUNIX関係の話題はないですね。
  ・MacWIRE OS X PB 関連記事リンク  MacWIREのOS X PB 関連記事一覧。
 ●DIG OUT! OS XのUNIXTipsを載せている数少ないサイト。心強いです。Think & WriteコーナーにOS X PBの裏技があります。
 ●猿でもわかるFreeBSD いろいろ参考になります。
 ●FreeBSDパワフルリンク なんか、パワフルそうです。
 ●UNIX関連のページ もろUNIX。参考になります。
 ●Fukuyama's HomePage MACでUNIXのリンク(林檎の食べ歩き)が充実。
 ●MACでcgiのテスト OS Xではないですが、アパッチの記事が参考になります。
 ●ちょ〜簡単Apache for win32の初心者向け解説 UNIX系。
 ●サーバーヅクリ UNIX系。FreeBSDでサーバを作る説明。
 ●MAC OSの館  MACOS全般。X PBの情報はアップルの公式のものと同じ。
 ●Generation X  ベータレポートページがある。
 ●Macintosh Lab MACOS全般
 ●Mac Fan  雑誌MAC FANのweb版。ニュースが速い。
 ●Browsing Mac OS! OSに特化した情報。話題が多い。
 ●Mac OS Supporter's Net  MACユーザーのたまり場。
 ●AppleScript名前通りアップルスクリプトのこと。そのうち使うかも。

 ●翔泳社 FreeBSD関係の本を出している出版社。立ち読みコーナー、注文コーナーあり。