Http-server, a simple zero-configuration command line http server(github.com)
github.com
Http-server, a simple zero-configuration command line http server
https://github.com/nodejitsu/http-server
8 comments
I built a simple zero-configuration FTP server that runs in a browser some time ago (http://ezyftpserver.com/). Been wondering if I should do the same with a HTTP server?
Nice idea, jftr opera already offers an http server inside your browser, it is called unite, see http://en.wikipedia.org/wiki/Opera_(web_browser)#Opera_Unite
I just had a look at your page and it seems you used java for providing the ftp server. How do you handle devices behind firewalls/NAT?
I just had a look at your page and it seems you used java for providing the ftp server. How do you handle devices behind firewalls/NAT?
I don't. :-) It's Apache FTP server wrapped in an applet.
I tried to visit your site but got redirected to a "Java Downloads for all operating systems" page. I do have java installed, but somehow your site doesn't notice and I always get redirected. I'm using ubuntu+chrome.
It's annoying. I might not ever use the site, but I can't even see it with javascript enabled.
python -m SimpleHTTPServer
python -m http.server
for Python 3.0+ http://docs.python.org/library/simplehttpserver.html
for Python 3.0+ http://docs.python.org/library/simplehttpserver.html
ruby -e 'require "rack"; Rack::Handler::Thin.run(Rack::Directory.new("."), :Port => 6666)'
python -m SimpleHTTPServer cannot be configured from the command line. You'll need to write an additional py script to do anything useful. It's also missing a bunch of features you are going to want, like AutoIndex.
It also cannot serve 6,000 requests per second out of the box.
It also cannot serve 6,000 requests per second out of the box.
I did a `npm install http-server`.
It threw me a module not found error twice - once for `eyes` and once for `colors`
I ran it on a directory and tested it with `ab -n 100 -c 5 localhost:8080/`.
EDIT: `ab -n 15000 -c 5 localhost:8080/` is about 3000 req/s on my machine for http-server; 2200 for SimpleHTTPServer.
`python - SimpleHTTPServer 8080` gave me 1800 requests/second.
As far as configuration goes, for a dev server(that's what both SimpleHTTPServer and http-server are for me), the only configurations I do is to change the port.
Also, it's not like http-server is a highly configurable http server and framework combined into one - I for one can live without auto-index on/off.
It threw me a module not found error twice - once for `eyes` and once for `colors`
I ran it on a directory and tested it with `ab -n 100 -c 5 localhost:8080/`.
Concurrency Level: 5
Time taken for tests: 0.046 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 175900 bytes
HTML transferred: 149900 bytes
Requests per second: 2159.97 [#/sec] (mean)
Time per request: 2.315 [ms] (mean)
Time per request: 0.463 [ms] (mean, across all concurrent requests)
Transfer rate: 3710.33 [Kbytes/sec] received
So, in my micro benchmark, it doesn't do 6000 request/second on my box.EDIT: `ab -n 15000 -c 5 localhost:8080/` is about 3000 req/s on my machine for http-server; 2200 for SimpleHTTPServer.
`python - SimpleHTTPServer 8080` gave me 1800 requests/second.
As far as configuration goes, for a dev server(that's what both SimpleHTTPServer and http-server are for me), the only configurations I do is to change the port.
Also, it's not like http-server is a highly configurable http server and framework combined into one - I for one can live without auto-index on/off.
Sorry about that. Bumped to v0.1.1 and published to npm.
Should fix [dist] issues. I have a feeling you need to update your npm to version 1.0 as well.
Should fix [dist] issues. I have a feeling you need to update your npm to version 1.0 as well.
I can think of use cases for wanting a quick simple, easy to configure http server.
I can think of use cases for wanting to be able to serve >1,000 requests a second.
I can't think of any that fall into both categories ... am I just lacking imagination?
I can think of use cases for wanting to be able to serve >1,000 requests a second.
I can't think of any that fall into both categories ... am I just lacking imagination?
once i wanted to serve a quick and dirty page of 200 thumbnails but python's HTTP server choked after a few people tried it concurrently. it's single threaded and just wouldn't hack it.
luckily if you have twisted installed, you can run "twistd web -n -p PORT --path ." it's just as easy as the basic HTTP server but way faster.
luckily if you have twisted installed, you can run "twistd web -n -p PORT --path ." it's just as easy as the basic HTTP server but way faster.
This is a very good suggestion.
However, it is simple and it is zero-configuration - exactly your definition from your title.
So is http-server supposed to be zero-configuration or configure-from-command-line server?
Both.
It ships with sane defaults so you can type "http-server", but it also may optionally be configured with things like a path, a port, a host, etc.
It ships with sane defaults so you can type "http-server", but it also may optionally be configured with things like a path, a port, a host, etc.
You are both these id?
http://news.ycombinator.com/user?id=bitcoin
http://news.ycombinator.com/user?id=bitcoins
http://news.ycombinator.com/user?id=bitcoin
http://news.ycombinator.com/user?id=bitcoins
it's marak squires, he has lots of sock puppet accounts.
That's lame. Take your downvotes and learn from them. Are you really that shallow?
[deleted]
Looks nice, I was looking for something similar the other day, easily sharing a directory over HTTP from command line. I ended up writing a couple of very simple bash functions that added/removed the current directory to ~/Sites (I'm on a Mac). Apache did the rest.
sigh
Not another "Download this shell script over insecure HTTP and pipe it to sh" gimmick. Really? While http://news.ycombinator.com/item?id=2661209 is directly above this item on the front page?
Have we learned nothing?
Not another "Download this shell script over insecure HTTP and pipe it to sh" gimmick. Really? While http://news.ycombinator.com/item?id=2661209 is directly above this item on the front page?
Have we learned nothing?
Like the documentation clearly states, there is nothing stopping you from:
git clone git://github.com/nodejitsu/http-server.git
cd http-server
node bin/http-server
The curl installation is for npm, the node package manager, which is actually optional to use http-serverNice work guys, any gzip support for js, css, and static html?
Node.js. lol.
hey people, check out Lightnode
http://www.ngspinners.com/lightnode/
https://github.com/ngspinners/lightnode/
http://www.ngspinners.com/lightnode/
https://github.com/ngspinners/lightnode/
One neat feature is that gatling disables the autoindex links for sorting the listing if wget is used to download/mirror a directory.
Gatling has a pretty good default configuration like automatically try to bound port 80 and if not available use port 8000 instead, automatically sharing the current directory etc. For a list of command-line configuration options have a look at http://paste.pocoo.org/show/409206/