11

我正在尝试使用 Apache 和 mod_wsgi 运行 Bottle.py。

我在 Windows 上运行它,使用 xampp。蟒蛇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 日志文件上没有任何其他错误,可能缺少一些基本的东西。

4

4 回答 4

6

从wsgi文件到hello.py文件没有连接点。
将 hello.py 中的内容放入app.wsgi重新启动 Web 服务器。
那应该可以解决问题。

要使您的应用程序模块化以便您可以将代码放入各种文件中,请查看 Bottle 的等价物蓝图(由 Flask 框架使用)

于 2013-07-17T21:31:09.377 回答
4

或者 Duan 的评论是我将 app.wsgi 和应用程序 python 文件分开的一个很好的起点。但它们对我来说有点神秘。搞砸了几个小时后,这对我有用:
[顺便说一句,我正在使用 OSX。请根据您的操作系统调整路径、用户、组]

/Library/WebServer/Documents/hello_app/app.wsgi:

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.py:

from bottle import route

@route('/hello')
def hello():
    return "Hello World!"

/etc/apache2/extra/httpd-vhosts.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 服务器。

在网络浏览器中检查应用程序

于 2015-03-14T16:10:45.050 回答
2

我没有在任何地方看到您的 hello.py 引用。

您应该将 hello.py (the route) 的内容放入 app.wsgi。

于 2013-07-17T12:55:11.280 回答
1

我正在为那些与我遇到同样问题的人添加我的结论:像 Kneel-Before-ZOD 和 ron.rothman,我不得不在 WSGI 文件中编写我的代码,因为 python 从那里运行代码,但是如果你想得到你自己的 py 文件,你必须从 WSGI 文件中导入它们,如下所示:

from hello import application

“你好”是python文件名,“应用程序”是你应该写在你的py文件而不是wsgi中的东西:

application = bottle.default_app()

每次我进行更改时也必须重新启动 apache(我不知道 - 这就是为什么它让我发疯)。tnx 给那些帮助过我的人。好运。

于 2013-07-18T12:05:35.687 回答