Основная задача веб-сервера - обрабатывать HTTP-запросы от клиента. Он ожидает HTTP-запросов, поступающих с определенного IP-адреса и номера порта, обрабатывает запрос и отправляет ответ клиента обратно. Python использует SimpleHTTPServer модуль для мгновенного создания веб-сервера и простого обслуживания содержимого файла с сервера. Его также можно использовать для обмена файлами. Для этого вы должны включить этот модуль с указанием местоположения общих файлов. Этот модуль поставляется с интерпретатором Python. Устанавливать его не нужно. Поскольку этот модуль объединен с http.server модуль в python3, поэтому вам нужно запустить http.server для запуска веб-сервера в python3. В этом руководстве показано, как можно использовать веб-сервер для обработки HTTP-запросов и обмена файлами.
Запустите веб-сервер с терминала
Выполните следующую команду, чтобы запустить веб-сервер из терминала. Если в команде не указан номер порта, веб-сервер по умолчанию запускается с порта 8000.
$ python3 -m http.сервер
Следующий вывод появится, если веб-сервер запущен правильно. CTRL + C нажимается, чтобы остановить сервер.
Выполните следующую команду, чтобы запустить веб-сервер на порту 8080.
$ python3 -m http.сервер 8080
Следующий вывод появится, если веб-сервер запущен на порту 8080.
Запустите веб-сервер с помощью скрипта Python
Выполните следующие команды, чтобы создать папку с именем Интернет и заходим в папку. Все файлы сценариев и HTML-файлы этого руководства будут созданы внутри этой папки.
$ mkdir web$CDИнтернет
Создайте HTML-файл с именем testHTML.html внутри Интернет папку со следующим скриптом. Этот файл будет загружен с веб-сервера позже.
testHTML.html
< html >< голова >
< заглавие >
Протестируйте веб-сервер Python
</ заглавие >
</ голова >
< тело >
< центр >
< img srcзнак равно'logo.jpeg' всезнак равно'Изображение не найдено'/>
< h2 стильзнак равно'цвет: зеленый'>Поздравляю! Ваш веб-сервер работает успешно.</ h2 >
< п >Визит< к hrefзнак равно'www.linuxhint.com'>LinuxHint.com</ к >для получения дополнительных руководств по Python</ п >
</ центр >
</ тело >
</ html >
Пример-1: запустить веб-сервер с определенным номером порта
Создайте файл python со следующим сценарием для запуска веб-сервера на порту 8008. http.server модуль был импортирован для запуска веб-сервера, а SocketServer был импортирован модуль для обработки HTTP-запроса, поступающего с порта 8080. Объект с именем Обработчик был создан для обработки HTTP-запросов. навсегда() вызывается функция для запуска веб-сервера. В сценарий не добавлено никаких условий завершения. Итак, скрипт выдаст ошибку, когда пользователь попытается остановить сервер.
# Импортировать серверный модульИмпортироватьhttp.сервер
# Импортировать модуль SocketServer
Импортироватьсокетсервер
# Установить номер порта
портзнак равно 8080
# Создать объект для обработки HTTP-запросов
Обработчикзнак равноhttp.сервер.SimpleHTTPRequestHandler
# Запустить сервер навсегда для обработки HTTP-запросов
с участиемсокетсервер.TCPServer(('',порт),Обработчик) в качествеhttpd:
Распечатать('Веб-сервер работает по адресу http: // localhost:% s'% порт)
httpd.serve_forever()
Выход
Следующий вывод появится после выполнения вышеуказанного скрипта.
Список файлов и папок, в которых находится сценарий, будет показан, если следующий URL-адрес будет запущен из браузера.
Если пользователь нажимает CTRL + C на терминале или нажимает кнопку остановки в редакторе PyCharm, отображается следующее сообщение об ошибке. Эта проблема решена в следующем примере этого руководства.
Пример-2: Запуск веб-сервера с номером порта, определенным в командной строке.
Создайте файл python со следующим сценарием для запуска веб-сервера на определенном порту, если в аргументе командной строки указан номер порта; в противном случае в качестве порта по умолчанию будет использоваться 5000. sys Модуль был импортирован в сценарий для чтения значений аргументов командной строки. попробуй, кроме В скрипт добавлен блок для обработки ошибки, когда пользователь пытается остановить сервер. Если после запуска сервера появляется исключение KeyboardInterrupt, то близко() будет вызвана функция для остановки веб-сервера.
# Импортировать серверный модульИмпортироватьhttp.сервер
# Импортировать модуль SocketServer
Импортироватьсокетсервер
# Импортировать модуль sys
Импортировать sys
пытаться:
# Установить номер порта
если sys.argv[1:]:
портзнак равно int(sys.argv[1])
еще:
портзнак равно 5000
# Установить IP-адрес
адрес серверазнак равно ('127.0.0.1',порт)
# Создать объект для обработки HTTP-запросов
Обработчикзнак равноhttp.сервер.SimpleHTTPRequestHandler
# Запустить веб-сервер навсегда для обработки HTTP-запросов
с участиемсокетсервер.TCPServer(('',порт),Обработчик) в качествеhttpd:
Распечатать('Веб-сервер работает по адресу http: // localhost:% s'% порт)
httpd.serve_forever()
# Остановил сервер
Кроме KeyboardInterrupt:
httpd.server_close()
Распечатать(«Сервер остановлен».)
Выход
Следующий вывод появится после выполнения вышеуказанного сценария без значения аргумента командной строки.
Следующий вывод появится, если запустить HTML-файл, созданный на предыдущем шаге, с веб-сервера.
Откройте диалоговое окно конфигурации из меню «Выполнить» редактора PyCharm, чтобы установить значение аргумента командной строки. Поле параметров используется для установки аргумента командной строки, и здесь устанавливается 3000 в качестве значения аргумента.
Следующий вывод появится, если вы снова запустите сценарий после установки значения аргумента.
Пример-3: Запуск веб-сервера с файлом HTML
Создайте файл python со следующим сценарием для запуска веб-сервера, определив файл HTML для базового URL-адреса. Имя хоста и номер порта определены в начале сценария. PythonServer В сценарии определен класс для отображения HTML-файла в браузере при запуске веб-сервера.
# Импортировать серверный модульИмпортироватьhttp.сервер
# Установить имя хоста
ХОЗЯИНзнак равно 'localhost'
# Установить номер порта
ПОРТзнак равно 4000
# Определить класс для отображения страницы индекса веб-сервера
классPythonServer(http.сервер.SimpleHTTPRequestHandler):
defполучить(себя):
если себя.дорожка == '/':
себя.дорожка знак равно 'testHTML.html'
возвращениеhttp.сервер.SimpleHTTPRequestHandler.получить(себя)
# Объявить объект класса
веб серверзнак равноhttp.сервер.HTTPServer((ХОЗЯИН,ПОРТ),PythonServer)
# Распечатать URL-адрес веб-сервера
Распечатать('Сервер запущен http: //% s:% s'%(ХОЗЯИН,ПОРТ))
пытаться:
# Запускаем веб-сервер
веб сервер.serve_forever()
Кроме KeyboardInterrupt:
# Остановить веб-сервер
веб сервер.server_close()
Распечатать(«Сервер остановлен».)
Выход
Следующий вывод появится при выполнении вышеуказанного сценария.
Следующая страница появится в браузере, если выполняется базовый URL-адрес веб-сервера в браузере.
Заключение
Различные способы реализации веб-серверов с использованием http. сервер Модуль, показанный в этом руководстве, поможет пользователям Python создать простой веб-сервер на Python.