最近写的一个web.py的小东西,就想试一下以apache为服务器部署一下。看了下官方教程感觉也不是特别复杂,挨个步骤去执行,到最后访问是可以了,但是却没按照预览的状态去运行。查,疯狂的查,最后终于解决了问题,但是和官方的教程有些差别。
下面具体说配置过程
基本配置过程可以看下该地址(http://library.linode.com/frameworks/webpy/ubuntu-12.04-precise-pangolin),可以说非常详细了,从web.py的安装/apache的安装/mod-wsgi的安装,到最后的验证都讲解的非常清楚。开始是没找到这个的资料的,是直接看的官网教程(http://webpy.org/cookbook/mod_wsgi-apache-ubuntu),费了不少力气去验证各个部分的安装成功与否。最后的问题的主要原因就是出在完全按照官网去配置的,后来不断的找资料,然后修改,最后才成功了。
如果你看到官网教程可以看到,它修改的主要是/etc/apache2/site-available/下的配置文件,没有牵涉到/etc/apache2/httpd.conf的配置,我就是出在这个问题上。
我先说下遇到的问题
1:import error。它会告诉你,你导入的某个文件不存在,这是路径的问题,解决方法(http://webpy.org/install#apache)。它就是在你的文件中,加上:
import sys, os
abspath = os.path.dirname(__file__)s
ys.path.append(abspath)
os.chdir(abspath)
这几句代码
2:什么 Thread什么.pyc什么的错误,具体忘记了。其实这不应该算是一个错误,而且日志级别也是warn的,这个具体原因在python更高版本已经解决,我的是2.7。这个警告官方已经有说明其实是不影响的。
说你的py文件中没有wsgi的application,这个问题可能是你的py文件写错了,最后应该是:
application = web.application(urls, globals()).wsgifunc()
3:在开发的时候,import文件的时候出现PYTHON_EGG_CACHE无权限, Permission denied: '/usr/local/www/
解决办法修改PYTHON_EGG_CACHE路径,到一个新的地方
4:按照官网教程设置完之后,直接显示了类似的svn的下载页面,工程里的各个文件给列出来了。点击之后直接下载下来了。
解决办法是:/etc/apache2/httpd.conf加上了和/etc/apache2/site-available/my-website相同的两句:
WSGIScriptAlias /webpy /var/www/webpy/reqhandler.py/
AddType text/html .py
其中my-website是我工程的配置文件,webpy是我的工程的名字。
所以最后的httd.conf的内容为: