Простой веб-сервер с использованием Python и Flask
Существует множество способов поднять свой собственный веб-сервер, который будет обрабатывать HTTP запросы пользователей и возвращать им в браузеры результат.
Поскольку мы используем Python в качестве основного языка, библиотеку, упрощающую нам создание веб-сервера, выберем тоже из мира Python.
Flask — это инструмент для веб-сайтов на языке Python. Представляет из себя микрофреймворк со встроенным веб-сервером. Договоримся, что вы используете Linux в качестве операционной системы, либо знаете как выполнить аналоги команд в Windows.
Установка необходимых библиотек
В предыдущей статье вы уже установили и настроили python, pip и virtualenv. Осталось загрузить сам Flask:
pip install flask
Если вы желаете работать с виртуальными окружениями, перейдите в директорию с ним и выполните команду:
source venv/bin/activate
Чтобы проверить все ли правильно установилось, вы можете создать файл server. py со следующим содержимым:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
Выполнить его можно командой:
python server.py
По умолчанию, Flask работает на порту 5000. Перейдите по адресу http://localhost:5000 в браузере. Если вы все сделали правильно, на экране отобразится надпись «Hello World!».
Flask позволяет делать много замечательных вещей, например, обрабатывать GET и POST параметры. Более подробно можно ознакомиться со всеми функциями в официальной документации:
Модифицируем скрипт таким образом, чтобы он принимал имя пользователя и выводил на экран приветствие:
from flask import Flask
app = Flask(__name__)
@app.route("/<username>", methods=['GET'])
def index(username):
return "Hello, %s!" % username
if __name__ == "__main__":
app. run(host='0.0.0.0', port=4567)
Теперь скрипт будет работать на 4567 порту, а также принимать от пользователя имя в адресной строке. Перейдите в браузере по ссылке: http://localhost:4567/yourname Вы увидите ответ: «Hello, yourname». Это значит, что сервер успешно работает и возвращает ожидаемую строку.
Настраиваем прокси
Чтобы ваш сайт был доступен другим людям, нужно иметь внешний IP адрес. Если вы знаете, что это такое или у вас есть VPS, вы можете настроить все самостоятельно. Если же вы слышите эти слова первый раз — воспользуйтесь более простым, хотя и не очень универсальным методом, который хорошо описан тут. Суть данного метода заключается в использовании прокси сервера.
В качестве прокси, будем использовать бесплатную программу ngrok. Ее главная задача — держать постоянное соединение и доставлять вам всю полученную от любого человека информацию. Запустите ее командой, передав в качестве параметра любой свободный порт:
. /ngrok http 4567
В ответ вы получите несколько строчек информации, среди которой будет нечто подобное:
Forwarding http://7e9ea9dc.ngrok.io -> 127.0.0.1:4567
Адрес http://7e8ea9dc.ngrok.io можете смело пересылать своим друзьям, пройдя по нему, они попадут на ваш сайт.
Делаем локальный сервер доступным всему интернету
Веб-разработкаПри разработке веб проекта (не важно на PHP, Django, Flask) бывают случаи когда необходимо быстро продемонстрировать его работу заказчику для уточнения деталей, а так как обычно разработка происходит на локальном компьютере разработчика, то необходимо предварительно выложить проект на удаленный сервер.
Было бы удобней просто дать заказчику временную ссылку, которая даст доступ к проекту запущенному локально у разработчика. Для этих целей есть инструмент ngrok, как его использовать описано в этой заметке.
использовать описано в этой заметке.
Установка ngrok на Windows
ngrok доступен под все основные операционные системы, скачать его можно с https://ngrok.com/download. Под Windows доступна как установка через менеджер пакетов Chocolatey, так через скачивания zip архива.
После скачивания архива (содержащего всего один файл) его нужно просто распаковать. На этом собственно установка завершена.
Регистрируемся тут https://dashboard.ngrok.com/login и получаем токен.
Далее в командной строке Windows перейдем в папку с ngrok.exe и выполним команду:
ngrok config add-authtoken 21dwwv1C_ТУТ_ВАШ_ТОКЕН
Как пользоваться ngrok
Например, мы разрабатываем проект на Джанго используя тестовый сервер и хотим показать проект заказчику, как нам это сделать?
Запустим тестовый сервер python manage. py runserver
, теперь проект доступен нам по адресу http://127.0.0.1:8000/
Далее в командной строке Windows перейдем в папку с ngrok.exe и выполним следующую команду:
ngrok http 8000
8000 — это порт на котором у нас запущен тестовый сервер Django.
В результате получаем такой вывод:
http://f1ff-109-63-232-90.ngrok.io/ это адрес по которому наш локальный сервер доступен в интернете.
Наш тестовый сервер будет доступен по этому адресу до тех пор, пока мы не закроем окно консоли или не нажмем в ней Ctrl + C. После этого, чтобы сервер стал доступен вновь извне с помощью ссылки, нужно заново запустить ngrok.
Попробуем перейти по полученному адресу и уже увидим страницу Джанго, осталось только убрать эту ошибку:
Для этого в файле settings.py нашего проекта поправим директиву ALLOWED_HOSTS:
ALLOWED_HOSTS = [
'127. 0.0.1',
'localhost',
'.ngrok.io']
Перезапускаем сервер Django и теперь все ок:
Вот таким образом мы можем продемонстрировать процесс разработки заказчику.
Заключение
Описанное выше это не все, что можно сделать с помощью ngrok, например мы можем сделать доступ извне к нашей локально запущенной Postgresql (например на порту 5432). Для этого достаточно команды:
ngrok tcp 5432
Далее мы получим вывод с данными доступа.
Более подробно о работе с ngrok лучше читать в официальной документации https://ngrok.com/docs
Django
Запуск HTTP-сервера для тестирования — PlayFab
Редактировать
Твиттер LinkedIn Фейсбук Электронная почта
- Статья
В некоторых сценариях может потребоваться запуск локального HTTP-сервера для целей тестирования. Например, если вы следуете нашим руководствам по настройке аутентификации PlayFab с использованием Facebook и HTML5, Google и HTML5 или Twitch и HTML5, и у вас нет удаленного сервера с доменом, это руководство может оказаться вам полезным.
Предварительные условия
- Установленный Node.JS
Установка HTTP-сервера с помощью NPM
Запустите командную строку/терминал в вашей системе (не имеет значения, в каком каталоге вы сейчас находитесь).
Выполнить npm install -g http-server
. После завершения работы NPM у вас будет установлен крошечный HTTP-сервер. Вот и все.
Обслуживание файлов
Создайте новую папку в вашей системе, из которой вы хотите обслуживать свои статические файлы. В Windows нет особых ограничений для пути.
В Mac OS вы можете проверить доступ к папке.
Заполните файл содержимым, указанным ниже.
<голова> <мета-кодировка="utf-8">Моя страница голова> <тело>Привет, мир!
тело>
Запустите командную строку /терминал и перейдите в папку с вашим файл index.html , затем:
- Выполнить http-сервер .
- HTTP-сервер начнет обслуживать файлы из вашего текущего каталога.
- Он также распечатает все конечные точки IP , которые прослушивает сервер.
- Используйте один из них для доступа к веб-серверу через браузер.
- Наблюдайте за тем, как загружается ваша страница.
При желании вы можете указать порт для запуска сервера.
- Пример : Выполните
http-server -p 80
для запуска вашего сервера на порту 80 . Если порт занят, вам нужно будет найти, какое приложение использует этот порт, и закрыть его, прежде чем пытаться снова запустить HTTP-сервер.
Обслуживание файлов с собственным доменным именем
При тестировании различных SDK, например, Google или Facebook, вы заметите, что некоторые службы можно настроить только с определенным допустимым доменным именем.
Например, они не принимают простой IP-адрес + порт. Некоторые службы используют такую конфигурацию, чтобы ваш браузер извлекал ваш код из определенного защищенного домена.
Они также часто используют эту конфигурацию, чтобы гарантировать, что пользователь может войти в ваше приложение только из вашего домена, и что никто другой не сможет подделать его и украсть пользовательские данные.
Примечание
Хотя это важное и полезное ограничение безопасности, оно может вызвать сложности при попытке локально протестировать код.
Если ваш сервер работает на порту 80, и ваш вариант использования достаточно прост, вы можете использовать файл HOSTS в вашей операционной системе для доступа к вашему HTTP-серверу через действительное доменное имя.
Файл HOSTS — это специальный файл, доступный как в Windows, так и в Mac OS. Это позволяет вам переопределять определенные доменные имена с помощью настраиваемых конечных точек. Схематически файл HOSTS выглядит так:
IP_АДРЕС_1 ДОМЕН_ИМЯ_1 IP_АДРЕС_2 ДОМЕН_ИМЯ_2 IP_АДРЕС_3 ДОМЕН_ИМЯ_3 # Это комментарий # IP_ADDRESS_4 DOMAIN_NAME_4 <- эта запись закомментирована и неактивна ...
Каждая строка представляет ровно одну запись . Когда вы попытаетесь связаться с DOMAIN_NAME_1
, ваш браузер направит ваш запрос на IP_ADDRESS_1
.
То же самое относится к каждой записи в файле HOSTS. В предыдущем примере номер записи 4
начинается с #
. Это синтаксис для комментария.
Комментируя определенные записи, вы можете отключить их, не обязательно удаляя их из файла HOSTS.
playfab.example
— допустимое доменное имя, но маловероятно, что ваш браузер откроет с ним какой-либо веб-сайт. Добавив следующую запись в файл HOSTS, вы сможете получить доступ к локальному HTTP-серверу с этим доменным именем.
127.0.0.1 playfab.example
В ОС Windows файл HOSTS обычно находится по адресу:
C:\Windows\System32\drivers\etc\hosts
.
В Mac OS файл HOSTS обычно располагается по адресу:
/private/etc/hosts
.
Предупреждение
При вводе доменного имени в адресной строке браузера обязательно указывайте схему:
.
Обратная связь
Просмотреть все отзывы о странице
Как настроить локальный тестовый сервер?
В этой статье объясняется, как настроить простой локальный тестовый сервер на вашем компьютере и как им пользоваться.
Необходимые условия: | Сначала вам нужно узнать, как работает Интернет и что такое веб-сервер. |
---|---|
Цель: | Вы узнаете, как настроить локальный тестовый сервер. |
Локальные файлы и удаленные файлы
На протяжении большей части области обучения мы советуем вам просто открывать свои примеры прямо в браузере — это можно сделать, дважды щелкнув файл HTML, перетащив его в окно браузера или выбрав Файл > Открыть... и перейти к файлу HTML. Есть много способов добиться этого.
Если путь веб-адреса начинается с file://
, за которым следует путь к файлу на локальном жестком диске, используется локальный файл. Напротив, если вы просматриваете один из наших примеров, размещенных на GitHub (или пример на другом удаленном сервере), веб-адрес будет начинаться с http://
или https://
, чтобы показать, что файл был получен по HTTP.
Проблема с проверкой локальных файлов
Некоторые примеры не запустятся, если вы откроете их как локальные файлы. Это может быть вызвано разными причинами, наиболее вероятными из которых являются:
- Они содержат асинхронные запросы . Некоторые браузеры (в том числе Chrome) не будут выполнять асинхронные запросы (см. Получение данных с сервера), если вы просто запустите пример из локального файла. Это связано с ограничениями безопасности (дополнительную информацию о веб-безопасности см. в разделе Безопасность веб-сайтов).
- Они имеют серверный язык . Серверные языки (такие как PHP или Python) требуют специального сервера для интерпретации кода и доставки результатов.
Запуск простого локального HTTP-сервера
Чтобы обойти проблему асинхронных запросов, нам нужно протестировать такие примеры, запустив их через локальный веб-сервер. Один из самых простых способов сделать это для наших целей — использовать Python SimpleHTTPServer
(или http.server
, в зависимости от установленной версии Python). 0003
Для этого:
Установите Python. Если вы используете Linux или macOS, он уже должен быть доступен в вашей системе. Если вы пользователь Windows, вы можете получить установщик с домашней страницы Python и следовать инструкциям по его установке:
- Перейти на python.org
- В разделе «Загрузка» щелкните ссылку Python «3.xxx».
- В нижней части страницы выберите исполняемый установщик Windows x86 и загрузите его.
- После загрузки запустите его.
- На первой странице установщика обязательно установите флажок «Добавить Python 3.xxx в PATH».
- Щелкните Установить , затем щелкните Закрыть после завершения установки.
Откройте командную строку (Windows)/терминал (macOS/Linux). Чтобы проверить, установлен ли Python, введите следующую команду:
питон-V # Или у вас может быть доступна команда py, # в этом случае попробуйте py -V
Это должно вернуть номер версии. Если все в порядке, перейдите в каталог, в котором находится ваш пример, с помощью команды
cd
.# укажите имя каталога, чтобы войти в него, например компакт-диск Рабочий стол # используйте две точки, чтобы перейти на один уровень каталога, если вам нужно кд..
Введите команду для запуска сервера в этом каталоге:
# Если версия Python, возвращенная выше, равна 3.X python3 -m http.сервер # В Windows попробуйте "python" вместо "python3" или "py -3" # Если версия Python, возвращенная выше, равна 2.X питон -м
Простой HTTP-сервер
По умолчанию это запустит содержимое каталога на локальном веб-сервере через порт 8000. Вы можете перейти на этот сервер, перейдя по URL-адресу
localhost:8000
в веб-браузере. Здесь вы увидите содержимое каталога в списке — щелкните HTML-файл, который хотите запустить.
Примечание : Если у вас уже есть что-то, работающее на порту 8000, вы можете выбрать другой порт, выполнив команду сервера, за которой следует альтернативный номер порта, например. python3 -m http.server 7800
(Python 3.x) или python -m SimpleHTTPServer 7800
(Python 2.x). Затем вы можете получить доступ к своему контенту по адресу localhost:7800
.
Локальный запуск серверных языков
Модуль Python SimpleHTTPServer (python 2.0) http.server (python 3.0)
полезен, но он не знает, как запускать код, написанный на таких языках, как Python, PHP или JavaScript. Чтобы справиться с этим, вам понадобится что-то еще — что именно вам нужно, зависит от языка серверной части, который вы пытаетесь запустить. Вот несколько примеров:
- Чтобы запустить серверный код Python, вам потребуется веб-инфраструктура Python. Flask также является хорошей (чуть менее тяжелой) альтернативой Django. Чтобы запустить это, вам нужно установить Python/PIP, а затем установить Flask, используя
pip3 install flask
. На этом этапе вы должны быть в состоянии запустить примеры Python Flask, используя, например,python3 python-example.