実習用 サーバーweb*.ec.hokudai.ac.jp でCGIを使う方法
実習用 PC でも web サーバーを起動することができますが、PCを使っている時限りなので、練習にはなりますが、実用にはなりません。
そこで、実習用に提供されている情報基盤センターの web サーバーを使ってみましょう。
準備:web*.ec サーバーを使えるようにする
まず、ELMS ポータルにサインオンして、web サーバーを使うための利用申請をします。
そもそも CGI 以前にこれをやらないと使えません。
利用目的などを記入して、申請作業を完了すると、利用可能なサーバー名と公開後のアドレスが表示されるので、メモしておいてください。
下記のうちのどれかのサーバーが割り振られます。
web.ec.hokudai.ac.jp
web1.ec.hokudai.ac.jp
web2.ec.hokudai.ac.jp
申請作業後、数分〜1日程度の時間で、使えるようになります。
準備:ファイルをアップロードする
- 情報基盤センターのサーバーにファイルをアップロードするには、ファイル転送用のソフトウエアが必要です。
- 実習用 PC には、 WinSCP がありますので、それを使ってください。ディスクトップにあるアイコンをダブルクリックして、web*ec.hokudai.ac.jp(*は、1,2,なしのいずれか)をダブルクリック。ユーザー id とパスワードを記入して接続。つながったら、右のウインドウのwwwをダブルクリック。このwww内に置いたファイルが、webページ上に公開されます。その中のcgiをダブルクリックして開いた場所が、cgi用にはじめから用意されている場所です。左から右へドラッグ&ドロップするとアップロード、反対がダウンロード。なお、右側のウインドウのファイル(情報基盤センターのサーバー内のファイル)は、なるべくダブルクリックしないでください。ダウンロードして編集してアップロードと云う手順が無難です。
- 自宅の Windows PC の場合は、WinSCP をインストールして使ってください。
- 自宅で Mac を使っている人には、Active Mounter が便利です。1Mb 以上のファイルをやり取りするのでなければ、試用の範囲で自由に使うことができます。金を払うと、1Mb 以上のファイルにも使えると云う仕組みです。
なお、Active Mounter は接続が確立されたときに、設定を保存(Dock のアイコンをクリックして選択し、command+s)しておくと便利です。
- 試しにhtmlファイルをアップロードして、表示されることを確認してみてください。ファイル名の拡張子は必ず .html にしてください。例:hogehoge.html。なお、ファイル名に日本語や記号を使うことは極力避けてください。(↓htmlファイルのサンプル。)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<link rev="made" href="mailto:nobody@dummy.test">
<link rel="start" href="/" title="Root">
<title>テスト</title>
</head>
<body>
<p>世界の皆さん、こんにちは。</p>
</body>
</html>
CGI で一文を表示してみよう。
- 下記の内容のファイルを作成し、保存時に、改行コードはLF、ファイル名を hello.cgi として、web*.ec サーバー内の cgi フォルダーの中においてみてください。[ 接続 ⇒ wwwを開く ⇒ cgiを開く ⇒ ファイルを転送]
#!/usr/local/bin/ruby -Ks
print <<EOF
Content-type: text/plain;charset=Sift_JIS
世界の皆さん、こんにちは。
EOF
- ファイルをアップロードしたら、モードを 0755(8進数)に設定してください。
プログラムの内容の解説
- 1行目:#!/usr/local/bin/ruby は、プログラム ruby を呼び出し、2行目以降を ruby で実行させます。
- 1行目:-Ks は、プログラムを実行する際に、基本とする文字コードを Shift_JIS に指定するオプションです。これが無いと内容が英文として解釈され、『表』『能』などの漢字がトラブルを引き起こします。
- 2行目:print 〜 は、〜を出力します。
- 2〜6行目:<<KEYWORD(改行) ・・・ (改行)KEYWORD は、挟まれた部分を、ひと固まりの文字列としてまとめます。ちなみに、KEYWORD の部分は、アルファベット大文字で記述し、挟まれた内容とダブらなければ何でもかまいません。
- つまり、3〜5行目を、出力として受信者側のブラウザに送り出します。
- 3行目:レスポンスヘッダ追加分。
レスポンスヘッダは、データを手紙に例えると、封筒のようなもので、中身を正しく開くために必要な情報があります。通常は表示されませんが、Firefoxの機能拡張 Web Developer を使うと簡単に見ることができます。この1行の意味は、「中身の型は表示の通りの文字のみの情報(plain)としてのテキストファイル(text)で、文字コード(charset)として、Shift_JIS を採用している」という内容を表しています。英語では文字コード指定は不要ですが、日本語の場合、文字コード指定が無いと、化けて読めなくなる場合があります。なお、text/plain ですが、htmlファイルの場合には、text/html 、GIF画像ファイルの場合には、image/gif といったようなものになります。
- 4行目:空行。レスポンスヘッダと、本文の間は、空行で仕切ります。
- 5行目:表示させる本文。