首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache2 + wsgi + mysql不工作,但来自Django的它正在工作

Apache2 + wsgi + mysql不工作,但来自Django的它正在工作
EN

Stack Overflow用户
提问于 2021-07-02 22:57:56
回答 1查看 149关注 0票数 0

我已经更新了我的服务器,现在我在Django下的网站出现了问题。

代码语言:javascript
复制
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:

代码语言:javascript
复制
pip3 install mod_wsgi
pip3 install mysqlclient

wsgi链接到libpython3.8和_mysql.cpython-38-x86_64-linux-gnu.sois

代码语言:javascript
复制
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

如果运行 shell,可以导入mysqldb :

代码语言:javascript
复制
python3 manage.py shell
import MySQLdb as Database
Here I can query the database with Model.objects.filter(...)

总结:从django外壳来看,它是工作的,而从apache2,它是不工作的。我不明白发生了什么

EN

回答 1

Stack Overflow用户

发布于 2021-08-06 15:39:30

我遇到了一个类似的问题,Apache的气流,运行在一个码头容器。

LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6添加为env为我解决了这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68232012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档