
ターミナルコマンドラインとPythonでインスタントWebサーバーを作成する
ファイルを素早く共有したり、コードをテストしたり、何かをブロードキャストしたりしたいですか?Pythonだけを使えば、カレントディレクトリから瞬時にウェブサーバーを作成できます。ApacheもNginxもLiteSpeedも不要。Pythonだけで、最近のほぼすべてのUnix系OSに標準搭載されています。このコマンドは、その便利さを考えると驚くほどシンプルです。ターミナルウィンドウと任意のウェブブラウザを開いて、ぜひご自身で試してみてください。
このトリックは、Python だけでシンプルな Web サーバーを即座に起動します。Mac OS X、Linux、FreeBSD、および Python が搭載されているその他の Unix プラットフォームで動作します。
PythonでインスタントWebサーバーを起動する方法
コマンドラインからインスタント Web サーバーを作成するには、ブラウザーと HTTP 経由でアクセスできるようにするディレクトリに次のコマンドを入力します。
Python 2でシンプルなWebサーバーを起動する
python -m SimpleHTTPServer
Python 3でシンプルなWebサーバーを起動する
python -m http.server
これにより、現在のディレクトリが即座にウェブサーバーとして公開されます。index.htmlファイルがある場合はすぐに表示されますが、ない場合はローカルホストのIPアドレスまたは「0.0.0.0」にディレクトリの内容が一覧表示されます。この機能のデフォルトポート設定は8000です。つまり、ブラウザからウェブサーバーにアクセスするには、次のアドレスを入力します:http://0.0.0.0:8000
ディレクトリ内に index.htm または index.html ファイルがない場合、代わりに CWD/PWD の単純なディレクトリ リストがブラウザーに表示されることに注意してください。
実行すると、ページとデータが Python Web サーバーからロードされるたびにターミナルが更新され、GET および PUSH リクエスト、どのファイルがアクセスされ、誰がアクセスしているか、404 エラー、IP アドレス、日付、時刻など、Apache アクセス ログ ファイルを tail しているときのように、標準の http ログから期待されるすべての情報が表示されます。
より高度な設定が必要な場合は、ポート番号を指定してWebサーバーをある程度隠蔽することもできます。特定のユーザーにのみブロードキャストしたい場合や、標準的な8000ポートスキャンに表示されたくない場合に便利です。必要なのは、前述のコマンドの末尾にポート番号を指定するだけです。例:
python -m SimpleHTTPServer 4104
これにより、Web サーバーはポート 4104 の IP の現在のディレクトリで起動します。例として、設定に応じてローカルホストの IP: http://127.0.0.1:4104 または http://0.0.0.0:4104 を想定します。
これは、ちょっとしたWeb開発をしていて、すぐにブラウザで確認したり、他の人に見せたりしたいけれど、SFTPで転送したりリポジトリにコミットしたりする時間をかけたくない場合に非常に便利なヒントです。FreeBSD、Linux、Ubuntu、Redhat、そしてもちろんMac OS Xを含む、あらゆるUnix系OSで動作するはずです。
以下のビデオは、単純な index.html ファイルがあるディレクトリで Python サーバーが起動される様子を示しています。また、実行中の Python コマンドが、通常の http サーバー ログのように、http 接続で何が起こっているかを反映する方法も示しています。
このすばらしいちょっとしたトリックの特に価値のある使い方や追加の秘密を見つけたら、ぜひお知らせください。