最近写的一个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。这个警告官方已经有说明其实是不影响的。
3:说你的py文件中没有wsgi的application,这个问题可能是你的py文件写错了,最后应该是:
application = web.application(urls, globals()).wsgifunc()
如果还不能解决,请度娘和谷歌
4:最折磨哥的错误,本来是个web工程,按照官网教程设置完之后,直接给哥显示了类似的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的内容为:
1 ServerName 127.0.0.1
2 #LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
3 #必须加上,虽然在site-available中,对自己的工程配置的my-website已经有下面
两句配置,但是不知道为何,还是在这里必须加上,否则web工程无法正常运行, 变成了一个文件服务器
4 WSGIScriptAlias /webpy /var/www/webpy/reqhandler.py/
5 AddType text/html .py