Запуск Python в качестве CGI-сценария

Существует несколько способов использования Python для создания веб-приложения или генерации веб-контента. В этом учебнике мы рассмотрим самую простую и базовую форму просмотра вывода сценария Python в браузере.

В некоторых ситуациях хорошим вариантом может быть запуск Python как CGI-сценария:

  • Сценарий небольшой и легкий.
  • Вы только начинаете изучать Python и хотите начать с простого решения.
  • Вам нужно выполнить только самый базовый уровень тестирования в браузере.
Совет

Существует несколько лучших и более надежных альтернатив запуску сценария Python в качестве CGI-сценария. Исходя из ваших потребностей, мы рекомендуем либо использовать mod_wsgi от Apache, либо установить веб-фреймворк Python, например CherryPy.

Требования

  • Облачный сервер с Apache, настроенный на разрешение CGI-сценариев.

Запуск Python в качестве CGI-сценария

После проверки того, что ваш сервер настроен на разрешение CGI-сценариев, вы можете загрузить сценарий Python в указанный каталог cgi-bin.

  • CentOS 7: Каталог CGI по умолчанию — var/www/cgi-bin/.
  • Ubuntu 16.04: Каталог CGI по умолчанию — /usr/lib/cgi-bin.

Дайте файлу исполняемые разрешения:

CentOS 7:

sudo chmod 755 /var/www/cgi-bin/example.cgi

Ubuntu 16.04:

sudo chmod 755 /usr/lib/cgi-bin/example.cgi

Теперь вы можете просмотреть скрипт в браузере, используя либо доменное имя, либо IP-адрес:

http://example.com/cgi-bin/example.cgi
http://192.168.0.1/cgi-bin/example.cgi

Расширения файлов

Чтобы запустить ваш Python-скрипт как CGI-скрипт, вы можете либо:

  • Назвать свой сценарий с расширением .cgi (example.cgi).
  • Настроить Apache на распознавание и разрешение расширения файла .py в качестве CGI-сценария.

Чтобы добавить конфигурацию .py в Apache, отредактируйте файл конфигурации Apache. В Ubuntu 16.04 он уже настроен по умолчанию. Вам не нужно будет вносить никаких изменений, чтобы запустить файл .py как CGI-скрипт.

В CentOS 7 откройте для редактирования файл httpd.conf:

sudo nano /etc/httpd/conf/httpd.conf

Найдите этот раздел:

#

#
Directory "/var/www/cgi-bin"
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Require all granted
/Directory

Добавьте .py в конфигурацию AddHandler:

#

#
Directory "/var/www/cgi-bin"
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl .py
    Require all granted
Directory

Сохраните и выйдите из файла. Затем перезапустите Apache, чтобы изменения вступили в силу:

sudo systemctl restart httpd

Устранение неполадок

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

#!/usr/bin/env python
print "Content-Type: text/html"
print
print ;h1 Hello world./h1'

Сохраните его как example.py и загрузите в каталог cgi-bin вашего сервера для тестирования. Затем просмотрите скрипт в браузере, используя либо доменное имя, либо IP-адрес:

http://example.com/cgi-bin/example.py
http://192.168.0.1/cgi-bin/example.py

Вы увидите «Hello world».

Ошибка 404: Это означает, что файл не может быть найден по указанному вами URL. Убедитесь, что скрипт находится в правильном каталоге.

  • CentOS 7: Каталог CGI по умолчанию — var/www/cgi-bin/.
  • Ubuntu 16.04: Каталог CGI по умолчанию — /usr/lib/cgi-bin.

Ошибка сервера 500: Обычно это указывает на неправильные права доступа к файлу. Убедитесь, что скрипт имеет права исполняемого файла (chmod 755):

jdoe@localhost:/etc/apache2# ll /usr/lib/cgi-bin/test.cgi
rwxr-xr-x 1 jdoe jdoe 85 Jul 22 16:53 /usr/lib/cgi-bin/test.cgi*

Правильные разрешения для файла — rwxr-xr-x. Если это не так, дайте файлу исполняемые права:

CentOS 7:

sudo chmod 755 /var/www/cgi-bin/example.cgi

Ubuntu 16.04:

sudo chmod 755 /usr/lib/cgi-bin/example.cgi
  • Веб-разработка

    Оцените статью
    cdelat.ru
    Добавить комментарий