python - 'path/wsgi.py apache ubuntu 对 fopen() 的 mod_wsgi 调用失败

标签 python django apache ubuntu

嗨,我尝试部署我的 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)' 的输出
enter image description here
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/

相关文章:

python - 使用 Seaborn 或 Matplotlib 的语义差异图

python - 在 python 中为 insert() 编写更快的实现

python - Docker+Django,服务器运行但欢迎页面不显示

python - 无法在 Django 中包含来 self 的应用程序的网址

java - Solr 和搜索运算符 - lucene apache solr

python - 方便地迭代数据存储实体

python - 使用 Resnet 的图像生成器

python - 我如何告诉 django-admin 使用哪个设置模块?

linux - 不使用数据库的访问控制

wordpress - laravel 和 wordpress 在同一个域上(子文件夹中的 laravel)