我有一个脚本可以生成每日报告,并希望将其提供给所谓的公众。问题是我不想增加所有配置和安全隐患的HTTP服务器(例如Apache)的维护工作。
是否有一个死的简单解决方案来提供一个小的HTML页面,而无需配置完整的HTTP服务器?
我有一个脚本可以生成每日报告,并希望将其提供给所谓的公众。问题是我不想增加所有配置和安全隐患的HTTP服务器(例如Apache)的维护工作。
是否有一个死的简单解决方案来提供一个小的HTML页面,而无需配置完整的HTTP服务器?
Answers:
python -m SimpleHTTPServer
# or the Python 3 equivalent
python3 -m http.server
它应该可以在http://0.0.0.0:8000的CWD中提供任何服务(例如index.html)。
python3 -m http.server 1337
。据我所知,您无法指定要绑定的IP。注意:要监听端口80,您必须具有root特权,例如:sudo python3 -m http.server 80
twistd -n web -p 8000 --path .
--bind <address>
是在python 3.4中添加的。
python -m SimpleHTTPServer 3000
要进入此列表,解决方案必须:
- 使用当前目录(或指定目录)作为服务器根目录来提供静态文件
- 能够使用一个单行命令运行(如果依赖项是一次性的,则很好)
- 使用适当的mime类型提供基本文件类型(html,css,js,图像),除了命令本身(无需框架特定的服务器等)外,无需进行其他配置(来自文件或其他方式)
- 必须在前台运行,或者具有可以在前台运行的模式(即没有守护程序)
例如:
twistd -n web -p 8000 --path .
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"}]}]).'
cpan Plack
plackup -MPlack::App::Directory -e 'Plack::App::Directory->new(root=>".");' -p 8000
webfsd -F -p 8000
ruby -run -ehttpd . -p8000
使用node.js
快速,轻巧。
要么
只需使用简单的nc
netcat命令在端口上启动快速Web服务器,并提供文件内容(包括服务器响应标头)即可。
来自维基百科的参考:
{ 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
Node具有一个简单,快速,轻便的HTTP服务器模块。安装:
sudo npm install http-server -g
(假设你已经node
和npm
已安装。)
要运行它,请使用当前目录作为网站根目录:
http-server
这会在上创建服务器http://0.0.0.0:8080/
。
npm install -D http-server
在项目目录中运行,然后在package.json
文件中添加以下行:"scripts": { "build": "webpack && cd src/public && http-server" },
现在,我只需要npm run build
在项目目录中运行以启动HTTP服务器,默认情况下侦听端口8080。
python3 -m http.server
”,但是它是单线程的,一次只能下载一个客户端,其他需要等待。由于Node的异步特性,因此使用Node.js的此解决方案效果更好。如果要与几个人共享文件,请使用此功能。
尝试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()')
前两行是为Web服务器设置的。最后一行创建了一个简单的Web服务器,该服务器在端口8080上打开,仅提供来自的文件~/public_html
。如果该目录中只有一个文件,则仅公开该文件:http://localhost:8080/output.txt
。
.py
文件上,然后运行python
(或使其可执行)即可。请记住,您必须使用python 2.x解释器运行。
您可以使用xinetd。将以下配置文件放入/etc/xinetd.d/并服务xinetd reload:
service http
{
flags = REUSE IPv4
protocol = tcp
socket_type = stream
port = 80
wait = no
user = nobody
server = /bin/echo
server_args = -e HTTP/1.0 301 Moved Permanently\nContent-Length: 0\nLocation: https://goo.gl/\n\n
disable = no
}
适用于我的重定向目的:
# wget 127.0.0.1
--2016-04-04 22:56:20-- http://127.0.0.1/
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://goo.gl/ [following]
...
另一种选择是安装lighttpd。以下是在Unbuntu 12.04 LTS上安装lighttpd的建议步骤。
apt-get update
apt-get upgrade --show-upgraded
apt-get install lighttpd
ifconfig
http://[your-ip-address]:80
/etc/lighttpd/lighttpd.conf (Edit to add server.port)
server.port = "8080"
注意:Documentroot是所有可访问Web的文件的位置。该位置是/ var / wwww
上面的步骤将安装基本的lighttpd Web服务器。有关更多信息,请参考以下参考
参考文献:
简单的Ruby一个衬里服务目录:
ruby -run -e httpd . -p 8080
./devd -o -a -P devd:devd .
对稍微不公平(恕我直言)的否决答案进行简单的修复/增强也可能有效。让我们先设置html文件...
echo '<html><head><title>My Test File</title></head><body><hi>OK!</h1></body></html>' > my_file.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
这个基本想法可通过其他cat
或子shell想法为您提供其他技巧,例如:
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
SFK在这里值得一提
http://stahlworks.com/dev/swiss-file-knife.html
一个无依赖的优秀多用途工具
提供deb和rpm两种口味
sfk httpserv -port 1234
将服务当前目录
sfk httpserv -port 1234 -rw
也将允许文件上传
纯bash:shell脚本中的Web服务器。
另外,您将需要xinetd(我相信任何发行版中都可以提供)来监听端口并在需要时运行脚本,因此您不必在bash中编码tcp stack等。
尝试球童
curl https://getcaddy.com | bash
提供来自/ var / www的内容
caddy -root /var/www "browse"
现在您可以在http:// localhost:2015找到服务器
我按照以下说明在CentOS机器上安装Web服务器,而不必使用sudo或触摸任何系统文件:
第一个安装节点:
$ cd ~
$ wget https://nodejs.org/download/release/latest/node-v8.6.0-linux-x64.tar.gz
$ tar node-v8.6.0-linux-x64.tar.gz
然后安装http服务器:
$ export PATH=~/node-v8.6.0-linux-x64/bin:$PATH
$ npm install http-server
然后在端口12321上运行http-server:
$ ~/node-v8.6.0-linux-x64/bin/node_modules/http-server/bin/http-server -p 12321
我nc
对此解决方案做了一些改进:
filename=
提示,/tmp/serveFile-$PORT
以便以后可以轻松杀死它。。
#!/bin/bash
FILE=$1;
if [ "$FILE" == "" ] ; then echo "Usage: $0 <file-to-serve> [<port:7979>]"; exit; fi
PORT=${2:-7979}
echo Serving $FILE at $PORT, PID: $$
echo $$ > /tmp/serveFilePID-$PORT
while true; do
{ echo -ne "HTTP/1.0 200 OK\r\nContent-Length: $(wc -c <$FILE)\r\nContent-Disposition: inline; filename=\"$(basename $FILE)\"\r\n\r\n"; cat $FILE; } | nc -l $PORT
CODE=$?
#echo "Code: $CODE";
if [ $CODE -gt 128 ] ; then break; fi;
done;
rm /tmp/serveFilePID-$PORT
一个人也可以使用,nc -k -l ...
但是这样您可以