Cid*_*Cid 177 command-line webserver html http
我有一个脚本可以生成一份每日报告,我想为所谓的公众服务。问题是我不想增加我对 HTTP 服务器(例如 Apache)的所有配置和安全影响的头痛维护。
有没有一个简单的解决方案来提供一个小的 HTML 页面,而无需配置一个完整的 HTTP 服务器?
Oli*_*nde 230
python -m SimpleHTTPServer
# or the Python 3 equivalent
python3 -m http.server
Run Code Online (Sandbox Code Playgroud)
它应该会在http://0.0.0.0:8000处提供CWD(例如 index.html)中的任何内容。
Evg*_*gin 67
要进入此列表,解决方案必须:
- 使用当前目录(或指定目录)作为服务器根目录提供静态文件
- 能够使用单个单行命令运行(如果它们是一次性的,则依赖项很好)
- 使用适当的 mime 类型提供基本文件类型(html、css、js、图像),除了命令本身(没有特定于框架的服务器等)不需要配置(来自文件或其他)
- 必须在前台运行,或者有一个可以运行的模式(即没有守护进程)
例如:
twistd -n web -p 8000 --path .
Run Code Online (Sandbox Code Playgroud)二郎:
erl -s inets -eval 'inets:start(httpd,[{server_name,"NAME"},{document_root, "."},{server_root, "."},{port, 8000},{mime_types,[{"html","text/html"},{"htm","text/html"},{"js","text/javascript"},{"css","text/css"},{"gif","image/gif"},{"jpg","image/jpeg"},{"jpeg","image/jpeg"},{"png","image/png"}]}]).'
Run Code Online (Sandbox Code Playgroud)cpan Plack
plackup -MPlack::App::Directory -e 'Plack::App::Directory->new(root=>".");' -p 8000
Run Code Online (Sandbox Code Playgroud)webfsd -F -p 8000
Run Code Online (Sandbox Code Playgroud)ruby -run -ehttpd . -p8000
Run Code Online (Sandbox Code Playgroud)Nik*_*ley 53
使用node.js,快速,轻便。
或者
只需使用简单的ncnetcat 命令在端口上启动一个快速的网络服务器,并提供包括服务器响应头在内的文件内容。
来自维基百科的参考:
{ echo -ne "HTTP/1.0 200 OK\r\n\r\n"; cat some.file; } | nc -l -p 8080
{ echo -ne "HTTP/1.0 200 OK\r\nContent-Length: $(wc -c <some.file)\r\n\r\n"; cat some.file; } | nc -l -p 8080
Run Code Online (Sandbox Code Playgroud)
Ale*_*der 41
是的,网络。
可以在这里找到:nweb.c
(以前在ibm.com 上)
编译 nweb.c:
gcc -O -DLINUX nweb.c -o nweb
Run Code Online (Sandbox Code Playgroud)
man*_*ork 38
从 5.4.0 版本开始,PHP 也有一个内置的 web 服务器:
php -S localhost:8000
Run Code Online (Sandbox Code Playgroud)
您可以使用 指定 Web 服务器的文档目录-t,例如:
php -S localhost:8000 -t /var/lib/www
Run Code Online (Sandbox Code Playgroud)
如果您希望能够通过网络访问服务器,则:
php -S 0.0.0.0:8000 -t /var/lib/www
Run Code Online (Sandbox Code Playgroud)
ash*_*999 19
Node 有一个简单、快速、轻量级的 HTTP 服务器模块。安装:
sudo npm install http-server -g
Run Code Online (Sandbox Code Playgroud)
(假设您已经安装node并且npm已经安装。)
要运行它,请使用当前目录作为网站根目录:
http-server
Run Code Online (Sandbox Code Playgroud)
这将在 上创建一个服务器http://0.0.0.0:8080/。
对稍微不公平(恕我直言)被否决的答案进行简单的修复/增强也可能有效。让我们先设置 html 文件......
echo '<html><head><title>My Test File</title></head><body><h1>OK!</h1></body></html>' > my_file.html
Run Code Online (Sandbox Code Playgroud)
(感谢 Steve Folly 发现了我在上面 HTML 中的拼写错误。已修复。)
现在你可以用这一行来提供它:
while true; do echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n" | cat - my_file.html | nc -l -p 8080; done
Run Code Online (Sandbox Code Playgroud)
这个基本想法适用于其他可能通过其他cat或子壳想法对您有用的技巧,例如:
while true; do echo -e "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nI think the date is $(date), Have a good day!" | nc -l -p 8080; done
Run Code Online (Sandbox Code Playgroud)
尝试SimpleHTTPServer在 Python 中使用。
mkdir ~/public_html
command_to_generate_output > ~/public_html/output.txt
(cd ~/public_html; python -c 'import SimpleHTTPServer,BaseHTTPServer; BaseHTTPServer.HTTPServer(("", 8080), SimpleHTTPServer.SimpleHTTPRequestHandler).serve_forever()')
Run Code Online (Sandbox Code Playgroud)
前两行是为 Web 服务器设置的。最后一行创建了一个简单的 Web 服务器,在端口 8080 上打开,该服务器仅提供来自~/public_html. 如果该目录中只有一个文件,则仅公开该文件:http://localhost:8080/output.txt.