使用Flask,apache2和Python 3.4.2运行服务器时出现500内部服务器错误。
起初我在没有创建虚拟环境的情况下安装了Flask,所以我认为这可能是一个原因。但是,我后来使用以下方法为我的应用程序创建了虚拟环境:
python3.4 -m venv venv
source venv/bin/activate
(venv) pip3 install Flask
我通过使用python3 __ init.py 运行我的应用进行检查,它正在本地工作。 然后我重新加载了我的apache2服务器,仍然得到了同样的错误。请参阅以下错误日志文件的输出:
mod_wsgi (pid=25667): Target WSGI script '/var/www/FlaskApp/flaskapp.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=25667): Exception occurred processing WSGI script '/var/www/FlaskApp/flaskapp.wsgi'.
Traceback (most recent call last):
File "/var/www/FlaskApp/flaskapp.wsgi", line 11, in <module>
from XYZ import app as application
File "/var/www/FlaskApp/XYZ/__init__.py", line 1, in <module>
from flask import Flask, render_template
ImportError: No module named flask
有任何建议如何解决?
etc / apache2 / sites-available
中的FlaskApp.conf文件
<VirtualHost *:80>
ServerName xyz.com
ServerAlias www.xyz.com
ServerAdmin contact@xyz.com
WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi
<Directory /var/www/FlaskApp/XYZ/>
Order allow,deny
Allow from all
</Directory>
Alias /static /var/www/FlaskApp/XYZ/static
<Directory /var/www/FlaskApp/XYZ/static/>
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
来自apache2错误日志文件的行:
AH00489: Apache/2.4.10 (Ubuntu) mod_wsgi/3.5 Python/2.7.8 configured -- resuming normal operations
看起来mod_wsgi试图使用2.7.8而不是3.4。我该如何解决这个问题?
答案 0 :(得分:2)
我将xx.wsgi从使用execfile()更改为使用exec()。这是它最终工作时的样子。
activate_this = '/opt/flask/project_name/py3venv/bin/activate_this.py'
exec(open(activate_this).read(), dict(__file__=activate_this))
import sys
sys.path.insert(0, '/opt/flask/project_name')
from project_app_name import app as application
答案 1 :(得分:1)
我想我终于解决了! 我将以下代码行添加到位于etc / apache2 / sites-available中的FlaskApp.conf文件中:
WSGIPythonPath /var/www/FlaskApp/XYZ/venv/:/var/www/FlaskApp/XYZ/venv/lib/python3.4/site-packages
此行应该先于VirtualHost!
然后我重新启动了apache并让我的网站工作,除了只有www,非www不起作用。
答案 2 :(得分:0)
mod_wsgi
可能不了解你的virtualenv,只需告诉你使用它而不是默认的系统环境。
This info应该有所帮助。
如果没有,请发布您的flaskapp.wsgi
和httpd.conf
个文件。