嗨,我尝试部署我的 django 项目 2.2v
在 ubuntu Apache 服务器上
当我运行 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|'): Call to fopen() failed for '/root/project_name/project_name/wsgi.py'.
我的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>
我的浏览器上的输出是:Internal Server Error
这是
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 用户身份运行。
您可以使用 ps aux | egrep '(apache|httpd)'
检查您的 apache 服务器运行的用户身份。
哪个用户拥有 ls -l /root/project_name/project_name/wsgi.py
的 wsgi 文件
您最好的选择是将您的项目从根文件夹移动到更合适的位置(例如 /usr/
)并使用 chown -r <user>:<user> <folder>
更改它的所有者
或者以 root 身份运行 apache 服务器,但这是一个非常糟糕的做法,所以不要这样做。
编辑:
也可能是您的 wsgi 服务器(gunicorn/uwsgi ?)以错误的用户身份运行,同样的修复仍然可以解决问题。
关于python - 'path/wsgi.py apache ubuntu 对 fopen() 的 mod_wsgi 调用失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63156168/