Apache和wsgi现在有权访问存储我的Django项目的目录。我想我需要回到以用户(或者可能只是组)kevin运行wsgi。
我有这个工作,我不知道我做了什么来阻止它工作,但现在我得到一个权限错误,一旦我登录我的应用程序。不幸的是,我没有版本控制下的apache配置。我很确定问题出在哪里,因为从工作时恢复项目的备份并没有改变任何东西,但调整数据库和项目根目录的权限已经改变了错误消息的细节。我不打算给整个作品提供o + w,也不想给每个文件或目录提供ACL。
后台:与Ubuntu 16.04 LTS一起提供的apache 2。 Django 1.11。 Python 3.5。 libsqlite3.0 3.11.0
我认为我在/etc/apache2/apache2.conf的尾部处理了这个,特别是行
WSGIProcessGroup kevin
因为所有的文件和目录都归kevin.kevin所有,我的证据似乎表明,当它工作时,它就是这样做的,因为它运行的是至少有效的组'kevin'而不是当前的'www-数据”。
我为此项目添加到apache2.conf的全部内容现在看起来像这样:
# KOSMANOR:
# In accordance with https://www.mindchasers.com/dev/apache-install
WSGIDaemonProcess kevin processes=4 threads=12 python-path=/build/comprosloco
WSGIProcessGroup kevin
WSGIRestrictEmbedded On
WSGILazyInitialization On
WSGIScriptAlias / /build/comprosloco/comprosloco/wsgi.py
<Directory /build/comprosloco/comprosloco>
Require all granted
</Directory>
# 29 Jan 2018 on kosmanor.com
# 6 Mar 2018 revised reference to 1.11, but it's so modified as to be unrecognizable. Not sure what reference was used.
# 6 Mar 2018 In particular the stuff about virtual environments is ignored here.
# WSGIScriptAlias / is set above in accordance with the mindchaser page
# WSGIPythonPath not set (semms to find my stuff without it)
# WSTIPythonHome is not set (not using a vitual environment yet)
# Added in accordance (somewhat modified) with https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/modwsgi/
#
Alias /static/ /usr/local/lib/python3.5/dist-packages/django/contrib/admin/static/
<Directory /usr/local/lib/python3.5/dist-packages/django/contrib/admin/static>
Require all granted
</Directory>
答案 0 :(得分:1)
WSGIDaemonProcess
的文档可在以下网址找到:
您可以使用user
和group
选项。
否则,目录和文件至少需要系统上的Apache用户可读。如果需要编写文件,则Apache用户需要对文件进行写访问,并且在SQLite等情况下也需要该目录,以便它可以创建数据库锁文件。
答案 1 :(得分:0)
非常有用的评论。我确实解决了这个问题,但应该说明细节,因为某些事情会发生在其他人身上。