【发布时间】:2019-07-30 16:43:16
【问题描述】:
版本列表:
Centos 7---django 2.1.7---Apache 2.4.6---Python 3.6强>
检查 EDIT 5 以获取最新的错误日志
我可以运行 sudo systemctl start httpd,当我转到该 url 时,我得到一个内部服务器错误(底部的日志)
我的文件结构
home
└── user
└── projects
└── myapp
├── app
│ ├── <All Code for Webapp including static dir>
├── env (virtualenv)
├── manage.py
├── new
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── requirements.txt
我希望有人能在我的 httpd 文件夹中的 django.conf 中看到一个错误。并希望这些是我正在寻找的端点
编辑:此文件位于此处:/etc/httpd/conf.d/django.conf
django.conf
Alias /static /home/user/projects/myapp/app/static
<Directory /home/user/projects/myapp/app/static>
Require all granted
</Directory>
<Directory /home/user/projects/myapp/new>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIApplicationGroup %{GLOBAL}
WSGIDaemonProcess myapp python-path=/home/user/projects/myapp python-home=/home/user/projects/myapp/env
WSGIProcessGroup myapp
WSGIScriptAlias / /home/user/projects/myapp/new/wsgi.py
我不确定这些是否指向所有正确的地方,并希望有人可以再看看我。
我还没有接触过 wsgi.py,我想知道我是否遗漏了那里的任何逻辑。
我的 wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'new.settings')
application = get_wsgi_application()
EDIT2:我能够运行服务器,但出现 500 内部服务器错误,当我检查 error_logs 时,我得到了这个
更新日志
[Mon Mar 11 10:40:39.865611 2019] [core:notice] [pid 9371] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Mon Mar 11 10:40:39.868149 2019] [suexec:notice] [pid 9371] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Mon Mar 11 10:40:39.918015 2019] [auth_digest:notice] [pid 9371] AH01757: generating secret for digest authentication ...
[Mon Mar 11 10:40:39.919681 2019] [lbmethod_heartbeat:notice] [pid 9371] AH02282: No slotmem from mod_heartmonitor
[Mon Mar 11 10:40:39.948303 2019] [mpm_prefork:notice] [pid 9371] AH00163: Apache/2.4.6 (CentOS) mod_wsgi/3.4 Python/2.7.5 configured -- resuming normal operations
[Mon Mar 11 10:40:39.948370 2019] [core:notice] [pid 9371] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
[Mon Mar 11 10:40:42.878806 2019] [mime_magic:error] [pid 9376] [client ip] AH01512: mod_mime_magic: can't read `/home/user/projects/myapp/new/wsgi.py'
[Mon Mar 11 10:40:42.879459 2019] [mime_magic:error] [pid 9376] [client ip] AH01512: mod_mime_magic: can't read `/home/user/projects/myapp/new/wsgi.py'
[Mon Mar 11 10:40:42.905048 2019] [:error] [pid 9372] (13)Permission denied: [remote ip] mod_wsgi (pid=9372, process='myapp', application='<url>|'): Call to fopen() failed for '/home/user/projects/myapp/new/wsgi.py'
EDIT3
在这个日志文件中,当我运行 python3.6 而不是 2.7.5 时,它会显示 Apache/2.4.6 (CentOS) mod_wsgi/3.4 Python/2.7.5 configured,也许改变它会有所帮助?
编辑 4
所以我将我的 WSGIDaemonProcess 更改为
WSGIDaemonProcess myapp python-path=/home/user/projects/myapp python-home=/home/user/projects/app/env/lib/python3.6/site-packages user=<user>
现在我收到这些错误
[Tue Mar 12 10:38:09.111397 2019] [mime_magic:error] [pid 18804] [client ip] AH01512: mod_mime_magic: can't read `/home/user/project/myapp/new/wsgi.py'
ImportError: No module named site
ImportError: No module named site
ImportError: No module named site
所以看起来我需要卸载 mod_wsgi 并重新安装以使用 python3.6 而不是 2.7 进行编译
我怎样才能成功地做到这一点?我卸载 mod_wsgi 并尝试使用 sudo pip3.6 install mod_wsgi 进行 mreinstall 现在它无法识别 mod_wsgi 的新安装并且由于 invalid command 'WSGIDaemonProcess' 而不会启动服务器这是因为新下载没有配置 httpd?我该怎么做?
编辑 5
成功安装了用正确的python版本编译的mod_wsgi并能够运行服务器,将SELinux设置为允许摆脱cant find '/route/to/wsgi/py。现在我没有收到重复的模块名称“编码”错误。
[Wed Mar 13 15:20:46.133597 2019] [core:notice] [pid 4403] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'
[Tue Mar 12 14:11:57.520271 2019] [core:notice] [pid 866] AH00052: child pid 891 exit signal Aborted (6)
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'
目前我的权限都在用户 apache 和组 apache 下,并且似乎它们都在正确的权限下,我也尝试将 root 用户/组更改为 apache,并在 Myapp 目录中运行 chmod -R 777 以使确保它具有适当的权限。
项目下的权限:
home/user/projects# ls -l
total 0
drwxrw-r-x. 7 apache apache 109 Mar 12 12:48 myapp
home/user/projects/myapp# ls -l
myapp 下的权限:
total 12
drwxrwxr-x. 7 apache apache 4096 Mar 7 13:18 app
drwxr-xr-x. 5 apache apache 56 Mar 12 12:48 env
-rwxrwxr-x. 1 apache apache 535 Mar 5 13:33 manage.py
drwxrwxr-x. 3 apache apache 110 Mar 7 14:27 new
-rw-rw-r--. 1 apache apache 869 Mar 7 14:42 requirements.txt
【问题讨论】:
-
什么是“django.conf”?它是如何与您的 Apache 配置的其余部分相关联的?
-
它位于 /etc/httpd/conf.d/django.conf ,老实说,我不能说这一切是如何工作的,我只知道它在启动 apache 服务器时使用该文件,因为我是之前在文件上出现错误.....我在这里按照本教程进行操作:digitalocean.com/community/tutorials/…
-
添加日志检查编辑
标签: django apache mod-wsgi django-wsgi