|
|||
2024 年 8 月 27 日 井上 改訂 | |||
このページでは,CGI スクリプトを主に Mac で実行する際の注意事項を書いています. |
|||
|
|||
Mac では Web 共有をオンにするだけで,Web サーバを立ち上げることができます.これによってディレクトリを公開したり,CGI プログラムを実行できるようになります. Mac OS X では,Web サーバ Apache によるホームページの公開を「Web 共有」と呼んでいます.システム環境設定 > 共有から,Web 共有をオンにしてください.右側にトップページのアドレスがリンクされます. |
|||
ターミナルから以下のコマンドを打つことでも,Web 共有が可能になります.
こちらのページを参照しました.なお,Mac の Mountain Lion でも .conf ファイルを作成して Forbidden (403 のエラー) を回避することができるようです [2012 年 10 月]. 職場がかわったら,上のコマンドでは apache が起動できなくなりました.httpd で起動したらうまく動きました.
コマンドは「man httpd」で確認してください.Apache の起動は以下で確認できます
この件に関しては OIST の IT 部門の方に助けていただきました.ありがとうございます (2013 年 4 月). |
|||
Web ページにアクセス
とされており,ここにある index.html.en がトップページとして読まれています. (「Library」フォルダは,は「ライブラリ」フォルダになっていました.) |
|||
|
|||
httpd.conf などの設定ファイル (ubuntu は apache2.conf) を書き換えて,Apache のカスタマイズを行います.Apache の設定ファイルは
にあります. |
|||
重要: httpd.conf など設定を変える度に apache をリスタートする
httpd の場合は以下です.
|
|||
CGI 機能を ON にする
を開きます.現在の環境では「/etc/httpd/conf/httpd.conf」にあります。どこに保存されているかは、サーバーを作った環境によるようです.
次に、.cgi という拡張子をもったプログラムが CGI プログラムであると判断されるようにします。以下の行のコメントアウトを解除します。
この行から # を取り除きます. perl と python のプログラムを付け加える場合は,以下です.
以上の操作だけだと,ScriptAlias ディレクティブで指定されているディレクトリ以下のプログラムだけが実行可能です.ユーザごとのホームページ以下の CGI プログラムも使えるようにするには,
を変更します.ExecCGI を新たに加えてください.
注意: Mac のコールセンターでは 0000_any_80_.conf ファイルを変更する,と言われました.きっと複数のユーザを一気に変更することができるのでしょう. その他の設定
31 行目あたりにある,ServerRoot "/usr" の下に書き込みましょう.これによって,サーバーが対応 (計算) する 上限を設定できます. サーバーの名前を,#ServerName www.example.com:80の下に書きました.
Documents ディレクトリの名前を html に変更したので,以下の 2 行を変更しました.
Python などスクリプトを置く場所を指定?しました.
以下の行の # を取り外して,アクティブにしました.
設定が終わったら、httpd をリスタートします。
テストファイルを動かしてみる
に保存してください.ターミナルから which perl を入力して perl のアドレスを確認し,適宜 #!/usr/bin/perl を書き換えてください.その後,
として実行権を与えます.まずターミナルから動作確認を行います.
次に,Sasfari などのブラウザから試します.ブラウザに以下のようなアドレスを与えてください. 太字にはウェブサイトのアドレスを書いてください.
あるいは,
としてローカルで動かすことも可能です.以下が出れば成功です. |
|||
スクリプトがそのまま表示されてしまった場合は,以下によって Apache を再起動してください.
それでも治らない場合は,httpd.conf ファイルをもう一度,見直してください. test.cgi は /Library/WebServer/CGI-Executables に保存されていますが,cgi-bin を付ける必要があります.CGI-Executables の場所は若干見つけにくいです.マックであれば,ウェブページを置いてある Site と同じディレクトリにあると思います.
あるいは少し時間がかかりますが,find で探しても良いです.
ユーザごとのホームページ置き場 (私の場合は /Users/JunInoue/Sites) から CGI プログラムを動かす場合は,
というアドレスで実行できるはずです. html と cgi-bin ディレクトリの所有者と権限 Linux:
Mac:
という記述があります。
|
|||
|
|||
自作の perl script を system コマンドなどを用いて CGI プログラムとして走らせると,アウトファイルがの改行コードが Windows の改行コード (CRLF [\r\n]) になっていることがあります.アウトファイルをさらに他の script などで用いる場合は,改行コードを変換する必要があります. Windows の改行コードをUNIX 標準の LF (ラインフィード) にするには,以下のコマンドを使います.perl で実行するには,system 関数を用いれば良いでしょう.
|
|||
|
|||
CGI の設定は,普通の html ファイルより手こずることが多いと思います.エラーログを見るようにすると,問題解決のヒントが得られることがよくあります.
|
|||
|
|||
こちらを参照しました.ありがとうございました (2019 年 8 月). それぞれのサーバーにインストールされている apache2 に関する説明が/var/www/html/index.html にあります。 apache2.4 であれば、http://httpd.apache.org/docs/2.4/ に詳細なドキュメントがあります。 Timeout に関しては、こちらが参考になります。 1. フォルダcgi-binの作成 mkdir で作成しました.
2. mods-available内にある cgi.load を利用できるようにする mods-enabled ディレクトリ内部に,にmods-available内のcgi.loadへのシンボリックリンクが無いのを確認する.その後,以下のコマンドでシンボリックリンクを作成する.
以下で確認.
3. serve-cgi-bin.confの編集
|
|||
4. cgiプログラムの作成
5. パーミッションの設定
6. apache のリスタート
7.実行 ブラウザのアドレスバーに
と入力し実行.
|
|||
|
|||
https://www.fish-evol.org/test_CGI_textarea/test_CGI_textarea.html
2019 年 9 月 |
|||
|
|||
https://fish-evol.org/test_ajax_FieldStrage.html ファイルの設定場所は以下です。 |
|||
上記は Ubuntu24.04, apache2 での動作確認です。Apache/2.4.58 (Ubuntu) では動きました。しかし、このサイトは Nginx を用いているので、405 のエラーが出ます: "405 Not Allowed nginx/1.18.0 (Ubuntu)"。おそらく NGINX がスタティックなページ (ここでは、test_ajax_FieldStrage.html) では、POST が使えないためです (こちらを参照)。 なお、NGINX であってもスタティックなページを利用せず .py から直接であれば、表示されます。 https://fish-evol.org/cgi-bin/test_ajax_FieldStrage.py?key=aaa (2024 年 7 月)。
|
|||
|
|||
https://egapool.hatenablog.com/entry/2013/11/29/184300 |
|||
|
|||
[JQuery] Ajax が使える状態かどうかチェックする方法
超簡単 Mac OS X のローカルで CGI (SSI も PHP も)
|
|||