Запуск скрипта Python на веб-сайте отображает исходный код

У меня есть очень простой скрипт Python, который я хочу запустить на своем веб-сайте. Вот мой сценарий:

#!/usr/bin/python
print("This line will be printed.")

Предположим, мой скрипт называется «hello.py», а мой веб-сайт — «mywebsite.com». Мой веб-хостинг предоставляется BlueHost, и я могу получить доступ к серверу через FileZilla. Я помещаю «hello.py» в каталог public_html на сервере (который также содержит html-файлы моего веб-сайта). Теперь я пытаюсь запустить скрипт Python через браузер, поэтому в своем веб-браузере я перехожу на «mywebsite.com/hello.py». В веб-браузере распечатывается исходный код hello.py. Есть ли способ вместо этого выполнить скрипт Python?


person Ross G    schedule 20.09.2020    source источник
comment
my.bluehost.com/hosting/help/search?search=python   -  person Chris    schedule 20.09.2020
comment
У меня на сервере установлен Python, и запуск скрипта через SSH работает успешно. Просто через браузер не работает.   -  person Ross G    schedule 20.09.2020
comment
Поместите его в каталог cgi-bin   -  person scenox    schedule 20.09.2020


Ответы (1)


Для успеха необходимо внести следующие изменения:

(1) Сценарий Python немного изменен на следующее:

#!/usr/bin/python
print("Content-Type: text/html")
print

print("This line will be printed.")

(2) Добавьте следующее в поле «IfModule mod_rewrite.c» вашего файла .htaccess:

<IfModule mod_rewrite.c>
Options +ExecCGI
AddHandler cgi-script .py
</IfModule>

Вот успешный результат вывода в моем браузере после поиска «mywebsite.com/hello.py»:

Успешное выполнение

Сравните это с результатом вывода, если инструкции (1) или (2) не выполняются — браузер просто выводит исходный код Python. Например, нарушение инструкции (2) дает:

Ошибка выполнения

Обратите внимание, что руководства BlueHost Python или CGI не предоставляют эту информацию. Мое решение было получено после серии догадок и проверок, и может существовать более правильный способ сделать это.

person Ross G    schedule 26.09.2020