Я успешно настроил машину Ubuntu 16.04 LTS с Python 3.6, Apache и mod_wsgi. В этой папке установлен virtualenv с установленной Flask.
$ ls -l /var/www/html/odb/
bin/
lib/
include/
config.wsgi
Файл .wsgi очень прост, как и Apache conf:
$ cat /var/www/html/odb/config.wsgi
activate_this = '/home/ubuntu/odb/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
import sys
sys.path.insert(0, '/var/www/html/odb/')
def application(environ,start_response):
start_response('200 OK',[('Content-type','text/html')])
return ['Hello world']
$ cat /etc/apache2/sites-available/odb.conf
<VirtualHost *>
ServerName example.com
WSGIDaemonProcess webserver threads=5
WSGIScriptAlias / /var/www/html/odb/config.wsgi
<Directory /var/www/html/odb>
WSGIProcessGroup webserver
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
Я могу получить доступ к фиктивной веб-странице. Но когда я изменяю файл .wsgi и добавляю приложение Python Flask, я получаю HTTP 500. Вот файлы:
$ cat /var/www/html/odb/config.wsgi
activate_this = '/home/ubuntu/odb/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
import sys
sys.path.insert(0, '/var/www/html/odb/')
from webserver import app as application
$ cat /var/www/html/odb/webserver.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == "__main__":
app.run(debug=True)
Когда я запускаю приложение через $ flask run --host=0.0.0.0
, я могу получить к нему доступ через Интернет, поэтому кажется, что я делаю что-то не так с тем, как я указываю на приложение Flask в файле .wsgi. Что я делаю не так?
Ведение журнала: $ cat /var/log/apache2/*log
ничего не дает после HTTP 500. Я замечаю, что /var/www/html/odb/webserver.pyc
появляется после HTTP 500, если это может помочь ..?