Вопрос: Настройка FastCGI для Python


У меня nginx работает на виртуальной машине, и я хочу запустить сайт Trac. Мне нужно запустить python FastCGI-сервер, но я не могу сказать, что  сервер для использования. Я нашел следующее:

  • Lighttpd spawn-fcgi Но это, похоже, требует, чтобы вы скомпилировали lighttpd, чтобы получить сервер fcgi, что странно.
  • fcgi.py Но этот, кажется, устарел. По крайней мере, это плохо документировано.
  • flup Это связано с зависимостями от ubuntu (python-cheetah {a} python-mysqldb {a} python-webpy {a}), которые кажутся ненужными. Также плохо документировано.

Есть ли недавние руководства по настройке этого? Страница настроек FastCGI от Trac кажется, пропустил несколько шагов.


6
2018-04-05 01:02


Источник




Ответы:


trac должен быть теперь совместимым с WSGI, поэтому вы можете использовать любой поддерживаемый метод для запуска сайта. Если это сайт с низким трафиком, вы всегда можете использовать CGI и, в случае необходимости, перейти к чему-то еще позже. Для других методов используйте mod_wsgi или установить flup для FCGI (даже если он установил дополнительные зависимости).

Использовать flup, вам необходимо импортировать соответствующий WSGI-сервер, а затем запустить его, т. е.

from flup.server.fcgi_fork import WSGIServer
def main_app(...):
  ...

WSGIServer(main_app).run()

Если вы хотите запустить его как внешний сервер (т. Е. Не запущенный веб-сервером), замените это:

WSGIServer(main_app,bindAddress=('1.2.3.4',9999)).run()

3
2018-04-06 10:08



См. Выше относительно mod_wsgi (unmaintained, webserver работает с несколькими разными сценариями). Я не могу найти документацию о том, как настроить flup, есть ли у вас какие-либо руководства. Насколько я могу судить, Nginx не просто запускает CGI, ему нужен (быстрый) CGI-сервер для запуска скриптов. - Rob
Добавлен ответ для форматирования. - Dan Andreatta
Роб. Я думаю, вы найдете от большинства людей предложение использовать Apache / mod_wsgi больше, чем nginx / mod_wsgi. Apache / mod_wsgi определенно не «не поддерживается», и у него много документов. - Graham Dumpleton


Ну, человек, flup используется самим Django. Его удивительный метод для запуска приложений python fastcgi, если у вас нет mod_wsgi или чего-то подобного.

Код для запуска flup:

from flup.server.fcgi import WSGIServer

def app(environ, start_response):
  start_respone('200 OK', [('Content-Type', 'text/plain')])
  yield "Hello World"

WSGIServer(app).run()

1
2017-08-10 13:23



И да, я не думаю, что у flup есть зависимости, я установил его недавно без каких-либо. Я на Arch Linux. - Nilesh


Почему именно FastCGI? В Python существует стандартный интерфейс для написания приложений веб-сервера WSGI. Различные серверы предоставляют инфраструктуру для этого; например, mod_wsgi для Apache. Для nginx существует:    http://wiki.nginx.org/NginxNgxWSGIModule который даже основан на mod_wsgi.


0
2018-04-06 09:18



Nginx / mod_wsgi нельзя сказать, что он основан на Apache / mod_wsgi. Автор nginx / mod_wsgi рассмотрел Apache / mod_wsgi, использовал аналогичные концепции и именования конфигурации для частей, но поскольку внутренности nginx сильно отличаются от Apache, код довольно хорошо все новое. Просто будьте осторожны с тем, что вы используете nginx / mod_wsgi, поскольку использование веб-сервера, основанного на подходе, создает проблемы в многопроцессорных конфигурациях, где у вас есть блокирующий WSGI. Читать 'blog.dscpl.com.au/2009/05/...;. - Graham Dumpleton
@Phil: WSGI - это общий интерфейс для всех методов динамического контента, будь то CGI, FCGI, SCGI или модуль apache (mod_wsgi, которые заменяют mod_python). по факту flup предоставляет сервер WSGI с механизмом подключения FCGI. - Dan Andreatta
@Phil, похоже, что этот модуль активно развивается в спокойное время. Я запускаю веб-сервер с PHP, скриптами Python и Perl. Для меня имеет смысл использовать FastCGI вместо модулей, учитывая мою настройку VM с низкой памятью. - Rob
@ Да, моя проблема с flup заключается в том, что она полностью недокументирована. Я не знаю, что такое всплеск и как его использовать. Опираясь на недокументированное программное обеспечение для хобби, меня пугает. Завтра парень может снять свой код и заменить его на LOLCats. - Rob
@Graham: за URL, который я дал, на дизайн повлиял, и он заимствует код из mod_wsgi. Думаю, «на основе» было слишком сильное заявление. Сожалею. @ Dan-Andreatta: Я знаю, как они относятся; это просто, что FastCGI, казалось, было чрезмерно сильным требованием, учитывая представленную проблему, а разработка для работы с WSGI - это ИМО, путь. @Rob: хорошо, существующее использование FastCGI для других языков является достаточным основанием для использования в общей платформе. :) - Phil P