Python сервер для windows

Развертывание Python-приложений – этот волшебный момент, когда ваш код покидает уютное гнездышко локальной машины и отправляется в большой и страшный мир серверов. Для неофитов в мире разработки это может показаться чем-то вроде отправки ребенка в первый класс – волнительно, немного страшно, и вы абсолютно уверены, что что-то пойдет не так.

мониторы и код

Но не переживайте! Эта статья – ваш личный гид по джунглям деплоя. Мы разберем все – от выбора сервера (спойлер: это не так просто, как выбрать пиццу на ужин) до запуска приложения и управления обновлениями. И да, мы даже поговорим о том, как справиться с неизбежными ошибками, потому что, давайте будем честными, они обязательно появятся.

Итак, пристегните ремни, дорогие начинающие разработчики. Мы отправляемся в увлекательное путешествие по миру развертывания Python-приложений. И помните: в конце этого пути вас ждет работающее приложение и чувство глубокого удовлетворения. Ну, или как минимум, повод выпить чашечку кофе. Или что покрепче.

Выбор сервера и операционной системы

Итак, вы решили вывести свое Python-приложение в большой мир. Первый шаг – выбрать ему достойное жилище. И тут начинается веселье, потому что вариантов больше, чем начинок для пиццы в среднестатистической пиццерии.

Начнем с типов серверов. У нас есть виртуальные серверы (для тех, кто любит делить), выделенные (для единоличников) и облачные (для тех, кто верит в силу тумана). Виртуальные серверы – это как коммуналка: вроде свое, но соседи шумят. Выделенные – как собственный особняк, но и счета за коммуналку соответствующие. Облачные же – это когда вы арендуете квартиру, но понятия не имеете, в каком она доме.

Теперь об операционных системах. Линукс или Виндоус – вечный вопрос, как «Быть или не быть?», только с большим количеством ругательств в процессе решения. Linux – любимчик разработчиков, этакий «мистер надежность». Ubuntu, CentOS – выбирайте на вкус, все равно потом будете гуглить каждую вторую команду. Windows – для тех, кто любит жизнь с острыми ощущениями или просто мазохист.

Выбор, конечно, зависит от вашего проекта. Если у вас небольшое приложение, которое вы делаете «just for fun», виртуальный Linux-сервер будет в самый раз. Если же вы планируете захватить мир с помощью своего кода, возможно, стоит присмотреться к выделенному серверу или облачным решениям.

И помните: какой бы выбор вы ни сделали, вы всегда сможете обвинить в проблемах «эту чертову инфраструктуру». Удачи!

Установка Python и зависимостей на сервер

Итак, вы выбрали сервер. Поздравляю! Теперь начинается самое интересное – превращение этого девственно чистого пространства в полноценную среду для вашего Python-приложения. Приготовьтесь почувствовать себя немного богом. Или, по крайней мере, системным администратором.

Первым делом нам нужно установить сам Python. Если вы выбрали Ubuntu (а я почему-то уверен, что так и есть – видимо, сказывается мой богатый опыт наблюдения за начинающими разработчиками), то все довольно просто. Открываете терминал и вводите:

sudo apt-get update
sudo apt-get install python3.10

Вуаля! Python установлен. Чувствуете, как власть ударила в голову? Подождите, это только начало.

Теперь нам нужно создать виртуальное окружение. Зачем? Ну, представьте, что ваше приложение – это капризный кот, которому нужна своя отдельная миска. Виртуальное окружение – это как раз такая миска, только для зависимостей вашего проекта.

python3 -m venv myenv
source myenv/bin/activate

Теперь вы в виртуальном окружении. Чувствуете себя особенным? Так и должно быть.

Следующий шаг – установка зависимостей. Надеюсь, у вас есть файл requirements.txt? Нет? Ну, тогда самое время его создать. А если есть, то просто введите:

pip install -r requirements.txt

И смотрите, как терминал наполняется строками установки. Это как рождественское утро, только вместо подарков – библиотеки Python.

Помните, каждая успешно установленная зависимость – это маленькая победа. А каждая ошибка – это возможность почувствовать себя настоящим разработчиком и провести несколько увлекательных часов на Stack Overflow.

Удачи, и да пребудет с вами сила Python!

Настройка виртуального окружения

А теперь давайте немного подробнее поговорим о виртуальных окружениях. Знаете, это как личный бункер для вашего кода – уютно, изолированно и никто не сможет случайно подложить вам библиотеку-свинью.

Процесс создания виртуального окружения прост, как дважды два (ну, или как рекурсия – это уж как посмотреть):

  • Создаем:
python3 -m venv myenv

Где «myenv» — это имя вашего окружения. Можете назвать его «супер-пупер-мега-окружение-9000», но потом не жалуйтесь, что устали печатать.

  • Активируем: На Linux/MacOS:
source myenv/bin/activate

На Windows (потому что Windows всегда должен быть особенным):

myenv\Scripts\activate

И вуаля! Вы в виртуальном окружении. Теперь вы можете устанавливать любые пакеты, и они будут доступны только здесь. Это как Vegas – что происходит в виртуальном окружении, остается в виртуальном окружении.

Преимущества использования виртуальных окружений? О, их масса! Во-первых, вы можете экспериментировать с разными версиями библиотек, не боясь сломать что-то важное. Во-вторых, ваши проекты не будут конфликтовать друг с другом из-за разных версий зависимостей. И в-третьих, вы будете выглядеть очень умным, когда будете рассказывать об этом на собеседованиях.

Помните: хорошие разработчики используют виртуальные окружения. Великие разработчики забывают их деактивировать и потом час не могут понять, почему установленный глобально пакет не работает. Будьте великими, но не слишком.

Контейнеризация приложения

А теперь давайте поговорим о контейнерах – современном способе упаковки приложений, который заставляет традиционное развертывание нервно курить в сторонке.

Docker – это как виртуальное окружение на стероидах. Только вместо изоляции зависимостей, мы изолируем все: от операционной системы до последней библиотеки. Вот простой пример Dockerfile для Python-приложения:

FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

Это как рецепт для приготовления идеального контейнера: берем базовый образ Python, добавляем наши зависимости, закидываем код – и вуаля! У нас есть контейнер, который будет работать одинаково хоть на вашем ноутбуке, хоть на сервере в AWS.

Собираем образ:
docker build -t myapp:latest .
Запускаем контейнер:
docker run -p 8000:8000 myapp:latest

Преимущества контейнеризации:

  • «Работает на моей машине» больше не отмазка – контейнер работает одинаково везде
  • Изоляция приложения и его зависимостей
  • Простота масштабирования и обновления
  • Возможность быстрого отката к предыдущей версии

И помните: контейнеризация – это не просто модное слово для резюме. Это реальный инструмент, который может сэкономить вам часы головной боли при развертывании. Хотя, конечно, взамен он подарит вам новые часы головной боли при изучении Docker. Но эй, никто не обещал, что будет легко!

Загрузка приложения на сервер

Итак, наш сервер готов и жаждет познакомиться с вашим кодом. Пришло время устроить этим двоим свидание. И, как истинный сводник, вы должны выбрать идеальный способ для их встречи.

У нас есть несколько вариантов, каждый из которых по-своему «прекрасен»:

  • SCP (Secure Copy Protocol) — для тех, кто любит олдскул и не боится командной строки:
scp -r /path/to/your/local/app username@your_server_ip:/path/on/server

Просто, надежно, и заставляет вас чувствовать себя хакером из 90-х.

  • RSYNC — для тех, кто хочет быть уверен, что каждый байт дошел до места назначения:
rsync -avz /path/to/your/local/app username@your_server_ip:/path/on/server

Это как SCP, но на стероидах. И да, «-avz» — это не пароль, а параметры. Не благодарите.

  • Git — для тех, кто живет в 21 веке и не боится публичных репозиториев:
ssh username@your_server_ip
git clone https://github.com/your_username/your_repo.git

Предполагается, что вы уже загрузили свой код на GitHub. Если нет — что ж, добро пожаловать в мир современной разработки!

Какой бы метод вы ни выбрали, результат один — ваш код теперь на сервере. Поздравляю! Вы только что совершили своего рода телепортацию. Или, по крайней мере, очень быструю доставку.

Помните: загрузка кода на сервер — это как отправка ребенка в летний лагерь. Вы надеетесь, что все будет хорошо, но на всякий случай оставляете копию дома (читай: локальную копию кода). Потому что иногда «It works on my machine» — единственное утешение, которое у вас останется.

Настройка веб-сервера для Python-приложения

Итак, ваш код благополучно добрался до сервера. Теперь нужно убедиться, что он сможет общаться с внешним миром. Для этого нам понадобится веб-сервер — своего рода переводчик между вашим Python-кодом и остальным интернетом.

У нас есть несколько популярных кандидатов на эту роль:

  1. Nginx — швейцарский нож мира веб-серверов. Быстрый, надежный, и настолько гибкий, что им можно завязывать морские узлы.
  2. Apache — старичок, который все еще в строю. Как дедушка, который помнит войну и может часами рассказывать о своем боевом прошлом.
  3. Gunicorn — специально для Python. Этакий переводчик-синхронист, который понимает и Python, и HTTP.

Давайте рассмотрим настройку Nginx, потому что… ну, потому что я так решил. (Кажется. По крайней мере таково моё личное оценочное суждение.)

Базовая конфигурация Nginx для проксирования запросов к вашему Python-приложению может выглядеть примерно так:

server {
    listen 80;
    server_name example.com;

    location / {
    	proxy_pass http://127.0.0.1:8000;
    	proxy_set_header Host $host;
    	proxy_set_header X-Real-IP $remote_addr;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Это конфигурация говорит Nginx: «Эй, слушай порт 80, и когда кто-то постучится на example.com, перенаправь его к нашему Python-приложению, которое крутится на локальном порту 8000».

А теперь о безопасности – потому что без нее ваше приложение как дом с открытыми дверями в неблагополучном районе. Базовая защита от DDoS-атак в Nginx может выглядеть так:

http {
    # Ограничение количества соединений с одного IP
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    limit_conn addr 100;

    # Ограничение количества запросов в секунду
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
    
    # Базовые заголовки безопасности
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block"
    
    # Настройка SSL
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
}

Не забудьте также настроить файрвол (например, UFW), использовать HTTPS и регулярно обновлять все компоненты системы. И помните: безопасность – это не конечное состояние, а постоянный процесс. Как только вы решили, что ваше приложение полностью защищено, где-то рождается новый вид атаки.

Конечно, это лишь верхушка айсберга. Настройка веб-сервера — это как игра в шахматы с компьютером: каждый ход может привести либо к победе, либо к полному разгрому. И да, компьютер обычно выигрывает.

Помните: правильная настройка веб-сервера может превратить ваше приложение из неуклюжего гадкого утенка в прекрасного лебедя, способного выдержать наплыв пользователей. Или, по крайней мере, не упасть при первом же запросе. Что, согласитесь, уже неплохо.

Пример конфигурации Nginx для Python

Итак, вы решили доверить свое приложение Nginx. Мудрое решение, хотя и чреватое головной болью. Давайте рассмотрим более подробный пример конфигурации, который заставит ваше приложение петь и танцевать (метафорически, конечно, если только вы не разрабатываете какое-нибудь безумное приложение для караоке).

server {
    listen 80;
    server_name example.com www.example.com;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location / {
    	proxy_pass http://127.0.0.1:8000;
    	proxy_set_header Host $host;
    	proxy_set_header X-Real-IP $remote_addr;
    	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    	proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static/ {
    	alias /path/to/your/static/files/;
    	expires 30d;
    	add_header Cache-Control "public, max-age=2592000";
    }

    client_max_body_size 10M;

    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
}

Давайте разберем этот монстра по косточкам:

  1. listen 80 — Nginx будет слушать порт 80. Если вы хотите почувствовать себя более защищенным, можете использовать 443 для HTTPS (но это уже совсем другая история, полная сертификатов и паранойи).
  2. server_name — указывает, какие доменные имена обслуживает этот блок. Здесь мы обрабатываем как example.com, так и www.example.com, потому что некоторые люди просто обожают лишние «www».
  3. access_log и error_log — потому что когда что-то пойдет не так (а оно обязательно пойдет), вы захотите знать, что именно.
  4. Блок location / — это сердце нашей конфигурации. Он проксирует запросы к вашему Python-приложению, запущенному на localhost:8000.
  5. location /static/ — отдельный блок для статических файлов. Потому что заставлять Python отдавать статику — это как использовать космический корабль для поездки в магазин.
  6. client_max_body_size — ограничивает размер загружаемых файлов. 10M должно хватить, если только вы не планируете загружать полное собрание сочинений Толстого в одном запросе.
  7. gzip on — включает сжатие. Потому что каждый байт на счету, особенно когда вы платите за трафик.

Помните, конфигурация Nginx — это искусство, сродни написанию хайку. Только вместо созерцания природы вы будете созерцать логи сервера и думать, почему же все-таки не работает то, что должно работать.

И да, не забудьте перезапустить Nginx после внесения изменений. Иначе вы проведете несколько увлекательных часов, гадая, почему ваши гениальные настройки не работают.

Запуск и тестирование Python-приложения

Итак, мы добрались до момента истины. Ваше приложение уютно устроилось на сервере, Nginx настроен и готов к подвигам. Пора запустить эту машину и посмотреть, взлетит она или загорится.

Для запуска Python-приложения у нас есть несколько вариантов, и выбор зависит от того, насколько сильно вы хотите усложнить себе жизнь:

  • Простой способ (для тех, кто любит жить опасно):
python app.py

Да, просто запустить скрипт. Но это как ездить на велосипеде без рук — круто, пока не встретишь первую кочку.

  • Gunicorn (для тех, кто уже понял, что простые решения — это не про Python):
gunicorn app:app -b 0.0.0.0:8000 -w 4

Здесь -w 4 означает, что мы запускаем 4 рабочих процесса. Почему 4? А почему бы и нет?

  • Supervisor (для контрол-фриков): Создайте файл конфигурации /etc/supervisor/conf.d/myapp.conf:
[program:myapp]
command=/path/to/venv/bin/gunicorn app:app -b 0.0.0.0:8000 -w 4
directory=/path/to/your/app
user=nobody
autostart=true
autorestart=true

Затем

supervisorctl reread
supervisorctl update
supervisorctl start myapp

Теперь ваше приложение будет автоматически перезапускаться при падении. Как феникс, только менее эпично.

Когда приложение запущено, давайте убедимся, что оно действительно работает, а не просто притворяется:

  • Проверьте, что процесс запущен:
ps aux | grep python

Если вы видите ваше приложение в списке — поздравляю, оно живо!

  • Проверьте доступность через curl:
curl http://localhost:8000

Если вы получили ответ, а не ошибку — это хороший знак. Если ответ осмысленный — это уже повод для праздника.

  • Наконец, попробуйте открыть ваш сайт в браузере. Если вы видите что-то кроме ошибки 500 — вы официально можете назвать себя DevOps-инженером (ну, или по крайней мере, человеком, который смог запустить Python-приложение на сервере, что уже немало).

Помните: запуск приложения — это только начало. Теперь вам предстоит увлекательное путешествие в мир логов, мониторинга и ночных вызовов, потому что приложение решило упасть именно в 3 часа ночи. Добро пожаловать в мир продакшена!

График показывает влияние количества процессов Gunicorn на нагрузку на сервер

Управление обновлениями и поддержка приложения

Итак, ваше приложение работает. Поздравляю! Теперь начинается самое интересное – поддержка этого чуда инженерной мысли в рабочем состоянии. Добро пожаловать в мир, где «It’s not a bug, it’s a feature» – не просто фраза, а образ жизни.

  • Обновление зависимостей: Регулярно проверяйте и обновляйте зависимости вашего приложения. Это как чистка зубов – делать не хочется, но если пренебречь, последствия могут быть болезненными.
pip list --outdated
pip install --upgrade package_name

Не забудьте обновить ваш requirements.txt:

pip freeze > requirements.txt
  • Обновление кода: Если вы используете Git (а вы должны, иначе как вы живете?), обновление кода – это просто:
git pull origin master

Но помните, что после этого может потребоваться перезапуск приложения. Потому что Python, как капризный кот, не любит, когда его беспокоят.

  • Мониторинг: Установите какую-нибудь систему мониторинга. Nagios, Zabbix, Prometheus – выбор огромен. Главное – не забывайте проверять алерты. А то однажды вы можете обнаружить, что ваше приложение не работает уже неделю, а вы и не заметили.
  • Резервное копирование: Регулярно делайте бэкапы. Потому что однажды вы можете обнаружить, что ваша база данных решила устроить себе выходной и удалила все данные.
pg_dump your_database > backup.sql
Логи: Регулярно проверяйте логи. Они могут рассказать вам много интересного о вашем приложении. Например, что оно втайне от вас майнит биткоины.
tail -f /var/log/your_app.log
  • Помните: поддержка приложения – это как воспитание ребенка. Вы никогда не знаете, что оно выкинет в следующий момент, но вы все равно его любите. И да, оно тоже иногда не дает вам спать по ночам.

Частые ошибки при развертывании и способы их решения

Ошибки при развертывании – это как старые друзья. Они всегда рядом, когда вам меньше всего этого хочется. Давайте познакомимся с некоторыми из них поближе, ведь, как говорится, врага нужно знать в лицо.

  1. «Ошибка 500 Internal Server Error» Проблема: Ваше приложение падает, а Nginx просто пожимает плечами. Решение: Проверьте логи приложения. Обычно они находятся где-то вроде /var/log/your_app.log. Если повезет, вы увидите стек-трейс, а не просто «Oops, something went wrong».
  2. «ModuleNotFoundError: No module named ‘your_favorite_module’» Проблема: Вы забыли установить зависимости. Или установили, но не в то виртуальное окружение. Решение: Проверьте, активировано ли правильное виртуальное окружение. Затем запустите pip install -r requirements.txt. И молитесь.
  3. «Permission denied» Проблема: Ваше приложение пытается писать в директорию, к которой у него нет доступа. Решение: Проверьте права доступа. chmod и chown – ваши лучшие друзья. Но будьте осторожны, chmod 777 – это не решение, это крик о помощи.
  4. «Ошибка связи с базой данных» Проблема: Ваше приложение не может подключиться к базе данных. Возможно, база данных решила, что ей нужен выходной. Решение: Проверьте, запущен ли сервер базы данных. Проверьте настройки подключения. Убедитесь, что вы не перепутали продакшен-базу с тестовой (да, такое бывает).
  5. «Сертификат SSL недействителен» Проблема: Ваш SSL-сертификат истек, и теперь все браузеры считают ваш сайт небезопасным. Решение: Обновите сертификат. Let’s Encrypt и Certbot – ваши друзья. И поставьте напоминание на телефон за месяц до следующего истечения срока.
  6. «Недостаточно места на диске» Проблема: Ваши логи решили захватить весь диск. Решение: Почистите логи, настройте ротацию логов. И, может быть, подумайте об увеличении дискового пространства. Или о том, чтобы писать менее многословные логи.
  7. «Приложение работает, но ооооочень медленно» Проблема: Ваше приложение решило, что скорость – это не главное в жизни. Решение: Проверьте нагрузку на сервер, оптимизируйте запросы к базе данных, настройте кэширование. И, возможно, перестаньте использовать рекурсию там, где можно обойтись циклом.

Помните: каждая ошибка – это возможность научиться чему-то новому. Или возможность выругаться новыми словами. Или и то, и другое. В любом случае, держите под рукой кофе, поисковик и номер телефона более опытного коллеги. И не забывайте: даже если кажется, что все потеряно, всегда есть ctrl+c, ctrl+v и Stack Overflow.

Заключение и рекомендации по выбору инструментов

Итак, мы прошли весь путь от выбора сервера до борьбы с ошибками, и если вы дочитали до этого места, то поздравляю – вы официально можете называть себя «человеком, который знает, как сломать Python-приложение на продакшене». Шучу. Ну, или нет.

Давайте подведем итоги нашего путешествия:

  1. Выбор сервера – это как выбор спутника жизни. Выбирайте с умом, потому что развод может быть болезненным (и дорогим).
  2. Установка Python и зависимостей – это как сборка мебели из IKEA. Вроде все просто, но в конце всегда остаются лишние детали.
  3. Настройка веб-сервера – это искусство. Неважно, выберете вы Nginx или Apache, главное – не забудьте про HTTPS. Потому что безопасность – это сексуально.
  4. Запуск и тестирование – это момент истины. Если все работает с первого раза, проверьте, не спите ли вы.
  5. Управление обновлениями – это как уход за садом. Регулярная прополка (обновление зависимостей) и поливка (патчи безопасности) творят чудеса.

Теперь о выборе инструментов. Мой главный совет – выбирайте то, с чем вам комфортно работать. Но если вам нужны конкретные рекомендации:

  • Для управления зависимостями: Poetry. Потому что requirements.txt – это прошлый век.
  • Для развертывания: Docker. Потому что «работает на моей машине» больше не оправдание.
  • Для CI/CD: GitHub Actions или GitLab CI. Потому что автоматизация – это ключ к спокойному сну.
  • Для мониторинга: Prometheus + Grafana. Потому что красивые графики заставляют вас выглядеть умнее на совещаниях.

Помните: в мире разработки нет единственно правильного пути. Есть путь, который работает для вас и вашей команды. И если этот путь включает в себя ежедневные жертвоприношения богам CI/CD – кто мы такие, чтобы осуждать?

В конце концов, развертывание Python-приложений – это не просто набор технических шагов. Это приключение, полное взлетов, падений и моментов, когда вы задаетесь вопросом, почему вы не стали, например, пекарем. Но когда все заработает, когда вы увидите свое творение живым в интернете – это чувство непередаваемо. Почти как первый коммит, который прошел все тесты.

Удачи вам в ваших разработках и развертываниях. И помните: в крайнем случае, всегда есть кнопка «Откатить до предыдущей версии».

И если после прочтения этой статьи вы чувствуете, что хотите углубить свои знания Python или освоить новые направления в разработке – от базового программирования до продвинутого бэкенда – загляните в подборку курсов по Python. Там вы найдете образовательные программы различного уровня сложности, которые помогут вам стать более уверенным разработчиком и избежать многих подводных камней, о которых мы говорили выше.

Пройдите тест, узнайте какой профессии подходите

Работать самостоятельно и не зависеть от других

Работать в команде и рассчитывать на помощь коллег

Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы запустить HTTP-сервер на Python в Windows, выполните следующие команды в командной строке. Сначала перейдите в каталог, который вы хотите использовать в качестве сервера:

  • Python 2.x:

  • Python 3.x:

Сервер по умолчанию будет работать на порту 8000. Доступ к содержимому осуществляется через http://localhost:8000. Чтобы выбрать другой порт, добавьте его номер в конец команды.

Кинга Идем в IT: пошаговый план для смены профессии

Убедитесь, что вы используете нужную версию Python

Перед запуском убедитесь, что версия Python, которую вы используете, соответствует вашей команде. В противном случае, если вы попытаетесь использовать команду для Python 2 в Python 3 или наоборот, возникнет ошибка «No module named SimpleHTTPServer».

Будьте осторожны с модулями

Если вы столкнулись с ошибкой «No module named SimpleHTTPServer» в Python 3.x, помните, что вы попытались использовать модуль, который в этой версии языка имеет другое имя. Внимательно проверяйте соответствие версий и названия модулей Python, чтобы избежать ошибок.

Визуализация

Можно представить настройку SimpleHTTPServer в Python так, как если бы вы организовали flashmob в вашем любимом торговом центре:

Тогда алгоритм будет выглядеть следующим образом:

Покажите всему миру свой контент, как если бы это было захватывающее танцевальное шоу!

Настройка «сцены»

  • Расширение площади: Используйте python -m http.server 8080, чтобы увеличить «сцену», т.е. изменить порт на 8080.
  • Закрытый показ: Ограничьте доступ к серверу, привязав его к определённому интерфейсу, например, 127.0.0.1, как для VIP-гостей.

«Танцуйте» где угодно

Желаете сменить место проведения? Достаточно перейти в нужную директорию или использовать параметр --directory (начиная с Python 3.7), чтобы указать новое место для сервера.

Обеспечьте безопасность ваших «флешмобов»

Несмотря на то что SimpleHTTPServer не ассоциируется с безопасностью, вы всё же можете добавить базовую аутентификацию или SSL-шифрование для защиты вашего сервера.

Полезные материалы

  1. http.server — HTTP servers — Python 3.12.2 documentation – официальная документация по SimpleHTTPServer.
  2. Python: создаем простой HTTP-сервер (руководство) – Afternerd – пошаговое руководство по созданию HTTP-сервера с помощью Python.
  3. Какой аналог «python -m SimpleHTTPServer» в Python 3 – Stack Overflow – обсуждение на Stack Overflow с решениями для использования SimpleHTTPServer в Python 3.
  4. Как запустить HTTP-сервер одной строкой кода Python – Real Python – примеры и разъяснения работы веб-серверов на Python.
  5. Использование Python SimpleHTTPServer – PythonForBeginners.com – руководство с примерами использования Python SimpleHTTPServer для профессионалов.

Python is an excellent general purpose language that can be used for batch processing and other tasks on your server.

To install Python on Windows Server operating system, you just need to run the installer and use the simplest configuration.

Steps to Install Python on Windows Server Operating System

  1. Download the installer (full as opposed to the web sintaller) and save it to your temp folder.

    Python installer in Windows Temp folder

  2. Right-click on the file and select Run as administrator.

    Run Python installer as administrator

  3. You’ll see a User Account Control popup window with a question, “Do you want to allow the following program to make changes to this computer?” Just click on Yes.

  4. Check the Add Python 3.7 to PATH checkbox at the bottom of the window (or whatever the latest version you’re installing).

    Install Python setup screen

  5. If you don’t care where the program is installed, you can just clik on the Install Now, there’s nothing wrong with the setup and Python will run and this is generally fine for desktop installation.

    For server installation, you should be more mindful with the program location better location rather than the default installation under a specific user folder who ran the installer. So it’s better to choose Customize installation.

  6. In Optional Features screen, make sure you at least check the following: pip, py launcher, and for all users. Click Next.

    Python customize installation optional features

  7. On the next screen, Advanced Options, make sure you check Install for all users which then will change the value of Customize install location, just accept the default installation in C:\Program Files unless you have a reason to install it somewhere else. Click Install.

    Python customize installation advanced options for all users

  8. Once you see Setup was successful just click the Close button.

  9. Make sure that C:\Program Files\Python37 and C:\Program Files\Python37\Scripts are in the Path of your System variables.

    If you’re able to click on Edit button, you can see all the path entries in each line which is easier to read and edit. In this case, the button is greyed out due to the group policy.

As a final check, you can open Programs and Features and check if Python and Python Launcher are shown.

Programs and Features

That’s all there is to have your server running Python scripts.

If you work mostly with Microsoft stack and need to connect to a SQL Server database using Python, then check this post about Python SQL Server Driver.

Further Reading

How to Activate Built-in Web Server
How to Use Python to Connect to SQL Server

Download

Python Download

Skip to content



Navigation Menu

Provide feedback

Saved searches

Use saved searches to filter your results more quickly

Sign up

Appearance settings

Repository files navigation

Python https server

Just a shortcut for common tests, openssl binary already included (only for windows x64 & python ready).

  1. Fix python path if nessesary in run_server.bat
  2. generate_certificate.bat
  3. run_server.bat

Server will start with folder already above current.
To test, open in browser https://localhost:8000/

Время на прочтение4 мин

Количество просмотров29K

image

В данной статье будет представлена подробная инструкция по установке и настройке программ Apache, Python и PostgreSQL для обеспечения работы Django проекта в ОС MS Windows. Django уже включает в себя упрощенный сервер разработки для локального тестирования кода, но для задач, связанных с продакшен, требуется более безопасный и мощный веб-сервер. Мы настроим mod_wsgi для взаимодействия с нашим проектом и настроим Apache в качестве шлюза в внешний мир.

Стоит отметить, что установка и настройка будет производиться в ОС MS Windows 10 с 32 разрядностью. Также 32 битная реакция будет универсальна и будет работать на 64 битной архитектуре. Если вам нужна 64 битная установка повторите те же действия для 64 битных дистрибутивов программ, последовательность действий будет идентична.

В качестве Django проекта будем использовать программу Severcart. Она предназначена для управления перемещениями картриджей, учёта печатающего оборудования и договоров поставки и обслуживания. Установка всех программ и модулей будет производиться в каталог C:\severcart. Местоположение не принципиально.

Python

Первым шагом является загрузка и установка Python с веб-сайта Python. Выбираем Windows в качестве операционной системы и 32-битную версию. На момент написания статьи текущей версией является 3.9.0rc2.

Загрузив файл установки, щелкните правой кнопкой мыши файл установки и выберите «Запуск от имени администратора». Вы должны увидеть экран ниже

Устанавливаем галочки напротив чекбоксов «Install launcher for add user (recomended)» и «Add Python 3.9 to PATH» и нажимаем на «Customize installation».

Устанавливаем галочки на против «pip», «py launcher», «for all users (requires elevation)» и нажимаем «Next».

Выбираем все поля ввода как на картинке выше и нажимаем на «Install».

Чтобы убедиться, что установка прошла успешно, откройте cmd и введите python. Если установка прошла успешно, вы должны увидеть приглашение, подобный приведенному ниже

Устанавливаем mod_wsgi

Скачиваем скомпилированный пакет с mod_wsgi c сайта
www.lfd.uci.edu/~gohlke/pythonlibs. Модуль выполняет функции посредника межу сервером Apache и Django проектом. Самый свежий пакет будет с именем mod_wsgi-4.7.1-cp39-cp39-win32.whl. Обратите внимание, что пакет скомпилирован для 32 битной Windows CPython версии 3.9. Также стоит отметить, что очевидная установка модуля pip install mod_wsgi скорее всего завершится ошибкой, т.к. в процессе установки потребуется компилятор Visual Studio C++. Ставить компилятор целиком ради одного Python пакета в Windows считаем нецелесообразным.

Устанавливаем модуль с помощью стандартного пакетного менеджера pip в cmd или powershell:

pip install -U mod_wsgi-4.7.1-cp39-cp39-win32.whl

Apache

Скачиваем дистрибутив с сайта https://www.apachelounge.com/download/.
Самая свежая версия Web-сервера является Apache 2.4.46 win32 VS16. Также для работы программы понадобиться заранее установленный пакет «Visual C++ Redistributable for Visual Studio 2019 x86».

Распаковываем дистрибутив Apache в каталог C:\severcart\Apache24, далее меняем строку с номером 37 на свою

Define SRVROOT "C:/severcart/Apache24"

Проверяем работу Apache, выполнив в командной строке

C:/severcart/Apache24/bin> httpd.exe

В результате должны увидеть в браузере по адресу 127.0.0.1 строку «It works!».

Устанавливаем службу Apache, для этого выполним в командной строке от имени Администратора инструкцию:

C:\severcart\Apache24\bin>httpd.exe -k install -n "Apache24"

Далее подключим модуль mod_wsgi к Apache. Для этого выполним в командной строке инструкцию

C:\Windows\system32>mod_wsgi-express module-config

В результате в стандартный вывод будет распечатаны строки:

LoadFile "c:/severcart/python/python39.dll"
LoadModule wsgi_module "c:/severcart/python/lib/site-packages/mod_wsgi/server/mod_wsgi.cp39-win32.pyd"
WSGIPythonHome "c:/severcart/python"

Создаем файл C:\severcart\Apache24\conf\extra\httpd-wsgi.conf и копипастим туда распечатанные строки выше.

Подключаем новую конфигурацию к основному файлу httpd.conf
Include conf/extra/httpd-wsgi.conf

Сохраняем изменения, перезагружаем службы Apache

Net stop Apache24
Net start Apache24

PostgreSQL

Устанавливаем PostgreSQL взятый с сайта https://postgrespro.ru/windows. Текущая версия программного продукта – 12. Преимущества Российского дистрибутива от канонического представлены на том же сайте.

Действия по установке представлены выше и комментариях не нуждаются. Установка крайне проста.

Создаем БД в postgres, где потом будут храниться структуры данных Django проекта

C:\severcart\postgresql\bin>psql -h 127.0.0.1 -U postgres -W

CREATE DATABASE severcart WITH ENCODING='UTF8' OWNER=postgres CONNECTION LIMIT=-1 template=template0;

БД создана. Теперь разворачиваем Django проект.

Устанавливаем web приложение

Для этого скачиваем zip архив с сайта https://www.severcart.ru/downloads/ и распаковываем в каталог C:\severcart\app\

Вносим изменения в главный конфигурационный файл C:\severcart\app\conf\settings_prod.py для указания реквизитов подключения к БД

Python словарь DATABASES содержит в себе реквизиты подключения к БД. Подробности по настройке читайте здесь https://docs.djangoproject.com/en/3.1/ref/databases/#connecting-to-the-database

Устанавливаем Python пакеты значимостей для работы приложений внутри Django проекта

C:\severcart\app\tkinstaller>python install.py

В процессе работы скрипта будет произведена инициализация БД таблицами, констрейтами, индексами и прочим, а будет предложено создать пользователя, от имени которого будет производиться работа в программе.

Подключаем Django приложение к серверу Apache для этого дополняем конфигурационный файл
httpd-wsgi.conf следующим текстом

Alias /static "c:/severcart/app/static"

Alias /media "c:/severcart/app/media"

<Directory "c:/severcart/app/static">
    # for Apache 2.4
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

<Directory "c:/severcart/app/media">
    # for Apache 2.4
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>


WSGIScriptAlias / "c:/severcart/app/conf/wsgi_prod.py"
WSGIPythonPath "c:/severcart/python/"

<Directory "c:/severcart/app/conf/">
<Files wsgi_prod.py>
    Require all granted
</Files>   
</Directory>

Перезагружаем службу Apache и проверяем работу приложения

На этом все. Спасибо что дочитали.

В следующей статье будем создавать установочный самораспаковывающийся архив в InnoSetup для быстрого развертывания Django проекта на компьютере заказчика. Для тех кто хочет повторить все действия на Яндекс.Диск загружены все используемые дистрибутивы.

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Как отключить безопасность windows powershell
  • Закругленные края windows forms
  • Как убрать затухание экрана на windows 11
  • Программа очистки дискового пространства windows 10 что это
  • Check point mobile for windows