如何解决Apache2 + wsgi + mysql 不工作,但从 Django 开始工作
我已经更新了我的服务器,现在我在 Django 下的网站出现了问题。
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: cannot allocate memory in static TLS block
...
[Sat Jul 03 00:50:56.975729 2021] [wsgi:error] [pid 5009] [client 93.21.219.190:57598] File "Django-2.1/django/db/backends/mysql/base.py",line 15,in <module>
[Sat Jul 03 00:50:56.975744 2021] [wsgi:error] [pid 5009] [client 93.21.219.190:57598] import MySQLdb as Database
[Sat Jul 03 00:50:56.975766 2021] [wsgi:error] [pid 5009] [client 93.21.219.190:57598] File "/usr/local/lib/python3.8/dist-packages/MySQLdb/__init__.py",line 24,in <module>
[Sat Jul 03 00:50:56.975805 2021] [wsgi:error] [pid 5009] [client 93.21.219.190:57598] version_info,_mysql.version_info,_mysql.__file__
[Sat Jul 03 00:50:56.975850 2021] [wsgi:error] [pid 5009] [client 93.21.219.190:57598] NameError: name '_mysql' is not defined
我找到了一些解决方案,但没有任何效果。
我已经重新安装了 mod_wsgi 和 mysqlclient :
pip3 install mod_wsgi
pip3 install mysqlclient
wsgi 链接到 libpython3.8 和 _mysql.cpython-38-x86_64-linux-gnu.sois 链接到
ldd /usr/lib/apache2/modules/mod_wsgi.so
linux-vdso.so.1 (0x00007ffff394b000)
libpython3.8.so.1.0 => /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0 (0x00007f6a1fa15000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f6a1f9f3000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6a1f82e000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f6a1f7ff000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f6a1f7e2000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f6a1f7a7000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f6a1f79f000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f6a1f79a000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f6a1f656000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6a1ffc9000)
ldd /usr/local/lib/python3.8/dist-packages/MySQLdb/_mysql.cpython-38-x86_64-linux-gnu.so
linux-vdso.so.1 (0x00007ffccf18f000)
libmysqlclient.so.21 => /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21 (0x00007efe00610000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007efe0044b000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007efe00429000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007efe00423000)
libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007efe00391000)
libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007efe000a5000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007efe00089000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007efe0007e000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007efdffeb1000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007efdffd6d000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007efdffd53000)
/lib64/ld-linux-x86-64.so.2 (0x00007efe00d2c000)
ls /usr/lib/x86_64-linux-gnu/libmysqlclient.so.21
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.21
ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 18 juil. 2 23:19 /usr/bin/python3 -> /usr/bin/python3.8
如果我运行我的 django shell,我可以导入 mysqldb :
python3 manage.py shell
import MySQLdb as Database
Here I can query the database with Model.objects.filter(...)
总结:从 django shell 来看,它正在运行,从 apache2 来看,它不起作用。我不明白发生了什么:/
解决方法
我在使用 Apache Airflow 时遇到了类似的问题,它在 docker 容器中运行。
添加 0
作为环境变量为我解决了这个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。