はじめに
パソコン同士やパソコンとスマートフォンでファイルを共有したい時に、コマンド1つでさっとHTTPサーバを起動できるとたまに便利です。いわゆるワンライナーでのHTTPサーバです。この記事で説明する方法では環境としてNode.js、Ruby、Pythonのいずれかが必要となりますが、これらの各言語でHTTPサーバを起動する方法をまとめます。
できるようになること
HTTPサーバを起動して、パソコンのOSによらず、またスマートフォンのiOSやAndroidでもブラウザを起動して以下のようにHTTPサーバにアクセスできるようになります。HTTPサーバで公開したディレクトリ内のファイルが表示されます。
後は必要なファイルをダウンロードしたり閲覧したりできます。今回iPhoneからLinuxマシン上のファイルをダウンロードしたい機会があったのでまとめてみました。
前提と環境
以下が前提となります。この記事ではRuby、Python、Node.jsそれぞれについてHTTPサーバを起動する方法を説明しますが、PHPやRustなどの言語でもHTTPサーバが起動できると思います。
- HTTPサーバを起動させるOS : Ubuntu18.04 (WindowsやmacOSでもOK)
- Ruby、Python(3以上)、Node.jsのいずれかがインストールされていることが前提
- HTTPサーバを起動するパソコンとHTTPサーバにアクセスするパソコン(もしくはスマートフォンなど)は同じLAN内にいる前提
なお、HTTPサーバを起動すると指定したディレクトリ配下にあるファイルは全て公開状態となります。なので常に公開状態にしておいたり公衆WiFiなどでHTTPサーバを起動しないよう注意してください。あくまでもさっと一時的にファイル共有することを想定してまとめています。
RubyでHTTPサーバを起動する
公開するための適当なディレクトリを作成し、そこに移動します。例えばここではホームディレクトリ配下にruby-server
というディレクトリを公開用に作成して移動します。
~/$ mkdir ruby-server
$ cd ruby-server
そこでRubyが使えることを確認します。
~/ruby-server$ ruby -v
ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-linux]
もしrbenv
でRubyをインストールしたことがあり、他のディレクトリでRubyを使っている場合は、以下のコマンドですでにインストール済のRubyのバージョンを確認し、
~/ruby-server$ rbenv versions
2.6.2
以下で確認したバージョンのRubyを使えるようにできます。
~/ruby-server$ rbenv local 2.6.2
あとは以下でHTTPサーバを起動します。
~/ruby-server$ ruby -run -ehttpd . -p8000
-p8000
でHTTPサーバが受け付けるポート番号を8000に指定しています。各自のファイアウォール環境に合わせて変更してください。
上記では、上記コマンド実行時のディレクトリ、すなわち~/ruby-server
配下のファイルを公開状態にしています。
もしHTTPサーバで公開したいパスを変更したい場合は、以下のように公開したいパスをそのまま与えます。
~/ruby-server$ ruby -run -ehttpd ~/yourpath -p8000
あとはOSに関わらずパソコンでもスマートフォンでもHTTPサーバを起動しているパソコンのIPアドレスにブラウザからアクセスすれば公開しているディレクトリにアクセスできます。
もしLinuxでHTTPサーバを起動している場合は、以下のコマンドでIPアドレスを確認できます。
$ ifconfig
以降では、Python、Node.jsそれぞれでHTTPサーバを起動する手順を載せます。
PythonでHTTPサーバを起動する
Rubyの場合と同様に適当なディレクトリを作成して移動します。
~/$ mkdir python-server
$ cd python-server
Pythonが使える環境であることを確認します。
~/python-server$ python -V
Python 3.7.1
後は以下でHTTPサーバを起動できます。以下でpython-server
配下が公開状態になります。
~/python-server$ python -m http.server 8000
公開するパスを指定したい場合は-d
オプションを使って指定します。
~/python-server$ python -m http.server 8000 -d ~/yourpath
Node.jsでHTTPサーバを起動する
適当なディレクトリを作成して移動します。
~/$ mkdir nodejs-server
$ cd nodejs-server
Node.jsが使える環境であることを確認します。
~/nodejs-server$ node -v
v10.16.0
Node.jsの場合は以下でHTTPサーバ用のパッケージをインストールする必要があります。
~/nodejs-server$ npm install -g http-server
もしグローバルにインストールしたくない場合は、以下のようにローカルにのみ(ここではnodejs-server
内のみ)にインストールしてもOKです。
~/nodejs-server$ npm install --save http-server
ローカルにHTTPサーバをインストールした場合は、node_modules
というディレクトリとpackage-lock.json
というファイルがnodejs-server
下に作成されます。
グローバルにhttp-serverをインストールした場合
以下でHTTPサーバを起動できます。以下でnodejs-server
配下が公開状態になります。
~/nodejs-server$ http-server -p 8000
公開するパスを指定したい場合はパスを引数としてそのまま与えます。
~/nodejs-server$ http-server ~/yourpath -p 8000
ローカルにhttp-serverをインストールした場合
ローカルの場合は以下のようにローカルにあるhttp-server
コマンドを使ってHTTPサーバを起動します。
~/nodejs-server$ ./node_modules/http-server/bin/http-server -p 8000
後は同じで公開するパスを引数としてそのまま与えます。
~/nodejs-server$ /node_modules/http-server/bin/http-server ~/yourpath -p 8000
まとめ
コマンド1つでHTTPサーバを起動する方法をまとめました。ここで紹介したRuby、Python、Node.js以外にもおそらくほとんどの言語でHTTPサーバを起動できると思います。知っているともしかしたら役に立つかもしれません。
SPONSORED LINK