运行Apache + Bottle + Python

Or *_*uan 10 python apache mod-wsgi bottle

我正在尝试使用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>
Run Code Online (Sandbox Code Playgroud)

我的app.wsgi代码:

import os
os.chdir(os.path.dirname(__file__))
import bottle
application = bottle.default_app()
Run Code Online (Sandbox Code Playgroud)

我的hello.py:

from bottle import route
@route('/hello')
def hello():
    return "Hello World!"
Run Code Online (Sandbox Code Playgroud)

当我去的时候,localhost/hello我收到404错误.我在Apache日志文件中没有任何其他错误,可能缺少基本的东西.

Kne*_*ZOD 6

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

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


Mur*_*uru 5

或者 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()
Run Code Online (Sandbox Code Playgroud)

/Library/WebServer/Documents/hello_app/hello.py:

from bottle import route

@route('/hello')
def hello():
    return "Hello World!"
Run Code Online (Sandbox Code Playgroud)

/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>
Run Code Online (Sandbox Code Playgroud)

不要忘记重新启动您的 apache 服务器。

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