Как работать с Python файлами с Apache - PullRequest
0 голосов
/ 18 января 2020

Итак, я хочу заняться разработкой React Native и решил, что Python будет моим бэкэндом, но по какой-то причине я не могу правильно настроить Apache. Единственный способ успешно получить результат из запроса - включить путь к python.exe в начале документа следующим образом:

!C:\Users\Name\PycharmProjects\AppName\venv\Scripts\python.exe

Но проблема в том, что файл выполняется Python консоль, и если я хочу получить к ней доступ через мобильный телефон, я получаю эту ошибку:

Сервер обнаружил внутреннюю ошибку и не смог выполнить ваш запрос. Либо сервер перегружен, либо произошла ошибка в CGI-скрипте.

Итак, мой вопрос:

Есть ли способ настроить Apache для выполнения файл, без требования консоли py, поэтому запрос может обрабатываться устройствами, на которых не установлена ​​консоль Python?

1 Ответ

1 голос
/ 19 января 2020

если вы подключаетесь с мобильного устройства к http://192.168.1.3/HelloWorld.py на сервере с CGI, тогда код должен выполняться на сервере, а не на мобильном устройстве. Если CGI не работает, то сервер может попытаться отправить код в виде обычного файла, а затем мобильное устройство может запустить его локально, но это неправильно - сервер CGI должен запустить код на сервере.

При запуске я бы поместил код в подпапку cgi-bin, чтобы запустить его как http://192.168.1.3/cgi-bin/HelloWorld.py, поскольку большинство CGI серверов по умолчанию запускают код только в этой подпапке.


В сценарии Linux потребуется строчка

#!/usr/bin/env python

в первой строке, и он должен быть исполняемым

chmod a+x script.py

CGI имеет также некоторые правила, как генерировать данные, которые он отправит клиенту. При запуске может потребоваться дополнительная информация для протокола HTTP, а использование только печати («Hello World») может привести к получению неверных данных, и может возникнуть проблема с отправкой. Это должно быть в любом уроке для CGI скриптов. См. Модуль cgi


Для запуска кода Python Apache необходим модуль mod_cgi, mod_fcgi или mod_ python

mod_cgi и mod_fcgi могут запускать сценарии на разных языках: Python, Perl, Ruby, et c. и даже Bash, PHP или C / C++ / Java


Python3 имеет стандартный модуль http , который можно использовать также просто сервер

python3 -m http.server --cgi 

и он будет обслуживать все файлы в папке, в которой вы его запускаете. И он запускает файлы из подпапки cgi-bin/ - см. Do c: http

...