Как мне настроить самый простой локальный HTTP-сервер? [дубликат]

На этот вопрос уже есть ответ:

Я использую R Studio IDE для выполнения многих задач, одна из которых - обслуживание локальных веб-сайтов с использованием пакета blogdown , который является ответвлением hugo . Я пишу код в R Studio и просматриваю сайт, используя команду blogdown :: serve_site () . Это самый простой из известных мне способов предварительного просмотра статических HTML-сайтов. Использование hugo R Studio заставляет мой браузер перейти на 127.0.0.1: XXXX местоположение и мой локальный сайт просматривается у меня на глазах.

Могу ли я самостоятельно обслуживать локальные сайты с помощью Ubuntu 18.04? Как? Думаю, это должно быть очень просто. Однако, ища в Интернете, я не могу найти простого способа сделать это. Если я просто открою статические HTML-файлы прямо в браузере, они покажутся ненадежными. Все ссылки на изображения сразу разрываются. Форматирование заголовков, гиперссылок и т. Д. Отличается от того, когда я обслуживаю страницу локально с помощью hugo .

РЕДАКТИРОВАТЬ - я действительно не определял свой термин «простота». В ответах есть два разных подхода (пока): один самый простой для конечного пользователя, а другой простой в отношении операций, выполняемых моим компьютером. Мне нравятся оба подхода, и я буду приветствовать ответы, использующие любой подход, когда я их тестирую. Спасибо.

31
задан 18 December 2018 в 11:39

7 ответов

Поставки Ubuntu с помощью python3 как ее значение по умолчанию, и они пошли на многое для создания этого чрезвычайно легким для нас :D

Для запуска http сервера на порте порта просто вводят

python -m http.server port

Если Вы хотите совместно использовать файлы и директоров, CD в то, какой бы ни каталог Вы хотите служить

cd /my/html/files
python -m http.server 8080

Если Вы хотите использовать адрес кроме значения по умолчанию 0.0.0.0 можно использовать --bind

Исключая: python -m http.server 8080 --bind 127.0.0.1 будет служить им в адресе 127.0.0.1:8080 :)

Править: Было ли это действительно большими длинами, я оставлю это читателю

Также для Вашего удобства вот является ссылка на документы https://docs.python.org/3/library/http.server.html

61
ответ дан 23 November 2019 в 00:40

Вот список сервера HTTP в одной строке. Я уверен, что существует тот, который будет соответствовать Вашим инструментам целей / существующим инструментам.

После этого подмножество ссылки, которая содержит, по-моему, самые удобные.

Python:

python -m http.server 8000

Ruby:

ruby -run -ehttpd . -p8000

Узел:

npm install -g http-server
http-server -p 8000

Php:

php -S 127.0.0.1:8000
32
ответ дан 23 November 2019 в 00:40

Один простой способ установить статический http сайт состоит в том, чтобы использовать darkhttpd

Нет никакого пакета в человечности для этого, но программное обеспечение является всего одним единственным исходным файлом, который можно загрузить tarball на сайте или с мерзавцем:

git clone https://unix4lyfe.org/git/darkhttpd
cd darkhttpd

Затем выполненный make и у Вас есть свой darkhttpd исполняемый файл. (Поместите его в /usr/local/bin сделать это доступным для каждого пользователя)

Выполненный

./darkhttpd /path/to/wwwroot

или

./darkhttpd --help

получить справку о команде

Можно указать каталог или порт для использования и много других опций.

5
ответ дан 23 November 2019 в 00:40

sudo apt install apache2 установит apache2 веб-сервер. По умолчанию это обеспечивает доступ к index.html в /var/www/html папка; замена этого файла с тем, что Вы хотите разместить, является самым легким способом сделать вещи, затем можно перейти на http://127.0.0.1 на локальной машине, или на IP-адрес машины в сети, и это будет служить страницам.

4
ответ дан 23 November 2019 в 00:40

Если Вы - пользователь Google Chrome, это может быть столь же легко как использование веб-сервера для Chrome. Просто установите его, запустите его, нажмите Choose Folder для выбора каталога, который содержит статические файлы.

2
ответ дан 23 November 2019 в 00:40

Если Вы не хотите помнить аргументы команды Python, используйте лай:

Description: share files through HTTP protocol
 Woof (Web Offer One File) is a tool to copy files among hosts. It can serve a
 specified file on HTTP, just for a given number of times, and then exits.

Features include:
 * it can share stuff "one shot" and exit just after he served that file.
 * it can share things among different operating system or different devices
   (e.g.: a smartphone), and allows one to upload files easily.
 * it can also show a simple html form in order to upload file (useful if the
   client hasn't a way to serve the file).

Можно установить его на Debian/Ubuntu с

apt install woof

И используйте как

woof kittens.png

Это распечатает URL для помещения в браузер в другом конце.

3
ответ дан 23 November 2019 в 00:40

Один из самых простых (и самое ограниченное) решения использовал бы netcat как описано в этой статье:

while true; do { echo -e "HTTP/1.1 200 OK\r\n$(date)\r\n\r\n<h1>hello world from $(hostname) on $(date)</h1>" | nc -vl 8080; } done

Этот пример служит на порте 8080, служение на первых 1 024 портах потребует, чтобы Вы использовали sudo. Можно также служить файлу этот путь просто при помощи cat filename.

Поскольку более сложный пример проверяет bashttpd.

Также отметьте различия между netcat-традиционным и netcat-openbsd. Ubuntu обеспечивает обе версии.

0
ответ дан 23 November 2019 в 00:40

Другие вопросы по тегам:

Похожие вопросы: