コマンド1つで今すぐWebサーバを起動させるためのワンライナー(Ruby or Python)

by MonkHie


複数人で作業をしていると、ふと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 リファレンスマニュアル」を見てもらえば分かる通り、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が起動し、アクセスすると上記のようなログが、標準出力に表示されます。

参考


初めてのPython 第3版

初めてのPython 第3版

プログラミング言語 Ruby

プログラミング言語 Ruby

  • 作者: まつもとゆきひろ,David Flanagan,卜部昌平(監訳),長尾高弘
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/01/26
  • メディア: 大型本
  • 購入: 21人 クリック: 356回
  • この商品を含むブログ (129件) を見る