可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
Python\'s http.server (or SimpleHTTPServer for Python 2) is a great way of serve the contents of the current directory from the command line:
python -m http.server
However, as far as web servers go, it\'s very slooooow...
It behaves as though it\'s single threaded, and occasionally causes timeout errors when loading JavaScript AMD modules using RequireJS. It can take five to ten seconds to load a simple page with no images.
What\'s a faster alternative that is just as convenient?
回答1:
http-server for node.js is very convenient, and is a lot faster than Python\'s SimpleHTTPServer. This is primarily because it uses asynchronous IO for concurrent handling of requests, instead of serialising requests.
Installation
Install node.js if you haven\'t already. Then use the node package manager (npm
) to install the package, using the -g
option to install globally. If you\'re on Windows you\'ll need a prompt with administrator permissions, and on Linux/OSX you\'ll want to sudo
the command:
npm install http-server -g
This will download any required dependencies and install http-server
.
Use
Now, from any directory, you can type:
http-server [path] [options]
Path is optional, defaulting to ./public
if it exists, otherwise ./
.
Options are [defaults]:
-p
The port number to listen on [8080]
-a
The host address to bind to [localhost]
-i
Display directory index pages [True]
-s
or --silent
Silent mode won\'t log to the console
-h
or --help
Displays help message and exits
So to serve the current directory on port 8000, type:
http-server -p 8000
回答2:
I recommend: Twisted (http://twistedmatrix.com)
an event-driven networking engine written in Python and licensed under the open source MIT license.
It\'s cross-platform and comes preinstalled on OS X since 10.5. Amongst other things you can start up a simple web server in the current directory with:
twistd -no web --path=.
Details
Explanation of Options (see twistd --help
for more):
-n, --nodaemon don\'t daemonize, don\'t use default umask of 0077
-o, --no_save do not save state on shutdown
\"web\" is a Command that runs a simple web server on top of the Twisted async engine. It also accepts command line options (after the \"web\" command - see twistd web --help
for more):
--path= <path> is either a specific file or a directory to be
set as the root of the web server. Use this if you
have a directory full of HTML, cgi, php3, epy, or rpy
files or any other files that you want to be served up
raw.
There are also a bunch of other commands such as:
conch A Conch SSH service.
dns A domain name server.
ftp An FTP server.
inetd An inetd(8) replacement.
mail An email service
... etc
Installation
Ubuntu
sudo apt-get install python-twisted-web (or python-twisted for the full engine)
Mac OS-X (comes preinstalled since 10.5, or is available in MacPorts)
sudo port install py-twisted
Windows
installer available for download at http://twistedmatrix.com/
HTTPS
Twisted can also utilise security certificates to encrypt the connection. Use this with your existing --path
and --port
(for plain HTTP) options.
twistd -no web -c cert.pem -k privkey.pem --https=4433
回答3:
go 1.0 includes a http server & util for serving files with a few lines of code.
package main
import (
\"fmt\"; \"log\"; \"net/http\"
)
func main() {
fmt.Println(\"Serving files in the current directory on port 8080\")
http.Handle(\"/\", http.FileServer(http.Dir(\".\")))
err := http.ListenAndServe(\":8080\", nil)
if err != nil {
log.Fatal(\"ListenAndServe: \", err)
}
}
Run this source using go run myserver.go
or to build an executable go build myserver.go
回答4:
Try webfs, it\'s tiny and doesn\'t depend on having a platform like node.js or python installed.
回答5:
If you use Mercurial, you can use the built in HTTP server. In the folder you wish to serve up:
hg serve
From the docs:
export the repository via HTTP
Start a local HTTP repository browser and pull server.
By default, the server logs accesses to stdout and errors to
stderr. Use the \"-A\" and \"-E\" options to log to files.
options:
-A --accesslog name of access log file to write to
-d --daemon run server in background
--daemon-pipefds used internally by daemon mode
-E --errorlog name of error log file to write to
-p --port port to listen on (default: 8000)
-a --address address to listen on (default: all interfaces)
--prefix prefix path to serve from (default: server root)
-n --name name to show in web pages (default: working dir)
--webdir-conf name of the webdir config file (serve more than one repo)
--pid-file name of file to write process ID to
--stdio for remote clients
-t --templates web templates to use
--style template style to use
-6 --ipv6 use IPv6 in addition to IPv4
--certificate SSL certificate file
use \"hg -v help serve\" to show global options
回答6:
Here\'s another. It\'s a Chrome Extension
Once installed you can run it by creating a new tab in Chrome and clicking the apps button near the top left
It has a simple gui. Click choose folder, then click the http://127.0.0.1:8887
link
https://www.youtube.com/watch?v=AK6swHiPtew
回答7:
Also consider devd a small webserver written in go. Binaries for many platforms are available here.
devd -ol path/to/files/to/serve
It\'s small, fast, and provides some interesting optional features like live-reloading when your files change.
回答8:
give polpetta a try ...
npm install -g polpetta
then you can
polpetta ~/folder
and you are ready to go :-)
回答9:
I found python -m http.server
unreliable—some responses would take seconds.
Now I use a server called Ran https://github.com/m3ng9i/ran
Ran: a simple static web server written in Go
回答10:
Using Servez as a server
- Download Servez
- Install It, Run it
- Choose the folder to serve
- Pick \"Start\"
- Go to
http://localhost:8080
or pick \"Launch Browser\"
Note: I threw this together because Web Server for Chrome is going away since Chrome is removing support for apps and because I support art students who have zero experience with the command line