在Ubuntu VPS上使用mo_wsgi部署我的Flask应用程序时错误500



我目前正试图在我的ubuntu VPS上部署一个非常基本的Flask应用程序。
我尽可能准确地遵循了这个youtube教程:https://www.youtube.com/watch?v=w0QDAg85Oow

但是我最终得到了一个500的错误。以下是日志中的一个示例:

mod_wsgi (pid=8283): Failed to exec Python script file '/var/www/flask-app/app.wsgi'.
mod_wsgi (pid=8283): Exception occurred processing WSGI script '/var/www/flask-app/app.wsgi'.
Traceback (most recent call last):
File "/var/www/flask-app/app.wsgi", line 5, in <module>
with open(activate_this) as file_:
PermissionError: [Errno 13] Permission denied: '/root/.local/share/virtualenvs/flask-app-yYmzn1cG/bin/activate_this.py'

app.wsgi文件:

import sys
sys.path.insert(0, '/var/www/flask-app')
activate_this = '/root/.local/share/virtualenvs/flask-app-yYmzn1cG/bin/activate_this.py'
with open(activate_this) as file_:
exec(file_.read(), dict(__file__=activate_this))
from app import app as application

python app.py:

from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)

flask-app.conf:

<VirtualHost *:80>
WSGIDaemonProcess flaskapp user=www-data group=www-data threads=5
WSGIScriptAlias / /var/www/flask-app/app.wsgi
<Directory /var/www/flask-app>
WSGIProcessGroup flaskapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
ErrorLog /var/www/flask-app/logs/error.log
CustomLog /var/www/flask-app/logs/access.log combined
</VirtualHost>

从输入截图/etc/apache2/sites-available和/etc/apache2/sites-enabled:

截图从日志中我们可以看到,这似乎是一个权限错误。我从视频和flask文档(https://flask.palletsprojects.com/en/2.0.x/deploying/mod_wsgi/)中理解的是,服务器运行我的应用程序与"www-data";我们在flask-app.conf中告诉用户:

WSGIDaemonProcess flaskapp user=www-data group=www-data threads=5

我现在尝试的是从root运行:

$ chown -R www-data:www-data /root/.local/share/virtualenvs

因为我用root创建了我的pipenv虚拟环境,所以我试图把它们的所有权给www-data用户。

但是错误仍然存在…

我刚开始使用VPS, apache和Flask,我找不到这个问题的解决方案。
你知道吗?


我试图创建一个名为"arnaud"的新用户,并且我复制了"flask-app-yYmzn1cG"/home/arnaud/flask-app-venv.

我更改了"activate_this.py"在app.wsgi文件中指向新的/home/arnad/flask-app-venv/flask-app-yYmzn1cG/bin/activate_this.py.

我更改了"用户";和";group";arnaud"在flask-app.conf.

…这招奏效了。这次没有错误,我的应用程序正在运行。

问题出在用户"www-data"访问/root/文件夹中pipenv生成的虚拟环境。

您确认mod_wsgi实际上是作为www-data用户运行的吗?如果从非特权用户启动应用程序(不使用sudo), mod_wsgi将无法切换到www-data用户。我不能说mod_wsgi,但是IIRC uwsgi只是静静地只是作为调用用户运行,如果它没有所需的权限来运行它作为配置的用户。

最新更新