【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?

MACについてはあまり詳しくなく、困ってしまったので質問させていただきます。

現在MACのローカルにてCGIを起動させようと思っております。
そこでいろいろなサイトを見て設定したのですが行き詰ってしまいました。

現在の設定は「httpd.conf」は主に下記サイトを参考に修正
http://homepage.mac.com/dnagase/macosx/perlcgi.h …
さらに諸事情によりCGI-BIN以外でもCGIを動かしたい為下記サイトの6-2を参考に修正
http://szdy.info/docs/apache_on_osx/
しました。

WEB共有はしたので「http://127.0.0.1/」でApacheの初期画面は表示されました。
ですが、ユーザーローカルの「http://127.0.0.1/ユーザー名/」が表示されません。

また「ユーザー名.conf」をTerminalのcpコマンド?にてローカルに落とし、
修正後「sudo cp」にて上書きして、再度cpコマンドでローカルに落とすと修正が反映されていませんでした。

最終的には、一つのフォルダへ格納したCGI(出来ればPHPも)とHTMLがTerminalのコマンドを使わずに追加、削除出来てブラウザから見ることが出来る状態にしたいです。

いろいろ試したのですが解決出来ませんでしたので何か解決方法、試す方法はないでしょうか。

もちろん元々のApache以外のサーバーソフトでもぜんぜんかまいませんのでどうかよろしくお願いいたします。

A 回答 (5件)

> 「最終的」というのはWINのHTTPDで言うルートフォルダ以下のフォルダと考えていただければいいです。



Mac OS Xには、各ユーザのためのホームページスペースがホームディレクトリのサイトフォルダにあります。
CGIプログラムは、Apacheの設定によりますが、サイトフォルダ自身、または、そのサブフォルダに入れることができます。
以下は、サイトフォルダ自身、または、そのサブフォルダCGIで利用するための設定です。
長いので最初に的に当たっているかチェックしてください。

「/etc/httpd」ディレクトリにある「httpd.conf」を管理者権限で開いて
「#AddHandler cgi-script .cgi」ディレクトリという一行を探し頭のコメントアウト「#」を除去します。

次に「/etc/httpd/ユーザ名」ディレクトリにある「ユーザ名」というファイルを開いて以下のように記述します。

<Directory "/Users/wayfarer/Sites/cgi-bin/">
Options Indexes MultiViews ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>

これらの編集はターミナルアプリケーションを使って「nano」というエディタを使うのがお勧めですが、テキストエディットの標準テキストモードでも可能です。

しかし上記設定変更が間違っていないか確認する作業、「sudo apachectl configtest」というおまじないで実行する設定ファイルの文法チェックはターミナルを用いる必要があると考えます。

また、「sudo ln -s /usr/bin/perl /usr/local/bin」というおまじないでPerlのシンボリックリンクも是が非でも作っておくべきです。
この後Apacheを再起動しますが、システム環境設定の共有パネルでできるのはご存知ですね。「sudo apachectl restart」(ターミナル)

さて、うまく行くようになったと仮定してプログラム文書のパーミッション設定はどうしますか? (私はターミナルを使っているのですが…)
私はOS Xがターミナルの裏側に隠している様々な機能を使って行くにはターミナルに少しづつ慣れて行った方が良いと思います。
    • good
    • 0

>また、あくまでローカル(オフライン)でのCGIの起動を考えています。


>「最終的」というのはWINのHTTPDで言うルートフォルダ以下のフォルダと考えていただければいいです。それがどこのフォルダであれ、一つのフォルダ以下ならば・・・・

cgiの前にもっと端的に説明する癖を付けましょうwww
あなたの言う「最終的」とはWindowsをサーバーにして
cgiを動作させるということ?
そうであればMacでなく最初からWinで試すべきw

もし(というか、こっちのことだと思うけど)Macで動かすのだが、apacheのドキュメントルートでcgiを
動かすという意味であれば、上に引用させてもらった言葉は書くべきじゃないわwww

それと
>CGIはWINにて何個か作成していますのでCGI自体の事は問題ないと思っております。

と先入観を持っている限り、問題が発生したときには、余計な時間を費やすよwww

この回答への補足

人のいい方に難癖を付ける前に前後の内容を読む癖を付けましょう。

>Windowsをサーバーにしてcgiを動作させるということ?
質問のタイトルをみてください。

>引用させてもらった言葉は書くべきじゃない
「最終的」という意味で若干食い違いがあったらいけないと思い書かせてもらっただけです。
また、WINの事を書いたのは最初の書き込みに書いた通り私はあまりmac(apacheもですが)に詳しくないため、そういう機能が実現出来るかどうかが確実でなかったので書かせてもらいました。

>先入観を持っている
持っていません。「思っている」だけでそういうCGIが動かない場合は基本的な事(パーミッションなど)も確認するようにしています。
また、最初の書き込みでCGIのレベルについて一切書いてなかったのでその”程度”を明確にしただけです。

最後に、これは人にもよると思いますが、「w」を多用すると不快に思う方は結構いると思います。出来れば少し自粛したほうがいいかもしれません。

補足日時:2009/06/29 16:17
    • good
    • 0

あなたが紹介したリンクにあるとおり、作業をすれば、かならずCGIをローカルで動作させることができます。


それができないのなら、作業のどこかにミスがあるといっていいでしょう。
また、httpd.confは、デフォルトでPerlスクリプトを有効にしており、PHPは無効となっています。なので、Perlを有効にしようとして、いじったことが、逆にPerlを無効にしている可能性もあります。あるいは、いじらなくてもいいパスをいじったことで、パスが通らなくなっているのかもしれません。
ほかのかたも指摘しているように、ユーザディレクトリのパスは「http://127.0.0.1/~/」ないし「http://127.0.0.1/~(username)/」です。これがホームフォルダの「サイト」フォルダとなります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

perlがデフォルトで有効になっているとのことでしたので、取っておいたバックアップを上書きしてみました。
しかし、どうも元々「sudo」コマンドが通っていないようで、
もう一度ドキュメントに落とすと内容が初期状態になっておりました。

何度sudoコマンドを実行しても同じ状態です。

また、その状態で
>ユーザディレクトリのパスは「​http://127.0.0.1/~/​」ないし「​http://127.0.0.1/~(username)/​」です。
にアクセスしても両方見る事が出来ませんでした。
「/~/」404
「/~(username)/」403
根本的に何か設定が必要なのでしょうか・・・・

お礼日時:2009/06/29 16:16

当方TigerなのでApacheのバージョンが1.3ですが、Leopardの2.0のドキュメントも同じところにありますように…。


http://127.0.0.1/​が表示されている「Apache HTTP サーバ バージョン 1.3 ドキュメント」の左上の方に「CGI による動的コンテンツ」http://127.0.0.1/manual/howto/cgi.htmlという目次が見つかれば占めたものです。
まずは、これを読んでCGIとはどんなもので、どうやって動いているのかを知ってください。(この程度のことがお分かりなら、以下は読み捨ててください)

> ユーザーローカルの「​http://127.0.0.1/​ユーザー名/」が表示されません。
Mac OS X付属のAppache設定ファイル「httpd.conf」を特にいじっていなければ「​ユーザー名」の前に「~」(半角のチルダが必要なはずです)
ユーザー名がmxanaduならば、~mxanaduってことですね。

また、cpコマンドで書き換えた「ユーザー名.conf」ファイルが正しい場所にあるかを確認してください。

最終的に目指す状態として記述されている部分は、思い切って言い切ってしまえば、xHELP_MExさんが通常ウェブブラウジングしているサーバー群の世界です。無論、それらの多くは内蔵OSでも機能するはずですが、ここでは内蔵CGIの起動に説明を絞ります。

この回答への補足

ご回答ありがとうございます。

CGIはWINにて何個か作成していますのでCGI自体の事は問題ないと思っております。

また、あくまでローカル(オフライン)でのCGIの起動を考えています。
「最終的」というのはWINのHTTPDで言うルートフォルダ以下のフォルダと考えていただければいいです。それがどこのフォルダであれ、一つのフォルダ以下ならば・・・・

補足日時:2009/06/27 14:26
    • good
    • 0

>また「ユーザー名.conf」をTerminalのcpコマンド?にてローカルに落とし、


>修正後「sudo cp」にて上書きして、再度cpコマンドでローカルに落とすと修正が反映されていませんでした。

まず始めに意味がわかる日本語の書き方を調べて下さい
cgiやローカルって意味理解出来てる?
cpコマンドでローカルに・・・ってことは、その「ユーザー名.conf」は
リモートから持ってきたって事ですよね?
まずcpコマンドでは無理なはず。(マウントしてれば別ですが)
それと、「http://127.0.0.1/ユーザー名/」(ユーザー名に「~」が要るのかは知らんが)はユーザーホームwww


cgiってphpと並ぶ言語名じゃないよw
Webブラウザからの要求で起動するプログラムっすよw
perlで書かれてるならperlの環境も必要だし・・・

とりあえずcgiが使える環境を作る一番の解決方法はパーミションとhttpd.confを勉強してください。
これが近道です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

CGIの知識に関しては問題ないと思っております。
ですが、全てWINでの作業(HTTPD)だったので勝手が違い困っているところでした。

また、わかりにくい文章で申し訳ございませんでした。

お礼日時:2009/06/27 14:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!