2016-04-27 171 views
2

我很難部署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次使用來自具有類似問題的用戶的其他問題的不同建議進行重建。我試圖避免發佈一個看似重複的問題。任何幫助將不勝感激。

回答

2

在導入您的應用程序模塊中的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

相關問題