运行Apache + Bottle + Python

问题描述 投票:10回答:4

我正在尝试使用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日志文件中没有任何其他错误,可能缺少基本的东西。

python apache mod-wsgi bottle
4个回答
6
投票

从wsgi文件到hello.py文件没有连接点。 将hello.py中的内容放入app.wsgi并重新启动Web服务器。 那应该可以解决问题。 要使您的应用程序模块化以便将代码放入各种文件中,请查看Bottle的等效蓝图(由Flask框架使用)


4
投票

或者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服务器。


2
投票

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

你应该把hello.py(route)的内容放到app.wsgi中。


1
投票

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

from hello import application

“hello”是python文件名,“应用程序”就像你应该写在py文件而不是wsgi中:

application = bottle.default_app()

每当我做出改变时我也不得不重启apache(我不知道 - 这就是为什么它让我疯了)。 tnx为那些帮助我的人。 GooLuck。

© www.soinside.com 2019 - 2024. All rights reserved.