我检查了一些类似的问题。ex)mod_wsgi unable to connect WSGI daemon process
但它对我的问题不起作用至少我认为。
我的错误是相同的链接。(13)Permission denied: mod_wsgi (pid=6402): Unable to connect to WSGI daemon process 'djangoServer' on '/etc/httpd/run/wsgi.6399.0.1.sock' as user with uid=99.
因此,我插入socket-user=#99
,但它不起作用。user=#99 group=#99
也无法解析。
系统为Centos7、Python 2.7.5、Apache 2.4.6
虚拟环境是django应用程序3.0.3,python 3.6.8
我的django.conf是
# WSGISocketPrefix /var/run/wsgi
<VirtualHost *:80>
DocumentRoot /usr/rest_auth
ServerName djangoServer
WSGIDaemonProcess djangoServer user=#99 group=#99 python-path=/usr/myvenv/lib/python3.6/site-packages
WSGIProcessGroup djangoServer
WSGIScriptAlias / /usr/rest_auth/rest_auth/wsgi.py
<Directory "/usr/rest_auth/rest_auth">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /assets/ /usr/rest_auth/static/
<Directory /usr/rest_auth/static>
Allow from all
</Directory>
</VirtualHost>
而wsgi.py是
import os, sys
from django.core.wsgi import get_wsgi_application
path= os.path.abspath(__file__+'/../..')
if path not in sys.path:
sys.path.append(path)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rest_auth.settings")
application = get_wsgi_application()
我试着通过这个链接解决它。https://modwsgi.readthedocs.io/en/develop/configuration-directives/WSGISocketPrefix.html
第一步,我在<VirtualHost></VirtualHost>
中使用了WSGISocketPrefix
apache说,WSGISocketPrefix不能在虚拟主机中使用。
所以我把WSGISocketPrefix移出了虚拟主机。
这样我得到了更多的错误比socket-user,我认为这是由sqlite版本问题造成的。
这是错误日志的最后一行。django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17).
我认为sqlite版本错误是由于在虚拟主机之外使用WSGISocketPrefix造成的。我认为它忽略了我的环境。
如果是chmod的问题,你能告诉我应该改变哪个目录吗?我已经试过一些目录了。
感谢阅读我的问题并给予出建议。
这是第一篇关于堆栈溢出的文章,我认为写作技巧会出错。(我用了谷歌翻译...)请理解。
1条答案
按热度按时间nuypyhwy1#
从以下几点开始:
1.不要在
$HOME
中创建mysite数据。1.始终使用
$HOME
以外的目录。/var/www/html/mysite
应具有apache/apache
所有者和组。理想情况下,这可以使其与正确的vhosts配置文件一起工作1.完成所有这些操作后,apache仍然没有
wsgi.py
的读取/编译权限。$HOME
下可用,但在/var/ww/html/mysite
下不可用,那么这是一个环境问题。