Respuestas:
La forma más sencilla posible (gracias Aaron Patterson / n0kada):
ruby -run -e httpd . -p 9090
Manera alternativa, más compleja:
ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 9090, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
Incluso el primer comando es difícil de recordar, así que solo tengo esto en mi .bashrc
:
function serve {
port="${1:-3000}"
ruby -run -e httpd . -p $port
}
Sirve el directorio actual en el puerto 3000 de forma predeterminada, pero también puede especificar el puerto:
~ $ cd tmp
~/tmp $ serve # ~/tmp served on port 3000
~/tmp $ cd ../www
~/www $ serve 5000 # ~/www served on port 5000
ruby -run -e httpd . -p 9090
consulte ruby-doc.org/stdlib-2.0.0/libdoc/un/rdoc/index.html . Está ejecutando el método httpd de un
la biblioteca estándar de ruby, por lo que requiere un.
ruby -run -e httpd . -p 9090 &
si desea traerlo de vuelta al primer plano, use fg
.
Nunca he visto nada tan compacto como
python3 -m http.server
Opcionalmente, puede agregar un número de puerto al final:
python3 -m http.server 9000
Como lo tuiteó Aaron Patterson hoy, puedes hacer:
ruby -run -e httpd . -p 5000
Y también puede configurar la dirección de enlace agregando -b 127.0.0.1
Funciona con Ruby 1.9.2 y superior.
require 'webrick'
include WEBrick
s = HTTPServer.new(:Port => 9090, :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
Esto puede o no ser exactamente lo que quieres, pero es tan genial que tuve que compartirlo.
He usado esto en el pasado para servir el sistema de archivos. Quizás podrías modificarlo o simplemente aceptar que sirve para todo.
ruby -rsocket -e 's=TCPServer.new(5**5);loop{_=s.accept;_<<"HTTP/1.0 200 OK\r\n\r\n#{File.read(_.gets.split[1])rescue nil}";_.close}'
Lo encontré aquí
Chris
Puede usar la sinatra
gema, aunque no hace ninguna lista de directorios por usted, sirve archivos:
require 'sinatra' # gem
set :public_folder, '.'
luego ejecútelo como un archivo, si en 1.8 agregue primero require 'rubygems' en la parte superior.
Después de ejecutarlo, la URL es como
http: // localhost: 4567 / nombre_archivo
debería resolverse en el archivo "./file_name".
http: // localhost: 4567 no funcionará sin embargo, ya que no "hace" listados de directorios. Consulte https://stackoverflow.com/a/12115019/32453 para obtener una solución alternativa.
python3 -m http.server
o si no desea utilizar el puerto predeterminado 8000
python3 -m http.server 3333
o si desea permitir conexiones solo desde localhost
python3 -m http.server --bind 127.0.0.1
Consulte los documentos .