2016-04-27 2 views
2

Мне нелегко развертывать приложение для бутылок. Я попытался использовать некоторые из предложенных ответов в прошлых вопросах, но я не могу заставить это работать. Я закончил с внутренней внутренней ошибкой сервераРазвертывание приложения Bottle.py с Apache mod_wsgi на Ubuntu 16.04

Это моя настройка.

  • Ubuntu 16,04
  • Apache
  • libapache2-мод-WSGI-PY3
  • Python 3.5

Мой .wsgi и app.py файл сидеть:

/вар/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' 

Apache .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

Другое сообщение, предлагающее явно указать каталог вашего приложения в пути: 'sys.path.insert (0, '/ var/www/bottle_app')' [link] (http://stackoverflow.com/questions/17678037/running- апач-бутылка-питон). Я бы предположил, что что-то еще не так с общей конфигурацией. Не должно быть так сложно. – systemjack

+0

'import sys sys.path.insert (0, '/ путь/в/приложение/приложение/папка')' что-то вроде этого? – 404error

 Смежные вопросы

  • Нет связанных вопросов^_^