我在配置nginx以使用Python3.2时遇到了一些麻烦。我也在努力寻找类似于关于这个主题的正确教程的任何东西。然而,我确实找到了一个关于让nginx与Python2.7玩得很好的教程。我的思维过程是,因为uwsgi使用插件,所以应该是一个相对简单的练习来遵循Python2.7教程,只需换掉python插件。
以下是我使用的基本Hello World网站的教程:https://library.linode.com/web-servers/nginx/python-uwsgi/ubuntu-12.04-precise-pangolin
/etc/uwsgi/apps_available/my_site_url.xml看起来像:
<uwsgi>
<plugin>python</plugin>
<socket>/run/uwsgi/app/my_site_urlmy_site_url.socket</socket>
<pythonpath>/srv/www/my_site_url/application/</pythonpath>
<app mountpoint="/">
<script>wsgi_configuration_module</script>
</app>
<master/>
<processes>4</processes>
<harakiri>60</harakiri>
<reload-mercy>8</reload-mercy>
<cpu-affinity>1</cpu-affinity>
<stats>/tmp/stats.socket</stats>
<max-requests>2000</max-requests>
<limit-as>512</limit-as>
<reload-on-as>256</reload-on-as>
<reload-on-rss>192</reload-on-rss>
<no-orphans/>
<vacuum/>
</uwsgi>
一切正常后,通过apt-get安装uwsgi-plugin-python3。 ls -l /usr/lib/uwsgi/plugins/
现在输出:
-rw-r--r-- 1 root root 142936 Jul 17 2012 python27_plugin.so
-rw-r--r-- 1 root root 147192 Jul 17 2012 python32_plugin.so
lrwxrwxrwx 1 root root 38 May 17 11:44 python3_plugin.so -> /etc/alternatives/uwsgi-plugin-python3
lrwxrwxrwx 1 root root 37 May 18 12:14 python_plugin.so -> /etc/alternatives/uwsgi-plugin-python
在my_site_url.xml中将python
更改为python3
或python32
具有相同的效果,即:
/var/log/uwsgi/app/my_site_url.log记录以下内容:
[pid:4503 | app:0 | req:1/2] 192.168.1.5(){42 vars in 630 bytes} [Sun May 19 10:49:12 2013] GET / =&gt; 0 msecs(HTTP / 1.1 200)生成0个字节65个字节的2个标头(核心0上的1个开关)
所以我的问题是:
如何正确配置此应用以使用Python3.2
答案 0 :(得分:2)
列出的教程包含以下应用程序代码:
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
这与python3.2无法兼容,因为它需要一个bytes对象。用以下内容替换应用程序功能:
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return b"Hello World"