Раздел помощи SpaceWeb

Запуск скрипта Python

03 окт, 2023

Python — это один из наиболее популярных современных языков программирования. Он пригоден для решения разнообразных задач и предлагает те же возможности, что и другие языки программирования: динамичность, поддержку ООП и кросс-платформенность. 

Версии Python на хостинге Spaceweb

На данный момент на наших серверах виртуального хостинга установлено 4 версии Python.  Это Python 2.7, 3.3, 3.4, 3.8. Точные версии можно узнать командами:

$ python2.7 -V
Python 2.7.7
$ python3.3 -V
Python 3.3.5
$ python3.4 -V
Python 3.4.1
$ python3.8 -V
Python 3.8.5*

* Версия Python 3.8.5 работает на версии Apache 2.4 + PHP 8 opcache + mod_wsgi python3.8, должна быть включена в настройках сайта.

Запуск скрипта python через CGI

CGI (от англ. Common Gateway Interface — «общий интерфейс шлюза») — стандарт интерфейса, используемого для связи внешей программы с веб-сервером. Программу, которая работает по такому интерфейсу совместно с веб-сервером, принято называть шлюзом, хотя многие предпочитаю названия «скрипт»(сценарий) или «CGI-программа».

Для запуска скриптов python через CGI необходимо выполнить следующие действия:

  1. Добавить в файл .htaccess директиву:

AddHandler cgi-script .py

  1. Указать первой строкой в скрипте путь к используемому интерпретатору, так называемый Shebang:    

#!/usr/bin/python3.8

для использования Python 3.8, или другую версию.

  1. Указать расширение для файла *.py и выставить на файл права доступа 755.

  2. Если скрипт CGI разрабатывается с нуля, необходимо убедиться, что до вывода основного тела HTTP-ответа в скрипте указывается вывод служебного HTTP-заголовка Content-Type и перенос строки в формате LF:

print("Content-Type: text/html\n")

Запуск скрипта python через mod_wsgi

WSGI (англ. Web Server Gateway Interface) — стандарт взаимодействия между Python-программой, выполняющейся на стороне сервера, и самим веб-сервером, например, Apache.
Стандарт интерфейса (на английском): http://www.python.org/dev/peps/pep-0333/

По стандарту, WSGI-приложение должно удовлетворять следующим требованиям:

  • должно быть вызываемым (callable) объектом (обычно это функция или метод);
  • принимать два параметра:
    • словарь переменных окружения (environ);
    • обработчик запроса (start_response);
  • вызывать обработчик запроса с кодом HTTP-ответа и HTTP-заголовками;
  • возвращать итерируемый объект с телом ответа;

Пример простого wsgi-приложения:

def application(environ, start_response):
    status = '200 OK'
    output = b'Hello World!'
    response_headers = [('Content-type', 'text/plain'),
                                   ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    return [output]

   Если приложение будет использовать подключение к базе MySQL, то необходимо для неё сделать удаленный доступ для IP-адреса 127.0.0.1

Используемая версия python для mod_wsgi

На наших серверах mod_wsgi на Apache 2.2 + mod_passenger + mod_wsgi (Актуальная версия) использует версию python 2.7.5

На Apache 2.4 + PHP 8 opcache + mod_wsgi python3.8 использует версию python 3.8.5