元RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード Twitter

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2009/08/12

by MonkHie

コマンド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 リファレンスマニュアル」を見てもらえば分かる通り、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版

rin1024rin1024 2009/08/28 00:24 HTTP::Engineを使えばperlでも出来ると思います!!

rx7rx7 2009/08/29 15:36 おー、貴重な情報ありがとうございます!

ku-ma-meku-ma-me 2015/06/18 12:27 「WEBrick ワンライナー」で検索してきました。Ruby は "ruby -run -e httpd -- -p 3000 ." の方が簡単かもしれません。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。


オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)