我正在尝试使用Apache和mod_wsgi运行Bottle.py。
我在Windows上运行它,使用xampp。 python v2.7
我在httpd中的Apache配置:
<VirtualHost *>
ServerName example.com
WSGIScriptAlias / C:\xampp\htdocs\GetXPathsProject\app.wsgi
<Directory C:\xampp\htdocs\GetXPathsProject>
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
我的app.wsgi代码:
import os
os.chdir(os.path.dirname(__file__))
import bottle
application = bottle.default_app()
我的hello.py:
from bottle import route
@route('/hello')
def hello():
return "Hello World!"
当我去localhost/hello
时,我收到404错误。我在Apache日志文件中没有任何其他错误,可能缺少基本的东西。
从wsgi文件到hello.py文件没有连接点。 将hello.py中的内容放入app.wsgi并重新启动Web服务器。 那应该可以解决问题。 要使您的应用程序模块化以便将代码放入各种文件中,请查看Bottle的等效蓝图(由Flask框架使用)
或者Duan的评论是我分开app.wsgi和应用程序python文件的一个很好的起点。但他们对我的理解有点神秘。搞乱了几个小时后,这对我有用: [顺便说一下,我正在研究OSX。请根据您的操作系统调整路径,用户,组]
/library/webserver/documents/hello_app/app.我是个i:
import sys
sys.path.insert(0, "/Library/WebServer/Documents/hello_app")
import bottle
import hello
application = bottle.default_app()
/library/webserver/documents/hello_app/hello.朋友:
from bottle import route
@route('/hello')
def hello():
return "Hello World!"
/etc/Apache2/extra/HTTP的-v hosts.conf:
<VirtualHost *:80>
ServerName xyz.com
WSGIDaemonProcess hello_app user=_www group=_www processes=1 threads=5
WSGIScriptAlias /v1 /Library/WebServer/Documents/hello_app/app.wsgi
<Directory /Library/WebServer/Documents/hello_app>
WSGIProcessGroup hello_app
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
不要忘记重新启动Apache服务器。
我没有看到你的hello.py被引用到任何地方。
你应该把hello.py(route
)的内容放到app.wsgi中。
我正在为那些会遇到与我一样的问题的人添加我的结论:像Kneel-Before-ZOD和ron.rothman,我必须在WSGI文件中编写我的代码,因为python从那里运行代码,但是如果你想获得自己的py文件,你必须从WSGI文件中导入它们:
from hello import application
“hello”是python文件名,“应用程序”就像你应该写在py文件而不是wsgi中:
application = bottle.default_app()
每当我做出改变时我也不得不重启apache(我不知道 - 这就是为什么它让我疯了)。 tnx为那些帮助我的人。 GooLuck。