python - 'path/wsgi.py apache ubuntu 对 fopen() 的 mod_wsgi 调用失败
问题描述
嗨,我尝试2.2v
在 ubuntu apache 服务器上部署我的 django 项目
当我运行cat /var/log/apache2/error.log
我得到这个错误:
[time] [wsgi:error] [pid 13224:tid 2323232] (13)Permission denied: [remote some number:number] mod_wsgi (pid=13323, process='django_app', application='django_project|'): 调用'/root/project_name/project_name/wsgi.py' 的 fopen() 失败。
我的wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'zettapc.settings')
application = get_wsgi_application()
这是我的/etc/apache2/sites-available/django_proj.conf
:
<VirtualHost *:80>
Alias /static /root/project_name/static
<Directory /root/project_name/static>
Require all granted
</Directory>
Alias /meida /root/project_name/meida
<Directory /root/project_name/meida>
Require all granted
</Directory>
<Directory /root/project_name/zettapc>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIScriptAlias / /root/project_name/project_name/wsgi.py
WSGIDaemonProcess django_app python-path=/root/project_name python-home=/root/project_name/venv/
WSGIProcessGroup django_app
</VirtualHost>
我的浏览器上的输出是:
内部服务器错误
这是的输出ps aux | egrep '(apache|httpd)'
和输出ls -l /root/project_name/project_name/wsgi.py
是:
-rwxr-x--- 1 root root 177 time /root/project_name/project_name/wsgi.py
有什么我错过的吗
解决方案
您的 wsgi 文件很可能归 root 所有,而 apache 服务器以非 root 用户身份运行。您可以检查您的 apache 服务器与哪个用户一起运行,ps aux | egrep '(apache|httpd)'
以及哪个用户拥有您的 wsgi 文件ls -l /root/project_name/project_name/wsgi.py
您最好的选择是将您的项目从根文件夹移动到更合适的位置(例如/usr/
)并使用更改它的所有者chown -r <user>:<user> <folder>
或者以 root 身份运行 apache 服务器,但这是一个非常糟糕的做法,所以不要这样做。
编辑:也可能是您的 wsgi 服务器(gunicorn/uwsgi?)以错误的用户身份运行,同样的修复仍然可以解决问题。
推荐阅读
- c# - 如何在 stimulsoft 报告中将数据传递给 BusinessObject?
- plot - 支撑位和阻力位的价格标签没有显示在正确的位置
- ios - 来自@Environment var Changes 的不一致 ContentView 更新
- vue.js - 如何在 vue js 中编写退格 html
- ios - 无法在其父视图之外平移手势较小的 UIView
- python - 结合不同周期频率的 Pandas 数据帧
- c# - 有人能解释一下我怎么能用这段代码调用 ridgedbody2d 吗?
- azure-devops - 探索托管代理上的文件系统
- spring - Spring Boot:如何根据输入组进行 REST 验证?
- amazon-web-services - 从 boto3 调用 AWS Glue Pythonshell 作业时出现参数错误