Python with apache windows

Как настроить веб-сервер 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:

Отредактируйте самую верхнюю строку в соответствии с вашей установкой.

Установка связки Apache+MySQL+Python без фреймворка на сервер Ubuntu 14.04

Данное руководство покажет, как установить Python 3, MySQL и Apache2 без фреймворка. В результате вы сможете запускать базовую систему в производство.

Как правило, для работы с Python используется Django; этот фреймворк совместим со всеми версиями Python, поставляется с пользовательским сервером и даже позволяет установить базу данных в один клик.

Данное руководство будет пользоваться только менеджерами пакетов (apt-get и Pip).

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

Требования

Чтобы следовать руководству, понадобится:

  • Сервер Ubuntu 14.04;
  • Пользователь с правами sudo (подробнее – здесь).

1: Настройка стандартной версии Python

Сначала нужно настроить Python 3 как стандартную версию, которая будет запускаться командой python.

Проверьте текущую стандартную версию Python.

На свежем сервере Ubuntu 14.04 результат будет таким:

Теперь нужно изменить текущую стандартную версию Python 3. Для начала удалите бинарные файлы Python 2.7:

Читайте также:  Как включить отображение корзины windows 10

sudo rm /usr/bin/python

Затем создайте символьную ссылку на бинарные файлы Python 3.

sudo ln -s /usr/bin/python3 /usr/bin/python

Снова проверьте текущую версию 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

После строки добавьте следующий код:

Options +ExecCGI
DirectoryIndex index.py

AddHandler cgi-script .py

Убедитесь, что блок помещён в блок .

/etc/apache2/sites-enabled/000-default.conf

Options +ExecCGI
DirectoryIndex index.py

AddHandler cgi-script .py
.

Этот блок Directory позволяет настроить поведение Apache для этого каталога. Он сообщает Apache, что каталог /var/www/test содержит исполняемые файлы, задаёт index.py в качестве стандартного файла и затем определяет исполняемые файлы.

Также нужно разрешить исполняемые файлы в каталоге сайта. Для этого измените путь для DocumentRoot. Найдите строку, которая начинается с DocumentRoot /var/www/html, и измените её:

Теперь файл имеет такой вид:

/etc/apache2/sites-enabled/000-default.conf

Options +ExecCGI
DirectoryIndex index.py

AddHandler cgi-script .py
.
DocumentRoot /var/www/test
.

Сохраните и закройте файл. Чтобы изменения вступили в силу, перезапустите 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()])

Читайте также:  Как сделать свою панель задач windows

Сохраните и закройте файл.

Затем установите права на новый файл.

Примечание: Более подробную информацию о правах можно найти в руководстве «Основы привилегий 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, читайте это руководство.

Как настроить Apache для программирования на Python CGI?

Чтобы ваш сервер правильно запускал CGI-скрипты, вы должны настроить свой веб-сервер. Мы обсудим, как настроить ваш веб-сервер Apache для запуска CGI-скриптов.

Использование ScriptAlias

Вы можете установить каталог как директиву ScriptAlias (опции для настройки Apache). Таким образом, Apache понимает, что все файлы, находящиеся в этом каталоге, являются CGI-скриптами. Это может быть самый простой способ запуска CGI-скриптов на Apache. Типичная строка ScriptAlias выглядит следующим образом в файле httpd.conf вашего веб-сервера Apache.

Итак, ищите ScriptAlias в вашем файле httpd.conf и раскомментируйте строку (удалите предыдущий #), если вы хотите сохранить все ваши файлы CGI в каталоге по умолчанию, указанном Apache. Но это не всегда может удовлетворить ваши требования. Итак, мы рассмотрим некоторые другие варианты запуска Python как CGI.

Запуск CGI из определенного каталога, отличного от каталога по умолчанию.

Вы можете использовать следующее для подготовки определенного каталога для запуска файлов CGI.

Где «somedir» — это каталог ваших предпочтений.

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

Итак, вышесказанное говорит Apache запускать файлы с расширениями .cgi и .pl как CGI

Если вы хотите запускать файлы CGI из каталога пользователя, вы можете использовать следующее:

Выше сказано, что Apache запускает все файлы с расширением .cgi, представленные в каталоге пользователя как CGI.

Опять же, если вы хотите запустить все файлы, размещенные в каталоге пользователя, как CGI, то вы можете использовать следующее:

Если у вас нет доступа к файлу httpd.conf, вы можете использовать файл .htaccess для запуска сценариев CGI. Чтобы использовать файлы с определенными расширениями в качестве CGI, настройте свой файл .htaccess следующим образом:

Если вы хотите запустить все файлы, находящиеся в каталоге, как CGI, вы можете использовать следующее:

Поднимаем Django стек на MS Windows

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

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

Читайте также:  Infcache 1 как удалить windows 10

В качестве 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

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:

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 на свою

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

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

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

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

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

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

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

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

PostgreSQL

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

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

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

БД создана. Теперь разворачиваем 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 проекта

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

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

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

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

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

Оцените статью