gpt4 book ai didi

python - 在 Ubuntu 上使用 nginx 通过 FastCGI 运行 Python

转载 作者:可可西里 更新时间:2023-11-01 17:10:54 25 4
gpt4 key购买 nike

我已经查看了其他主题,但大多数都没有深入到足够的设置细节,这正是我需要帮助的地方。

我有一个运行 nginx 的基于 Ubuntu 的 VPS,通过端口 9000 上的 php-cgi 为 PHP 站点提供服务。

我想开始使用 Python 做更多事情,所以我编写了一个部署脚本,我基本上想将其用作本地 GitLab 服务器上的接收后 Hook ,作为我的第一个 python 脚本。我可以通过在命令行上运行 python script.py 成功运行此脚本,但为了将其用作接收后 Hook ,我需要它能够通过 http 访问它。

我看了this guide在 nginx 维基上,但中途说:

And start the django fastcgi process:

python ./manage.py runfcgi host=127.0.0.1 port=8080

现在,就像我说的那样,我是 python 的新手,而且我从未使用过 Django 框架。谁能告诉我应该如何启动 fastcgi 服务器?我是否将 ./manage.py 替换为我的脚本名称?任何帮助都将不胜感激,因为我在网上找到的所有内容都指的是使用 Django。

最佳答案

Do I replace ./manage.py with the name of my script?

没有。您的脚本极不可能是 FastCGI 服务器,或者它可以接受任何类型的 HTTP 请求,因为您提到通过命令行运行它。 (根据我对 FastCGI 的了解,支持它的应用程序必须能够处理以特定格式通过 stdin 传入的请求流,因此肯定涉及一些管道。)

我想说最简单的方法是使用一些 网络框架来充当 HTTP/FastCGI 中间件。为您使用像 Flask 这样的“微框架” (甚至是 Paste,但我发现文档难以理解)听起来不错。这个想法是为您的主要代码提供两个接口(interface),一个可以处理命令行参数,一个可以处理 HTTP 请求,最终两者都只会调用一个实际完成工作的函数。 (如果您想保留应用程序的命令行版本。)

Flask 文档还提到了 using uWSGIstandalone workers作为部署选项。我不熟悉前者; 出于与下一段中的方法相同的原因,我不建议将后者用于简单、低流量的应用。

考虑到您使用 VPS,您甚至可以使用 the http.server module 将应用程序作为独立服务器进程运行。 ,但我不确定这是更好的选择,除非您绝对想避免使用任何类型的框架。您必须确保应用程序在服务器重新启动时启动,或者它在服务器崩溃时重新启动,并且让 nginx 执行主管的工作似乎更容易。

更新: 从头开始​​,似乎 nginx 不会为您处理监督 FastCGI 工作进程,这本来是该方法的主要优点。鉴于此,您使用三种方法中的哪一种都无关紧要,因为您必须以一种或另一种方式设置服务主管。我会说选择 uWSGI,因为 flup(Flask+FastCGI 需要)自 2011 年以来似乎已被废弃,而 uWSGI 协议(protocol)显然在 nginx 中原生支持。否则你需要使用不同于 nginx 的网络服务器,一个将为你管理 FastCGI worker 的服务器。如果这是一个选项,我会考虑 Cherokee ,可以使用 Web GUI 进行配置。

tl;dr:您需要编写一个(非常简单的)网络应用程序。虽然在没有任何类型的 Web 框架的情况下执行此操作是可行的,但我认为使用一个更容易,因为您可以免费获得一些(非平凡的)管道,并且有很多关于如何部署它们的指导。

关于python - 在 Ubuntu 上使用 nginx 通过 FastCGI 运行 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15840444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com