nginx uwsgi 和 cgi python 脚本

Posted

技术标签:

【中文标题】nginx uwsgi 和 cgi python 脚本【英文标题】:nginx uwsgi and cgi python script 【发布时间】:2012-04-20 19:22:47 【问题描述】:

我遇到了问题。我有一个 python 脚本。您可以将其称为 CGI 脚本。它在 Apache2 下工作正常,但在我关闭系统之前只剩下一个它永远运行。新系统使用 nginx。 在搜索解决方案时,我已经按照许多人的建议配置了 uwsgi,并为该脚本配置了虚拟主机以运行。 我在uwsgi wiki 上使用了第一个示例来确认我已经正确配置了 nginx 并且它可以与 uwsgi 通信。像魅力一样工作。

现在我的并发症:

我的脚本是很久以前写的,不是为 WSGI 设计的,我也不想/不能重写它。

所以我已经为 uwsgi 安装了 cgi 模块并尝试使用它。我得到的只是 502 错误。 uwsgi 没有执行任何操作。

这是我用于此应用的配置:

[uwsgi]
plugins = cgi
socket = 127.0.0.1:9010
cgi = /=/usr/share/test/
cgi-allowed-ext = .py
cgi-helper = .py=python

这是我在 index.py(测试脚本)中的代码:

#!/usr/bin/python
print "Content-type: text/html\n\n"
print "<html><body><h1>It works!</h1></body></html>"

我尝试使用以下命令测试 uwsgi:

/usr/sbin/uwsgi --http :9011 --ini /etc/uwsgi/test.ini --master

这是我得到的输出:

[uWSGI] getting INI configuration from /etc/uwsgi/test.ini
*** Starting uWSGI 1.1.2 (64bit) on [Fri Apr 20 15:26:33 2012] ***
compiled with version: 4.4.6 20110731 (Red Hat 4.4.6-3) on 19 April 2012 15:09:37
current working directory: /home/user
detected binary path: /usr/sbin/uwsgi
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread mutexes
uWSGI http bound on :9011 fd 3
uwsgi socket 0 bound to TCP address 127.0.0.1:9010 fd 6
your server socket listen backlog is limited to 100 connections
*** Operational MODE: single process ***
initialized CGI mountpoint: / = /usr/share/test/
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 6727)
spawned uWSGI worker 1 (pid: 6728, cores: 1)
spawned uWSGI http 1 (pid: 6729)
-- unavailable modifier requested: 0 --
-- unavailable modifier requested: 0 --
-- unavailable modifier requested: 0 --
-- unavailable modifier requested: 0 --

问题出在哪里?请帮忙。

提前致谢。

【问题讨论】:

很好,您找到了解决方案,但最好将其添加为答案,这样阅读帖子的其他人会更清楚。谢谢! @CharlesB 这是我的计划,但它让我等了 7 个小时。当我找到解决方案时,我想立即发布。我将在今天晚些时候或明天将其移至评论中。谢谢。 这是一个善意的提醒,这样你就不会忘记你可以知道添加一个答案:) 【参考方案1】:

好的。我没有读到足够好的uwsgi WIKI。我所要做的就是将--http-modifier1 9 添加到命令行开关,或者将uwsgi_modifier1 9; 添加到nginx 配置中。

location / 
     include /etc/nginx/uwsgi_params;
     uwsgi_modifier1 9;
     uwsgi_pass 127.0.0.1:9010;


/usr/sbin/uwsgi --http :9011 --http-modifier1 9 --ini /etc/uwsgi/test.ini --master

【讨论】:

以上是关于nginx uwsgi 和 cgi python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

python服务器环境搭建Flask,uwsgi和nginx

python 使用Nginx和uWSGI来运行Python应用

nginx+uWSGI+django+virtualenv+supervisor部署发布web项目

nginx和uwsgi服务器中的uwsgi模块的区别

Python3 - Nginx+uwsgi+Flask 部署到Centos服务器

Python3 - Nginx+uwsgi+Flask 部署到Centos服务器