Как настроить веб-сервер Apache на запуск Python в Windows
Скрипты Python можно запускать в окружении Apache аналогично запуску скриптов PHP. Для этого нужно сделать небольшую настройку.
Я устанавливал веб-сервер по этой инструкции, если вы устанавливали по другой инструкции, то отредактируйте пути под свои значения.
1. Установите Python
Если у вас ещё не установлен Python, то скачайте установщик здесь: https://www.python.org/downloads/windows/ (файл Windows x86-64 executable installer).
Я установил в предлагаемый путь, но также выбрал добавление папки с исполнимыми файлами Python в переменные окружения (возможно, это делать необязательно).

Забегая вперёд скажу — путь до папки с установленным Python нужно будет указывать в начале каждого Python cgi скрипта, поэтому или выберите более простую папку, куда вы устанавливаете Python, либо запомните имя путь до предложенной директории.
В конце программа установки предложила снять максимальное ограничение на длину пути — я согласился (возможно, это делать необязательно):

2. Настройка Apache на запуск Python CGI
Теперь откройте для редактирования файл httpd.conf, у меня он расположен по пути C:\Server\bin\Apache24\conf\httpd.conf.
Найдите там строку
и добавьте к ней ExecCGI. Должна получиться такая строка (ВНИМАНИЕ: набор опций у вас может быть другим):
Теперь найдите строку:
Раскомментируйте её, то есть удалите символ # в начале строки и добавьте к концу строки .py. Новая строка будет выглядеть примерно так:
3. Перезапустите Apache
4. Запустите тестовую страницу Python
В папке для ваших сайтов (у меня это C:\Server\data\htdocs\) создайте файл test.py и скопируйте в него:
Обратите внимание на самую верхнюю строку, то есть на C:\Users\Alex\AppData\Local\Programs\Python\Python37\python.exe — вам нужно заменить её на своё значение, указав путь до файла python.exe. Даже если вы выбрали предложенную по умолчанию папку, как минимум, вам нужно заменить имя пользователя Alex на имя своего пользователя.

ПРИМЕЧАНИЕ: обратите внимание, что путь до файла python.exe может различаться в зависимости от выбранной папки для установки, имени пользователя (если вы установили в C:\Users\), а также в зависимости от версии, например, это может быть папка Python39:
Отредактируйте самую верхнюю строку в соответствии с вашей установкой.
Мой путь в мире web-devel
Мои шаги в этом нелегком, непонятном мире web-devel
среда, 12 сентября 2012 г.
Как я прикрутил Python к Apache
Установка интерпретатора Python 2.6 происходит быстро и в два шага: загрузить дистрибутив и запустить инсталятор. Если вы еще не установили Apache, скачайте и его с офф-сайта. После установки Apache, можете сразу настроить VirtualHosts. Так удобнее будет. Мануалы по настройке vhosts в Apache находим в гугле. Но вернемся к нашим баранам 🙂
Приступаем к установке
Первым делом я решил зайти на офицаилный сайт Python и посмотреть, что там пишут про разработку под web. В документации есть толковая статья об этом http://docs.python.org/howto/webservers.html. Там описаны множество способов использования Python в web. Мне приглянулся способ, использующий mod_wsgi http://docs.python.org/howto/webservers.html#mod-wsgi. Тем более, что на сайте фреймворка Django, свободного фреймворка для веб-приложений на языке Python, рекомендуется использовать именно mod_wsgi. Ну что же как говорится,
Try it yourself
У mod_wsgi есть страничка на code.google.com. Перейдя на нее, можно найти как сам бинарник (Pthon 2.6) под Windows, так инструкцию как его прикрутить к Apache. Для установки нужно скопировать скачанный бинарник в директорию модулей Apache (C:\Program Files\Apache\modules\) и прописать в конфиге httpd.conf следующую строку:
После этого перезапускаем Apache.
Ну теперь осталось сконфигурировать для виртуального хоста и попробовать запустить первое веб-приложение, написанное на Python.
Установка связки Apache+MySQL+Python без фреймворка на сервер Ubuntu 14.04
Данное руководство покажет, как установить Python 3, MySQL и Apache2 без фреймворка. В результате вы сможете запускать базовую систему в производство.
Как правило, для работы с Python используется Django; этот фреймворк совместим со всеми версиями Python, поставляется с пользовательским сервером и даже позволяет установить базу данных в один клик.
Данное руководство будет пользоваться только менеджерами пакетов (apt-get и Pip).
Примечание: Менеджеры (или инсталляторы) пакетов – это небольшие программы, которые упрощают код установки и делают его более управляемым. Без них поддержка библиотек, модулей и остального кода была бы гораздо сложнее.
Требования
Чтобы следовать руководству, понадобится:
1: Настройка стандартной версии Python
Сначала нужно настроить Python 3 как стандартную версию, которая будет запускаться командой python.
Проверьте текущую стандартную версию Python.
На свежем сервере Ubuntu 14.04 результат будет таким:
Теперь нужно изменить текущую стандартную версию Python 3. Для начала удалите бинарные файлы Python 2.7:
sudo rm /usr/bin/python
Затем создайте символьную ссылку на бинарные файлы Python 3.
Снова проверьте текущую версию Python.
На экране должно появиться:
2: Установка Pip
Теперь можно приступать к установке Pip, менеджера пакетов Python. Сначала нужно обновить список пакетов системы, чтобы устаревшие пакеты не повлияли на установку.
sudo apt-get update
Pip позволяет управлять всеми пакетами Python 3. Для установки менеджера пакетов Pip запустите:
sudo apt-get install python3-pip
3: Установка MySQL
На данном этапе нужно становить и настроить СУБД MySQL.
Система MySQL проста в установке:
sudo apt-get install mysql-server
Установите надёжный пароль для root-пользователя MySQL. Сервер MySQLбудет запущен сразу после завершения установки. Запустите:
Этот скрипт задаст ряд вопросов. Укажите только что созданный root-пароль. Скрипт спросит, нужно ли изменить root-пароль, но поскольку он был создан только что, введите n. В ответ на остальные вопросы можно просто нажать Enter, чтобы принять стандартные настройки.
Python 3 требует настройки для подключения к MySQL. Существует множество вариантов настройки (например, MySQLclient), но для простоты в данном руководстве используется pymysql. Установите этот модуль при помощи Pip:
sudo pip3 install pymysql
4: Установка Apache 2
Теперь нужно установить Apache 2 и убедиться, что веб-сервер распознаёт файлы Python как исполняемые.
Установите Apache с помощью apt-get:
sudo apt-get install apache2
Как и MySQL, сервер Apache запустится разу после установки.
Примечание: После установки веб-сервера появляются открытые порты.
Теперь нужно поместить root-каталог сайта в надёжную точку системы. Стандартный каталог находится в /var/www/html. Следуя конвенции, создайте тестовый подкаталог по имени test в этом каталоге.
sudo mkdir /var/www/test
В завершение нужно настроить взаимодействие Python и Apache. Отключите многопоточные процессы.
sudo a2dismod mpm_event
После этого предоставьте Apache расширенные права на запуск скриптов.
sudo a2enmod mpm_prefork cgi
Затем измените настройки Apache, чтобы явно объявить файлы Python как исполняемые и разрешить запускать их. Откройте конфигурационный файл с помощью nano или любого другого текстового редактора.
sudo nano /etc/apache2/sites-enabled/000-default.conf
После строки добавьте следующий код:
Этот блок Directory позволяет настроить поведение Apache для этого каталога. Он сообщает Apache, что каталог /var/www/test содержит исполняемые файлы, задаёт index.py в качестве стандартного файла и затем определяет исполняемые файлы.
Также нужно разрешить исполняемые файлы в каталоге сайта. Для этого измените путь для DocumentRoot. Найдите строку, которая начинается с DocumentRoot /var/www/html, и измените её:
Теперь файл имеет такой вид:
Сохраните и закройте файл. Чтобы изменения вступили в силу, перезапустите Apache.
sudo service apache2 restart
Примечание: Apache 2 может вывести предупреждение о FQDN сервера. Его можно проигнорировать, так как директива ServerName еще не настроена.
Если в конце вывода находится строка [ OK ], Apache успешно перезапущен.
5: Тестирование настройки
Теперь нужно проверить, работает ли связка должным образом. Для этого создайте тестовую веб-страницу и БД.
Для начала создайте БД. Войдите в MySQL, введя root-пароль.
Теперь создайте тестовую БД (для примера назовём её example):
CREATE DATABASE example;
Добавьте таблицу для данных Python:
CREATE TABLE numbers (num INT, word VARCHAR(20));
Нажмите CTRL+D, чтобы выйти.
Затем создайте новый файл для простого приложения Python.
sudo nano /var/www/test/index.py
Скопируйте и внесите в него следующий код. В строке passwd укажите свой root-пароль MySQL.
#!/usr/bin/python
# Turn on debug mode.
import cgitb
cgitb.enable()
# Print necessary headers.
print(«Content-Type: text/html»)
print()
# Connect to the database.
import pymysql
conn = pymysql.connect(
db=’example’,
user=’root’,
passwd=’your_root_mysql_password’,
host=’localhost’)
c = conn.cursor()
# Insert some example data.
c.execute(«INSERT INTO numbers VALUES (1, ‘One!’)»)
c.execute(«INSERT INTO numbers VALUES (2, ‘Two!’)»)
c.execute(«INSERT INTO numbers VALUES (3, ‘Three!’)»)
conn.commit()
# Print the contents of the database.
c.execute(«SELECT * FROM numbers»)
print([(r[0], r[1]) for r in c.fetchall()])
Сохраните и закройте файл.
Затем установите права на новый файл.
Примечание: Более подробную информацию о правах можно найти в руководстве «Основы привилегий Linux».
sudo chmod 755 /var/www/test/index.py
При помощи браузера откройте http://ip_адрес_сервера. Появится такой вывод:
http://your_server_ip
[(1, ‘One!’), (2, ‘Two!’), (3, ‘Three!’)]
Заключение
Теперь сервер поддерживает Python 3 с надёжной базой данных на бэкэнде. Кроме того, управление пакетами стало гораздо проще, поскольку на сервере установлены удобные менеджеры пакетов.
Однако на данном этапе сервер несколько уязвим и требует дополнительной настройки. SSL-шифрование не является обязательным компонентом для работы сервера, однако это может значительно повысить уровень безопасности. Чтобы узнать, как получить и установить SSL-сертификат на веб-сервер Apache, читайте это руководство.
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как установить Python и PIP на Windows 10. Настройка Python в качестве модуля веб-сервера
Язык Python является в настоящее время очень популярным и многие инструменты для сбора информации, сканирования, тестирования на проникновение, оценки безопасности написаны на Python. Все эти инструменты без проблем работают в Linux. Но на самом деле, подавляющее большинство инструментов может работать и в Windows — достаточно просто выполнить несложную установку Python.
Python — это скриптовый (интерпретируемый) язык, то есть программы перед запуском не нужно предварительно компилировать. В этом смысле Python похож на PHP.
В настоящее время существует две главных версии Python:
Они существенно различаются между собой, в том числе и синтаксисом, то есть программа, написанная на одной версии, может не работать в интерпретаторе другой версии. Тем не менее сейчас уже обозначен срок завершения поддержки Python 2.x и эту версию можно считать устаревшей. Поэтому я предлагаю установить только Python 3. Хотя если вы не согласны, то пишите в комментариях и я дополню инструкцию установкой второй версии. Хоть мы не получим старую версию, зато я дополнительно покажу, как установить PIP — систему управления пакетами Python, — а также как подключить Python в качестве модуля веб-сервера — то есть он сможет выполнять такие же функции, что и PHP.
Как установить Python в Windows
Для Python 3.x также много активно поддерживаемых веток:
Последней стабильной версией на момент написания является Python 3.8.x.
Помните, что Python не будет работать на Windows XP или более ранних.
Кстати, ведь Python есть и в магазине приложений Windows,

где у него одна звезда (из пяти) и один отзыв (что ничего не работает):

Поэтому мы выполним установку с помощью официального установщика — это совсем просто.
Для скачивания установочного файла, перейдите на страницу загрузки установочных файлов для Windows: https://www.python.org/downloads/windows/

Выберите последний выпуск Python 3, на скриншоте это Python 3.8.0.
Пролистните страницу вниз и найдите «Windows x86-64 executable installer»:

Запустите скаченный файл:

Во-первых, поставьте галочку «Add Python 3.8 to PATH». Это нужно для того, что когда вы будете запускать скрипт на Python, вам не нужно будет указывать полный путь до интерпретатора.
Во-вторых, я рекомендую изменить папку, куда будет выполнена установка. Для этого кликните «Customize installation».
В этом окне ничего не меняем, главное убедитесь, что стоит галочка напротив pip:

В этом окне убедитесь, что стоит галочка «Add Python to environment variables» и поменяйте папку установки на «C:\Python\Python38»:

Нажмите кнопку «Install»:
И… всё готово! Согласитесь, это было реально просто.
У меня в Windows уже включена поддержка путей файлов длиной более 260 символов, но если у вас ещё это не сделано, то установщик в конце предложит это — чтобы это сделать, нажмите «Disable path length limit». Эта настройки ни на что плохо не влияет. Но нужно помнить, что старые программы по-прежнему могут быть неспособны работать с файлами, пути которых имеют более 260 символов.

Смотрите подробности в статьях:
Для проверки, откройте командную строку: нажмите Win+x и выберите «Windows PowerShell»:

Откроется PowerShell. Если вам привычнее обычная командная строка Windows (CMD), то нажмите Win+r и введите

В любом из открывшихся окон введите:

Должна появится версия Python, например:
Как запускать программы Python в Windows
Поскольку многие скрипты Python представляют собой утилиты с интерфейсом командной строки, то запускать их нужно в командной строке, иначе при двойном клике программа будет быстро завершать работу и вы ничего не увидите кроме мелькнувшего окна.
Для запуска откройте командную строку и запустите команду вида:
Пример простой программы hello_world.py:

Как начать изучать Python
Как установить PIP в Windows
PIP — это менеджер пакетов, с помощью которого можно искать, устанавливать, обновлять и удалять пакеты Python. В качестве пакетов могут быть как библиотеки, которые являются зависимостями для других программ, так и полноценные программы. Причём PIP правильно обрабатывает зависимости — если для работы программы требуется другие пакеты Python, то PIP их также установит.
В Linux некоторые пакеты Python упакованы в качестве пакетов дистрибутива и распространяются через стандартные репозитории — но таких пакетов меньше, чем доступно в pip. Поэтому в Linux программа pip также используется. Что касается Windows, то здесь pip является самым удобным способом установить нужный пакет.
При установке среды Python описанным выше способом, менеджер пакетов pip также должен установиться. Вы можете проверить это:

Обновите важные компоненты:
Установка Средства сборки C++
Это опциональный шаг при установке pip — но если вы его пропустите, при попытке установить некоторые пакеты вы будете сталкиваться с ошибками.
На самом деле, при установке пакетов с помощью pip иногда выполняется в том числе и компиляция, чтобы это происходило без проблем, необходимо ещё и установить «Средства сборки C++». Для их установки скачайте и запустите файл vs_buildtools.exe. Во вкладке «Рабочие нагрузки» поставьте галочку «Средства сборки C++» и нажмите кнопку «Установить»:

Как пользоваться PIP в Windows
Для установки выполните команду вида:
В качестве примера попробуем установить программу hashID — это инструмент, написанный на Python 3, который поддерживает идентификацию более 220 уникальных типов хешей используя регулярные выражения.

Пример запуска hashID в Windows после установки:

Подключение модуля Python к веб-серверу Apache в Windows
Python может работать как модуль Apache, в этом случае скрипты Python будут выполнятся как, например, выполняются PHP скрипты. Причём оба интерпретатора могут работать одновременно.
Подразумевается, что Python у вас установлен по вышеприведённой инструкции, а веб-сервер установлен по инструкции «Установка веб-сервера (Apache 2.4, MySQL 8.0, PHP 7, phpMyAdmin) на Windows 10».
Настройка Apache на запуск Python CGI
Откройте для редактирования конфигурационный файл Apache httpd.conf, у меня он расположен по пути C:\Server\bin\Apache24\conf\httpd.conf.
Найдите там строку
и добавьте к ней ExecCGI. Должна получиться такая строка (ВНИМАНИЕ: набор опций у вас может быть другим):
Теперь найдите строку:
Раскомментируйте её, то есть удалите символ # в начале строки и добавьте к концу строки .py. Новая строка будет выглядеть примерно так:
Создайте тестовую страницу Python
В папке для ваших сайтов (у меня это C:\Server\data\htdocs\) создайте файл test.py и скопируйте в него:

Обратите внимание на самую верхнюю строку, то есть на C:\Python\Python38\python.exe — вам нужно заменить её на своё значение, указав путь до файла python.exe. Если у вас версия 3.9, то этой папкой может быть C:\Python\Python39\python.exe, то есть название папки может различаться в зависимости от установленной версии и путь до папки также может различаться в зависимости от того, какой вы выбрали при установке.
Должна будет появиться надпись
Как показано на скриншоте ниже:

Редакторы исходного кода Python
Если вы устанавливаете Python не только для запуска программ, но и для изучения языка программирования Python, то вам понадобятся редакторы исходного кода. Я могу порекомендовать парочку абсолютно бесплатных:
Решение ошибки error Microsoft Visual C++ 14.0 is required
При использовании менеджера пакетов pip на Windows вы можете столкнуться с ошибкой:

Начиная с 2017 самая новая версия Visual Studio может заменить любую требуемую версию Build Tools (инструментов сборки) C++. Для установки последней версии, скачайте и запустите файл vs_buildtools.exe. Во вкладке «Рабочие нагрузки» поставьте галочку «Средства сборки C++» и нажмите кнопку «Установить»:

Дополнительно выполните обновление setuptools:
Ошибки при компиляции в Python
Иногда при установке пакетов с помощью pip вы будете сталкиваться с ошибками вроде такой:
В ней сказано, что компиляция завершилась ошибкой из-за того, что не найден файл cairo.h.
В этой ошибке сказано, что компиляция завершилась ошибкой из-за того, что не найден файл netinet/ip.h.
Точно такие же ошибки из-за отсутствия файлов с расширением .h могут возникать и в Linux. Файлы с расширением .h являются так называемыми заголовками — то есть файлами исходного кода для импорта в другие приложения. В каждом случае придётся индивидуально выяснять, к какому пакету относится отсутствующий файл и устанавливать этот пакет.
Зачем использовать mod_python
mod_python включает интерпретатор Python в сервер Apache. Это сокращает время инициализации и расщепления (forking) CGI-скриптов. Этот процесс не может запускаться под разными пользователями. Он всегда запускается под основным пользователем и группой Apache. Убедитесь, что файлы вашей wiki доступны серверу Apache на чтение и запись.
» height=»16″ src=»https://wiki.gnome.org/gnome/gnome-responsive/img/dialog-question-symbolic.png» title=» » width=»16″/> Базовая конфигурация пригодна для mod_python 3.1.3 и выше. Если вы используете более старую версию, смотрите раздел «Старые версии mod_python»
Базовая настройка
Установка mod_python
Большинству людей достаточно просто добавить пакет mod_python в установку своей операционной системы. Если вы собираете его из исходников, то проконсультируйтесь с документацией по mod_python.
При установке mod_python нужно добавить несколько строк в конфигурационный файл Apache или в его собственный конфигурационный файл (например, в Red Hat или Fedora linux конфигурация mod_python находится в файле /etc/httpd/conf.d/python.conf).
Убедитесь, что в вашем httpd.conf есть эта строка, иначе mod_python работать не будет:
После этого перезапустите Apache и убедитесь, что он стартовал успешно и что error log содержит строку, подобную этой:
Настройка экземпляра wiki
Сконфигурируйте httpd.conf как cgi (для начала):
Перезапустите Apache и проверьте работу вашей wiki.
Редактирование `wikiconfig.py`
Если вы не хотите использовать абсолютные пути, вы можете воспользоваться Python’овским модулем os для создания относительных путей: <<
Убедитесь, что wiki работает после этих изменений.

Изменение конфигурационного файла Apache `httpd.conf`
После того, как ваша wiki запустилась как cgi-скрипт, преобразуйте её для запуска с mod_python.
Если вы запустили вашу wiki как cgi, как мы советовали ранее, удалите или закомментируйте директиву ScriptAlias:
Добавьте директиву Location:
Если у вас много экземпляров MoinMoin, то добавьте по одной директиве location для каждого из них (изменяя пути соответственно) и добавьте строку с директивой PythonInterpreter mywiki в каждый раздел Location. Эта директива создаст разные субинтерпретаторы с полностью раздельными пространствами имён, которые будут использоваться для каждой из wiki (подробности см. здесь).
Если вы устанавливали MoinMoin не в каталог по умолчанию, вам понадобится добавить путь к MoinMoin к системным путям:
Решение проблем с некорневыми wiki

На некоторых установках mod_python передаёт MoinMoin неверные script_name и path_info. Это обычно случается, когда используется директива Location Apache, с wiki в произвольном пути:
Это не будет работать, поскольку не ясно, что является именем скрипта, поскольку настройка location не является реальным скриптом.
Чтобы решить эту проблему, используйте директиву PythonOption:

Настройка корневой wiki
Вам нужно установить экземпляр вашей wiki как описано выше, и также скопировать moinmodpy.py из каталога установки Moin в каталог экземпляра wiki ( /var/www/moin/mywiki в этих примерах).
должна оказаться в первой части файла настроек httpd.conf.
Настройка wiki и виртуального хоста должна выглядеть примерно так:
Перезапустите Apache и FrontPage mywiki должна теперь появиться на http://wiki.example.com/.
Другие способы работы с wiki корневого уровня под Apache рассмотрены в главе с соответствующим названием HelpOnConfiguration/ApacheVoodoo.
Старые версии mod_python
Версии 2.7.10, 3.0.4 и 3.1.2b mod_python имели ошибку apache.resolve_object. О ней было доложено разработчикам the mod_python и в версии 3.1.3 она была исправлена. Наилучшим решением будет обновление до текущей версии. Однако, если вы не можете этого сделать, есть два возможных решения:
Использовать скрипт-обёртку (wrapper script)
MoinMoin идёт со скриптом-обёрткой moinmodpy.py, и это может быть использовано путём изменения директив PythonPath и PythonHandler как показано в файле moinmodpy.htaccess. В MoinMoin 1.2 обёртка называлась moin_modpy.py.
Исправление mod_python
Версии 2.7.10, 3.0.4 и 3.1.2b mod_python имеют небольную ошибку resolver. Метод resolve_object в mod_python/apache.py проверяет неверный объект и это приводит к отказу RequestModPy.run.
Чтобы исправить это вам нужно изменить метод resolve_object (в районе строки 551 для mod_python 3.1.2b) с
Устранение проблем
Доступ к странице выдаёт ошибку Apache::
