インターネットになくてはならない存在の「Webサーバー」。ApacheやNginx等の多機能なWebサーバーは大変複雑な構造となっていますが、その基本的な考え方は大変シンプルです。
本日紹介する「bashttp」は、Webサーバーのシンプルさを実証するBash製のWebサーバーです。基本的な機能だけしか利用できないものの、わずか16行のBashコードで、Webサーバーの基礎的な部分を実装しています。
以下使用方法を説明します。
目次
bashttpを実行してみる
bashttpのソースコードをcloneし、フォルダ内のserver.shを実行します。
$ git clone https://github.com/EddySchauHai/bashttp.git $ cd bashttp $ sh server.sh
Webブラウザで「http://localhost:1337」にアクセスします。
▲結果が表示されました。他の結果を表示することはできませんが、リクエストに対するレスポンスとしてWebブラウザに「Hello!」という文字列が表示されています。
server.shのソースコードは以下の通りです。
#!/bin/bash trap "echo Exited!; exit;" SIGINT SIGTERM PORT="${1:-1337}" main () { echo "Starting..." while true do printf 'HTTP/1.1 200 OK\n\n%s' "$(cat index.html)" | nc -c -l ${PORT} done } main
本体は無限ループで、ncコマンドを利用してブラウザとデータをやりとりしている事がわかります。
まとめ
bashttpはBashスクリプト製のシンプルなWebサーバーです。Hacker NewsにはBashで作られた別のWebサーバーや、他の言語で作られたシンプルなWebサーバーの情報が寄せられています。Webサーバーに興味のある方は参考にしてみてはいかがでしょうか。