Существует несколько способов использования 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
- Веб-разработка