问题:遵循Django Web应用程序的标准设置。我正在使用Ubuntu 18.04,Django 2.2.1,Python 3.7,Apache 2.4.29,mod-WSGI 4.6.7和virtualenv来创建virtualenv。当我尝试访问我的站点(IP或FQDN)时,出现504网关超时错误
我检查Apache2日志并每隔一秒钟收到以下错误:
当前线程0x00007f52f8874bc0(最近调用优先):[2019年9月23日星期一02:49:26.540404] [core:notice] [pid 9896:tid 139994333662144] AH00051:孩子pid 10305退出信号异常终止(6),/ etc / apache2中可能有coredump致命的Python错误:Py_Initialize:无法获取区域设置编码ModuleNotFoundError:没有名为“ encodings”的模块
python manage.py runserver运行正常,我可以从其他设备通过浏览器通过IP或FQDN进行访问。数据库没有任何问题,也没有其他问题(尽管使用FQDN而不是IP#我在CSS / JS上遇到404错误,尽管负载很重-但这可能是一个单独的问题)
我尝试过:*重置virtualenv*重置Apache2*不同的Apache .conf安排*我在PyCon Au 2010上观看了@Graham Dumpleton的精彩视频“ Apache / mod_wsgi入门”。并尝试实现他的一些见解
Apache2 Conf
WSGIRestrictEmbedded On
<VirtualHost *:80>
...
...
...
Alias /static /project/static
<Directory /project/static>
Require all granted
</Directory>
Alias /media /project/media
<Directory /project/media>
Require all granted
</Directory>
<Directory /project/main>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess django_app python-path=/project python-home=/project/venv
WSGIScriptAlias / /project/main/wsgi.py process-group=django_app
WSGIProcessGroup django_app
WSGIApplicationGroup %{GLOBAL}
</VirtualHost>
Apache2错误文件
Current thread 0x00007f52f8874bc0 (most recent call first):
[Mon Sep 23 02:49:26.540404 2019] [core:notice] [pid 9896:tid 139994333662144] AH00051: child pid 10305 exit signal Aborted (6), possible coredump in /etc/apache2
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'
UFW状态
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
更新:感谢下面的Graham链接,我能够使它工作。我相信我已经通过apt-get install在系统上安装了libapache2-mod-wsgi-py3。我还尝试了在Python虚拟环境处于活动状态时通过pip安装mod-wsgi,但两者均无效。我检查了mod-wsgi.so和mod-wsgi.so-python3.6(或类似名称的文件,指示Python 3.6),看起来mod-wsgi.so被链接到python 3.6 .so文件。
SOLUTION:我从系统中清除了libapache2-mod-wsgi-py3,并按照Graham的建议遵循了https://modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html上的安装说明指南。我确保使用./configure --with-python = / path / to / virtualenv / python来确保使用正确的Python来安装mod-wsgi。
这解决了问题。谢谢@Graham Dumpleton。