在Ubuntu 16.04上使用Apache mod_wsgi部署Bottle.py应用程序

问题描述:

我很难部署Bottle应用程序。我试着在过去的问题中使用一些建议的答案,但我似乎无法得到这个工作。我结束了500内部服务器错误在Ubuntu 16.04上使用Apache mod_wsgi部署Bottle.py应用程序

这是我的设置。

  • 的Ubuntu 16.04
  • 阿帕奇
  • 中的libapache2-MOD-WSGI-PY 3
  • 的Python 3.5

我.wsgi和app.py文件坐到:

/VAR/www/bottle_app/

  • app.wsgi
  • app.py

app.wsgi是如下

import os 
# Change working directory so relative paths (and template lookup) work again 
os.chdir(os.path.dirname(__file__)) 

import bottle 
# ... build or import your bottle application here ... 
import app 
application = bottle.default_app() 

app.py是如下

from bottle import route 
@route('/') 
def hello(): 
    return 'Hello world' 

阿帕奇.conf文件:

<VirtualHost *:80> 
ServerName example.com 

WSGIDaemonProcess bottle_app user=bottle group=www-data processes=1 threads=5 
WSGIScriptAlias//var/www/bottle_app/app.wsgi 

<Directory /var/www/bottle_app> 
    WSGIProcessGroup bottle_app 
    WSGIApplicationGroup %{GLOBAL} 
    Require all granted 
</Directory> 

当我运行python3 app.py,不会返回任何(我假设这是预期) 当我运行python3 app.wsgi我得到:

Traceback (most recent call last): 
File "app.wsgi", line 3, in <module> 
    os.chdir(os.path.dirname(__file__)) 
FileNotFoundError: [Errno 2] No such file or directory: '' 

我的Apache的错误日志显示以下错误。

Target WSGI script '/var/www/bottle_app/app.wsgi' cannot be loaded as Python module 
Exception occurred processing WSGI script '/var/www/bottle_app/app.wsgi 
Traceback (most recent call last): 
File "/var/www/bottle_app/app.wsgi", line 7, in <module> 
    import app 
ImportError: No module named 'app' 

我在干净的Ubuntu安装下使用sudo权限在用户瓶下执行了此操作。这可能是我第10次使用来自具有类似问题的用户的其他问题的不同建议进行重建。我试图避免发布一个看似重复的问题。任何帮助将不胜感激。

在导入您的应用程序模块中的app.wsgi文件,请尝试:

import sys 
sys.path.insert(0, '/var/www/bottle_app') 

一个更清洁的方式可能是利用蟒蛇路径参数的WSGIDaemonProcess进入在Apache配置中。

WSGIDaemonProcess bottle_app user=bottle group=www-data processes=1 threads=5 python-path=/var/www/bottle_app 

的__file__也不是绝对的,所以如果你需要得到它的这种类型的用途(其中像Apache控制进程可能会做有趣的事情与路径)的位置尝试:

os.chdir(os.path.dirname(os.path.abspath(__file__))) 
+0

谢谢回复。我做了你建议给我的app.wsgi的更改,现在当我运行python3 app.wsgi时,没有任何返回,我假设现在所有的都是好的。尽管我的Apache日志仍然显示相同的错误。 – 404error

+1

另一个帖子建议在路径中明确包含你的app目录:'sys.path.insert(0,'/ var/www/bottle_app')'[link](http://stackoverflow.com/questions/17678037/running- Apache的瓶蟒蛇)。尽管如此,我猜想整体配置还有其他问题。不应该需要这么复杂。 – systemjack

+0

'import sys sys.path.insert(0,'/ path/to/application/app/folder')'类似这样的东西? – 404error