Debian Lenny安装nginx+uwsgi

廖雪峰 / 文章 / ... / Reads: 1551 Edit

已有的python web应用程序是用web.py开发的,支持wsgi。为了搭建Linux部署环境,准备采用Nginx+uwsgi方式。

服务器环境:Linode VPS安装Debian Lenny 32位版本。

安装过程主要参考linode的文档:

不过,实际安装中还是遇到了很多问题,特记录以便备查。

问题

安装完Python和MySQL Server后,安装MySQL-python出错,提示:EnvironmentError: mysql_config not found。

原因

缺少mysql的dev包。

解决方案

安装libmysqlclient-dev包:apt-get install libmysqlclient-dev。

问题

运行uwsgi出错,提示ExtractionError: Can't extract file(s) to egg cache。

原因

一些包是以压缩包提供的,运行时需要解压缩,默认的解压缩目录权限对uwsgi进程用户uwsgi权限不够。

解决方案

新建/srv/PYTHON_EGG_CACHE目录,设置权限chown uwsgi:uwsgi,在/etc/init.d/uwsgi脚本中增加:

export PYTHON_EGG_CACHE=/srv/PYTHON_EGG_CACHE

问题

运行uwsgi继续报错,提示wsgi application not found

原因

开发状态下,web.py的启动脚本为:

app = web.application(urls, globals())
app.run()

此方式未使用wsgi接口。

解决方案

若使用wsgi,则应改为:

app = web.application(urls, globals())
application = app.wsgifunc()

修改app.py,重启uwsgi后问题解决。

最后总结一下,Linode的VPS非常不错,提供各种版本的Linux镜像,安装非常方便。文档丰富,覆盖Linux各发行版、Apache、Nginx、PHP、Python、Ruby等流行web应用程序的环境组合,推荐使用。

Comments

Make a comment

Author: 廖雪峰

Publish at: ...

关注公众号不定期领红包:

加入知识星球社群:

关注微博获取实时动态: