
2009/08/12
コマンド1つで今すぐWebサーバを起動させるためのワンライナー(Ruby or Python)
複数人で作業をしていると、ふとWebサーバを使いたくなるときがあります。
簡単なファイルの受け渡し等、ローカルマシンですぐにWebサーバを起動させることができると結構便利です。
でも、Apacheみたいな専用のWebサーバをわざわざインストールするほどでもない・・・。
そんなときにローカルマシンにRubyかPythonがインストールされていれば、コマンド一発(ワンライナー)ですぐにWebサーバを起動させることができます!
Python編
Pythonでは、バージョン2.4以降で追加されたモジュールをスクリプトとして実行できる"-m"オプションを活用します。
$ python -m SimpleHTTPServer
上記のような感じでコマンドを実行すると、デフォルトの8000番ポートで、実行時のカレントディレクトリをドキュメントルートとしたWebサーバが起動します。Pythonコマンド1つでWebサーバが起動!意外と便利!
ポート番号を指定したいときは、上記のコマンドにスペースを続けてポート番号を指定すればOKです。
# python -m SimpleHTTPServer 80
例えば、HTTPのデフォルト80番ポートを利用したい場合は、上記のような感じでポート番号をあわせて指定します。
尚、80番ポートで稼動させたいときは、rootユーザで実行するか、sudoを使う必要があります。きっと。
$ python -m CGIHTTPServer
また、上記コマンド例のように、"SimpleHTTPServer"ではなく、"CGIHTTPServer"を指定することで、CGIスクリプトを実行することも可能だそうだ。
Serving HTTP on 0.0.0.0 port 80 ... xxxxxxx.tokyo.ocn.ne.jp - - [12/Aug/2009 07:22:03] "GET / HTTP/1.1" 200 -
実行後、アクセスすると上記のようなログが、標準出力に表示されます。
参考
Ruby編
Rubyだと以下のような感じっす。
# ruby -rwebrick -e 'WEBrick::HTTPServer.new({:DocumentRoot => "./"}).start'
上記のようにコマンドを実行することで、Pythonの場合と同様、実行時のカレントディレクトリをドキュメントルートとし、デフォルトでは80番ポート(rootユーザか、sudoを使う必要有り)で、Webサーバが起動します。Rubyでも、このようにワンラインでOKです。
$ ruby -rwebrick -e 'WEBrick::HTTPServer.new({:DocumentRoot => "./", :Port => 3000}).start'
ポートを指定したい場合は、上記のような感じで実行します。
尚、 RubyのWebrickの場合は、「Ruby Reference Manual - るりま」を見てもらえば分かる通り、MaxClientsやTimeout、ログ出力場所等、簡易Webサーバながら、割とオプションが豊富で細かく設定できます。
[2009-08-12 07:19:00] INFO WEBrick 1.3.1 [2009-08-12 07:19:00] INFO ruby 1.8.6 (2008-08-11) [i386-linux] [2009-08-12 07:19:00] INFO WEBrick::HTTPServer#start: pid=1110 port=80 xxxxxxx.tokyo.ocn.ne.jp - - [12/Aug/2009:07:19:13 EDT] "GET / HTTP/1.1" 200 12 - -> /
コマンド実行後、Webrickが起動し、アクセスすると上記のようなログが、標準出力に表示されます。
参考
- 作者: Mark Lutz, 夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- Amazon.co.jpで詳細を見る
- 作者: まつもとゆきひろ, David Flanagan, 卜部昌平(監訳), 長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/01/26
- メディア: 大型本
- Amazon.co.jpで詳細を見る







![[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ)](http://ecx.images-amazon.com/images/I/51GW5jxmdvL._SL150_.jpg)
![[24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用](http://ecx.images-amazon.com/images/I/51uK4ACymiL._SL150_.jpg)
![エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド](http://ecx.images-amazon.com/images/I/41oqE-9dM2L._SL150_.jpg)
![Googleを支える技術 ~巨大システムの内側の世界 [WEB+DB PRESS plusシリーズ] (WEB+DB PRESSプラスシリーズ)](http://ecx.images-amazon.com/images/I/51m8phYZbyL._SL120_.jpg)

















