已有的python web应用程序是用web.py开发的,支持wsgi。为了搭建Linux部署环境,准备采用Nginx+uwsgi方式。
服务器环境:Linode VPS安装Debian Lenny 32位版本。
不过,实际安装中还是遇到了很多问题,特记录以便备查。
问题:
安装完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应用程序的环境组合,推荐使用。