Что является более быстрой альтернативой http.server Python (или SimpleHTTPServer)?
Http.server (или SimpleHTTPServer для Python 2) в Python - отличный способ передать содержимое текущего каталога из командной строки:
python -m http.server
Тем не менее, что касается веб-серверов, это очень запутанно...
Он ведет себя так, как будто он однопоточный, и иногда вызывает ошибки тайм-аута при загрузке JavaScript-модулей AMD с помощью RequireJS. Загрузка простой страницы без изображений может занять от пяти до десяти секунд.
Какая более быстрая альтернатива, которая так же удобна?
15 ответов
http-сервер для node.js очень удобен и работает намного быстрее, чем SimpleHTTPServer в Python. Это в первую очередь потому, что он использует асинхронный ввод-вывод для одновременной обработки запросов, а не сериализации запросов.
Монтаж
Установите node.js, если вы этого еще не сделали. Затем используйте менеджер пакетов узла (npm
) установить пакет, используя -g
Возможность установить глобально. Если вы работаете в Windows, вам понадобится приглашение с правами администратора, а в Linux/OSX вы захотите sudo
команда:
npm install http-server -g
Это загрузит все необходимые зависимости и установит http-server
,
использование
Теперь из любого каталога вы можете набрать:
http-server [path] [options]
Путь необязательный, по умолчанию ./public
если он существует, в противном случае ./
,
Варианты [по умолчанию]:
-p
Номер порта для прослушивания [8080]-a
Адрес хоста для привязки к [localhost]-i
Отображение страниц индекса каталога [True]-s
или же--silent
Тихий режим не будет входить в консоль-h
или же--help
Отображение справочного сообщения и выход
Таким образом, чтобы обслуживать текущий каталог на порту 8000, введите:
http-server -p 8000
Я рекомендую: Twisted ( http://twistedmatrix.com/)
управляемый событиями сетевой движок, написанный на Python и лицензированный по лицензии MIT с открытым исходным кодом.
Он кроссплатформенный и предустановлен на OS X начиная с 10.5. Помимо прочего, вы можете запустить простой веб-сервер в текущем каталоге:
twistd -no web --path=.
подробности
Объяснение опций (см. twistd --help
для большего):
-n, --nodaemon don't daemonize, don't use default umask of 0077
-o, --no_save do not save state on shutdown
"web" - это команда, которая запускает простой веб-сервер поверх асинхронного механизма Twisted. Он также принимает параметры командной строки (после команды "web" - см. twistd web --help
для большего):
--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.
Есть также множество других команд, таких как:
conch A Conch SSH service.
dns A domain name server.
ftp An FTP server.
inetd An inetd(8) replacement.
mail An email service
... etc
Монтаж
Ubuntu
sudo apt-get install python-twisted-web (or python-twisted for the full engine)
Mac OS-X (поставляется с 10.5 или доступна в MacPorts)
sudo port install py-twisted
Windows
installer available for download at http://twistedmatrix.com/
HTTPS
Twisted также может использовать сертификаты безопасности для шифрования соединения. Используйте это с вашим существующим --path
а также --port
(для простого HTTP) варианты.
twistd -no web -c cert.pem -k privkey.pem --https=4433
Go 1.0 включает в себя http-сервер и утилиту для обслуживания файлов с несколькими строками кода.
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)
}
}
Запустите этот источник, используя go run myserver.go
или построить исполняемый файл go build myserver.go
Попробуйте webfs, он крошечный и не зависит от наличия платформы, такой как node.js или python.
Если вы используете Mercurial, вы можете использовать встроенный HTTP-сервер. В папке, которую вы хотите подать:
hg serve
Из документов:
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
Вот еще один Это расширение Chrome
После установки вы можете запустить его, создав новую вкладку в Chrome и нажав кнопку приложений в левом верхнем углу.
У него простой графический интерфейс. Нажмите выбрать папку, затем нажмите http://127.0.0.1:8887
ссылка на сайт
Я нашел python -m http.server
ненадежный - некоторые ответы займут секунды.
Теперь я использую сервер с именем Ran https://github.com/m3ng9i/ran
Ran: простой статический веб-сервер, написанный на Go
Также рассмотрим devd небольшой веб-сервер, написанный на go. Двоичные файлы для многих платформ доступны здесь.
devd -ol path/to/files/to/serve
Он небольшой, быстрый и предоставляет некоторые интересные дополнительные функции, такие как повторная загрузка в реальном времени при изменении файлов.
Если у вас установлен PHP, вы можете использовать встроенный сервер.
php -S 0:8080
Попробуй полпетту...
npm install -g polpetta
тогда ты можешь
polpetta ~/ папка
и ты готов к работе:-)
Использование Servez в качестве сервера
- Скачать Сервез
- Установите его, запустите
- Выберите папку для обслуживания
- Пик "Старт"
- Идти к
http://localhost:8080
или выберите "Запустить браузер"
Примечание. Я создал это вместе, потому что веб-сервер для Chrome исчезает, поскольку Chrome убирает поддержку приложений, а также потому, что я поддерживаю студентов, которые не имеют опыта работы с командной строкой.
Мне нравится live-сервер. Он быстрый и имеет приятную функцию перезагрузки в реальном времени, что очень удобно во время разработки.
Использование очень просто:
cd ~/Sites/
live-server
По умолчанию он создает сервер с IP 127.0.0.1 и портом 8080.
Если порт 8080 не свободен, он использует другой порт:
Если вам нужно увидеть веб-сервер на других компьютерах в вашей локальной сети, вы можете проверить, какой у вас IP, и использовать:
live-server --host=192.168.1.121
А вот скрипт, который автоматически захватывает IP-адрес интерфейса по умолчанию. Работает только на macOS.
Если вы положите его в .bash_profile
, live-server
Команда автоматически запустит сервер с правильным IP.
# **
# Get IP address of default interface
# *
function getIPofDefaultInterface()
{
local __resultvar=$1
# Get default route interface
if=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
if [ -n "$if" ]; then
# Get IP of the default route interface
local __IP=$( ipconfig getifaddr $if )
eval $__resultvar="'$__IP'"
else
# Echo "No default route found"
eval $__resultvar="'0.0.0.0'"
fi
}
alias getIP='getIPofDefaultInterface IP; echo $IP'
# **
# live-server
# https://www.npmjs.com/package/live-server
# *
alias live-server='getIPofDefaultInterface IP && live-server --host=$IP'
Еще один простой сервер командной строки на основе узла
https://github.com/greggman/servez-cli
Отчасти написано в ответ на возникновение проблем с http-сервером, особенно в Windows.
установка
Затем установите node.js
npm install -g servez
Применение
servez [options] [path]
Без пути он обслуживает текущую папку.
По умолчанию обслуживает index.html
для путей к папкам, если они существуют. В противном случае он служит списком каталогов для папок. Он также обслуживает заголовки CORS. При желании вы можете включить базовую аутентификацию с помощью--username=somename --password=somepass
и вы можете обслуживать https.
мини-сервировка
- кроссплатформенный
- один исполняемый файл
- легкий (<2 МБ для Windows/Linux x86)
miniserve . --index index.html
Версельserve
(узел.js)
Если установлен node.js , я рекомендую Vercel Serve.
# for node.js >= v14
npm install --global serve
# for node.js <= v13
npm install --global serve@13
serve
http-server
(узел.js)
Последняя версия http-сервера не работает (см. проблему ), но v13 работает
npm install --global http-server@13
http-server
Я использую файловый браузер последние пару лет, и это лучшая альтернатива, которую я нашел.
Особенности, которые мне в нем нравятся: