Python noob здесь: Как использовать Python на веб-сервере с поддержкой Python? - PullRequest
0 голосов
/ 03 января 2011
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# enable debugging
import cgitb
cgitb.enable()

print "Content-Type: text/plain;charset=utf-8"
print

print "Hello World!"

Моя цель - заменить PHP на Python. Я довольно хорошо разбираюсь в PHP и могу использовать Python на своей локальной машине, но не могу заставить его работать на своем веб-сервере. Мой веб-хостинг говорит, что они поддерживают Python, поэтому я, должно быть, делаю что-то не так.

Теперь Python связан с CGI. Должны ли файлы python входить в мою папку cgi-bin? Я никогда не видел веб-файла с расширением py или расширением cgi, я не знаю, как все это работает, я действительно знаком только с PHP.

Я смотрел первый час урока Google "Learn Python", в котором говорится только о запуске Python локально.

:( Извините, я такой тупой, пожалуйста, исправьте меня.

Ответы [ 3 ]

7 голосов
/ 03 января 2011

Это вполне приемлемый CGI-скрипт. Если вы используете Apache, он должен войти в ваш cgi-bin, должен быть исполняемым (я могу ошибаться в этом), и вы должны назвать его с общим расширением для языка .py или с .cgi.

Если вы можете контролировать, какие файлы ваш веб-сервер будет рассматривать как CGI, вы можете поместить этот файл в любое место. Скорее всего, вы не можете это контролировать. Вы можете просмотреть более подробную информацию о CGI в Apache здесь: http://httpd.apache.org/docs/2.2/howto/cgi.html

Основная суть в том, что Apache не будет обрабатывать файл как файл CGI, если не выполнены два условия: cgi-script нужно будет активировать с помощью директив AddHandler или SetHandler, а для ExecCGI быть включенным в директиву Options. Обычно это недоступно для пользователя в среде общего хостинга.

РЕДАКТИРОВАТЬ: Чтобы уточнить, CGI это просто механизм для вас писать сценарии на любом произвольном языке, и ваш веб-сервер выполняет их и отправляет вывод из этого сценария своим клиентам. Это не рекомендуемый подход ни к чему, кроме простого сценария, потому что при каждом запросе сервер запускает новый экземпляр вашего интерпретатора. Для Python лучшим решением была бы WSGI совместимая среда, такая как Flask , Bottle или Django . Первые два - это микро-фреймворки, которые стараются держаться подальше от вас, в то время как Django - это фреймворк с полным стеком, который обеспечивает много клея.

2 голосов
/ 03 января 2011

Способ Python для создания веб-приложений имеет больше общего с чем-то вроде CodeIgniter или Cake PHP.

Начните с Django , просто попробуйте учебник. Наиболее распространенная жалоба на Django от упорных разработчиков PHP заключается в том, что Django не позволит вам смешивать код и HTML - и это хорошо.

Конечно, вы можете сделать простой старый CGI, но это трудный путь.

0 голосов
/ 04 января 2011

В зависимости от вашей хостинговой компании строка Python #! / Usr / bin / env может потребоваться читать по-другому. Некоторые включают номер версии в «python», а некоторые содержат python в другом каталоге. Вам нужно будет проверить с вашим провайдером.

Кроме того, вам нужно дать миру разрешение на выполнение (НЕ на запись) файла, поскольку вы ХОТИТЕ, чтобы люди выполняли сценарий.

Что происходит сейчас, если вы загружаете этот код с расширением .cgi или .py в папку cgi-bin, а затем переходите к нему в браузере?

Кроме того, если вы воспользуетесь Google "Python CGI", вы найдете множество учебных пособий. Для простых вещей без множества хитов cgi будет работать нормально, хотя, как уже говорили другие, есть другие механизмы, которые гораздо более эффективны, когда это необходимо.

Вы не можете смешивать python и html на одной и той же странице, но есть механизмы (см. Включение на стороне Python и на стороне сервера или SSI) для написания html-страницы с меткой, которая вызывает вашу программу на python и помещает ответ от python Программа там в результате отображается HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...