Как построить простой сервер на Python: от нуля до работающего результата

Как построить простой сервер на Python: от нуля до работающего результата

Python умеет запускать небольшой веб-сервер без дополнительного софта буквально за несколько минут. Достаточно скачать программу с официального сайта python.org и во время установки отметить пункт «Add Python to PATH», чтобы запускать её из командной строки.

Такой подход особенно полезен, если вы планируете развернуть проект на VPS. На виртуальном сервере можно протестировать веб-приложение, настроить доступ для пользователей и убедиться, что оно работает стабильно в условиях, приближённых к продакшену. Это удобный способ начать с минимальных усилий и перейти от экспериментов на локальной машине к реальной инфраструктуре.

Аренда VPS/VDS — от ₽219/месяц

Почему выбирают VPS от AdminVPS:

✓ Дешевле физического сервера

✓ Более гибкий и мощный, чем обычный хостинг

✓ Бесплатная защита от DDoS и техподдержка 24/7

✓ Масштабируется под любые задачи

Виртуальный сервер VPS/VDS — ваш личный сервер для сайтов, магазинов, ботов и других проектов.

popup12

Подготовка окружения

Откройте командную строку (Windows: кнопка «Пуск» → «cmd»; Mac: Launchpad → Terminal). И проверьте есть ли Python, набрав:

python --version

Номер версии подтвердит, что всё установлено.

Создание рабочей папки

На своём компьютере создайте каталог, где будут храниться файлы ресурса. Например:

  • Windows: C:\Users\Имя\ServerTest;
  • Mac/Linux: /Users/Имя/ServerTest.

Теперь сделаем веб-сервер.

Откройте командную строку в рабочей папке.

В Windows: удерживая Shift, щёлкните правой кнопкой мыши по каталогу → Окно команд или PowerShell здесь.

В Mac/Linux: откройте Терминал и перейдите в каталог через cd ― cd /Users/Имя/ServerTest.

Запуск локального ресурса на Python

Откройте командную строку или терминал в рабочей папке, которую создали ранее.
Запустите сервер. Для Python 3:

python -m http.server 8000

Здесь 8000 — это номер порта. Его можно заменять на любой другой.

После выполнения вы увидите сообщение о запуске.

Для проверки функциональности откройте браузер и введите адрес:

http://localhost:8000

Появится список рабочих файлов и папок. 

Чтобы остановить сервер, вернитесь в окно командной строки и нажмите Ctrl+C. Порт освободится, сессия будет завершена.

Проверка сервера с помощью простой HTML-страницы

Чтобы убедиться, что сервер функционирует, создадим небольшую HTML веб-страницу.

В рабочем каталоге создайте документ index.html. Откройте его в любом редакторе и вставьте:

 <!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Мой первый сервер</title>
</head>
<body>
    <h1>Сервер на Python работает!</h1>
    <p>Поздравляем, вы видите эту страницу через собственный сервер.</p>
</body>
</html>

Сохраняем с расширением .html. Это важно для корректного отображения в браузере.

Активируем из терминала командой:

python -m http.server 8000

В браузере откройте адрес:

http://localhost:8000/index.html

Любые изменения можно сохранять, и после обновления страницы они появятся сразу.

Настройка порта и адреса

По умолчанию сервер использует порт 8000 и принимает подключения только с определённого устройства (localhost). Для расширения подключения в сети нужно указать IP-адрес компьютера.

Узнаём локальный IP. На Windows: откройте Пуск → введите cmd → в открывшемся окне введите:

ipconfig

Найдите строку IPv4-адрес.

На Mac/Linux: откройте терминал и выполните:

ifconfig

Ищите inet в разделе вашего сетевого адаптера.

Вместо стандартного localhost можно указать свой IP:

python -m http.server 8000 --bind 192.168.1.100

После этого любое устройство в локальной сети сможет открыть страницу по адресу:

http://192.168.1.100:8000/index.html

Если 8000 занят другим процессом, можно использовать любое число от 1024 до 65535. Просто замените порт в строке запуска:

python -m http.server 8080

Обработка форм и передача информации

Веб-сервер может принимать данные от пользователя через HTML-форму. Для этого создадим отдельный файл form.html с самой формой:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>Отправка данных</title>
</head>
<body>
    <h1>Введите сообщение</h1>
    <form method="POST" action="/">
        <input type="text" name="message" placeholder="Текст">
        <button type="submit">Отправить</button>
    </form>
</body>
</html>

Теперь изменим код так, чтобы обрабатывать данные, отправленные через форму. Для этого нужно создать отдельный файл server.py (название не принципиально) в /Users/Имя/ServerTest (каталог, о котором сказано в разделе «Создание рабочей папки»). В него вставляем код:

from http.server import BaseHTTPRequestHandler, HTTPServer
import urllib.parse

class SimpleHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        if self.path == '/form':
            with open("form.html", "rb") as f:
                self.send_response(200)
                self.send_header("Content-type", "text/html")
                self.end_headers()
                self.wfile.write(f.read())
        else:
            self.send_response(200)
            self.send_header("Content-type", "text/html")
            self.end_headers()
            self.wfile.write(b"<h1>Главная страница</h1><p>Перейдите на <a href='/form'>/form</a> для отправки данных.</p>")

    def do_POST(self):
        content_length = int(self.headers['Content-Length'])
        post_data = self.rfile.read(content_length)
        fields = urllib.parse.parse_qs(post_data.decode())
        message = fields.get("message", [""])[0]

        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()
        self.wfile.write(f"<h1>Вы отправили:</h1><p>{message}</p>".encode())

server = HTTPServer(("localhost", 8000), SimpleHandler)
print("Сервер запущен на http://localhost:8000")
server.serve_forever()

То есть запуск происходит напрямую командой python server.py.

Таким образом:

  • при открытии http://localhost:8000/form сервер отдаёт файл form.html с формой;
  • когда пользователь вводит сообщение и нажимает кнопку «Отправить», данные отправляются методом POST на адрес /;
  • сервер принимает данные, разбирает их и показывает на странице.

Так можно обрабатывать любую информацию, которую посетитель вводит в форму.

Что может мешать подключению

Когда подключение с других устройств отсекается, чаще всего причина в настройках безопасности.

Проверим брандмауэр Windows. Нажмите Пуск → Панель управления → Брандмауэр Защитника Windows (в новых версиях Windows: Параметры → Обновление и безопасность → Безопасность Windows → Брандмауэр и защита сети).

Слева выберите «Разрешить приложение или компонент через брандмауэр».

Найдите в списке Python (python.exe).

Убедитесь, что стоят галочки в колонках Частная и Публичная.

Программы нет в списке? Нажмите «Разрешить другое приложение», укажите путь к python.exe (обычно в C:\Users\Имя\AppData\Local\Programs\Python\Python311).

Если программа не добавилась, организуем разрешение порта вручную. В том же меню брандмауэра нажмите Дополнительные параметры.

В открывшемся окне выберите Правила для входящих подключений → Создать правило.

Укажите «Для порта», нажмите «Далее».

Введите номер порта: 80 (для HTTP) или 443 (для HTTPS).

Выберите «Разрешить подключение» и подтвердите.

Некоторые антивирусы (например, Kaspersky, Avast, ESET) блокируют локальный веб-сервер. Поэтому откройте панель управления антивируса.

Найдите раздел Сетевой экран / Firewall / Web Protection.

Разрешите для программы python.exe доступ в сеть.

Для доступа не только с домашнего Wi-Fi, но и, например, из интернета зайдите в настройки роутера (обычно 192.168.0.1 или 192.168.1.1 в браузере).

В разделе Port forwarding (Переадресация портов) добавьте правило: порт 80 → IP-адрес компьютера, где запущен сервер.

Читайте в блоге:

Loading spinner
0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Нужен VPS сервер?

Арендуйте мощный VPS сервер для ваших проектов! Быстрая настройка, высокая производительность и надежная поддержка 24/7. Начните прямо сейчас!

Что будем искать? Например,VPS-сервер

Мы в социальных сетях