最も簡単な方法でWebサーバをローカルで起動してみよう。
(rubyが入っていることを前提に)
ruby -run -e httpd
Fiddlerの古いバージョンではデフォルトのポートが8080だった。
他にも、8080を使うプロキシサーバ等のアプリケーションがある(Burp等)。
このWebサーバと、そういった8080を使うアプリケーションの両方を一緒に使おうとするとどちらかが起動時エラーを起こす(ポートがすでに別のプログラムに占有されていると起動できないため)。
localhost ではなく 自分のコンピュータについた名前でもアクセスできる(ことが多い)。
localhost という(仮想的)ホスト名(ドメイン名)は、 コンピュータ内部で閉じた通信のためのもの(上右図)
以下の試みは例年教室環境で実施しているが、遠隔では事情により動作しないことをご了解ください。
授業時間内に教卓機でサーバを動作させ、 (その時間の間だけ有効な)IPアドレスを板書したので、 URL http://____:8080/
の、ドメイン名の部分(コロンの左)にそのIPアドレスを入れて、アクセスを試みて下さい。
IPアドレスがわかれば他のPCでも(通常のWebアクセスと同様に)アクセスできることが確認できるだろう。
逆に、自分のPCの外からのアクセスを受け付けないようにしたいという要求もあるだろう。
待ち受ける入り口をいずれか1つのアドレスに限定する、 たとえば loalhost(=127.0.0.1)に bind することで、 外部からのアクセスを受け付けないようにすることも可能。
PC上でも気軽に使える(オープンソースの)サーバとしては、
の2つがある。(「Webサーバ シェア」で検索してみて下さい)
<!doctype html>
見えてますか これが indexファイル
以下のような内容のファイルを作り、
view.rb という名前(別の名前でも構わない;その際は後で対処する)で保存する。
puts "Content-type: text/html" ; puts
puts <<EOF
<!doctype html>
<h1> テストページ </h1>
ちゃんと見えますか。<br>
<b>見えたら報告して下さい。</b>
EOF
このファイルは 単体で(コマンドプロンプトの中で)動作させることもできる。 (ためしてみて下さい)
(補足)上のようなコードをこの画面からエディタにコピペしたとき、 右図のように2行目以降の行頭に余分な半角スペース(各行に2つずつ)が入ることがある。
文字コードの関係で、これらのHTMLやCGIが、
そのときは、以下のように文字コード指定をすると、
ただし、Rubyのプログラムが以下のようなエラーにより動作しないというケースもある。
view.rb:4: invalid multibyte char (UTF-8)
HTML: doctypeの行の次ぐらいに、
<meta charset="Shift_JIS">
の行を追加。
CGI: Content-type:
の箇所に追記して、
'Content-type: text/html; charset=Shift_JIS`
にしてみる。