AWS EC2 apache2部署Flask应用时WSGI无法导入flaskapp错误求助
问题1:wsgi文件导入错误
你当前flaskapp.wsgi里的导入语句from flaskapp import app as application不符合你的文件命名规则:你的应用主文件是application.py,不存在名为flaskapp.py的模块,所以Python抛出找不到模块的错误。
修改flaskapp.wsgi内容为:
#flaskapp.wsgi import sys sys.path.insert(0,'/var/www/html/flaskapp') from application import app as application
如果你的application.py中定义的Flask实例名不是app,需要对应修改导入的变量名,比如你写的是application = Flask(__name__),则导入语句改为from application import application。
问题2:Apache虚拟主机配置路径错误
你当前/etc/apache2/sites-enabled/000-default.conf里的<Directory flaskapp>使用了相对路径,Apache无法正确识别目标目录,需要修改为绝对路径,同时适配Apache 2.4+的权限规则:
<Directory /var/www/html/flaskapp> WSGIProcessGroup flaskapp WSGIApplicationGroup %{GLOBAL} Require all granted </Directory>
原有Order deny,allow、Allow from all是Apache 2.2版本的权限规则,2.4及以上版本需要替换为Require all granted,否则会触发权限错误。
其他必要排查步骤
- 进入
/var/www/html/flaskapp目录,用对应Python版本的包管理工具安装依赖:pip3 install -r requirements.txt,注意要保证安装依赖的Python版本和mod_wsgi编译使用的Python版本一致 - 给项目目录设置Apache运行用户的访问权限:
sudo chown -R www-data:www-data /var/www/html/flaskapp - 所有修改完成后重启Apache服务生效:
sudo systemctl restart apache2
内容的提问来源于stack exchange,提问作者ApplePie
相关产品推荐
相关产品推荐

