Discuz! BBS

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 160|回复: 3

debian 部署 Django

[复制链接]

504

主题

691

帖子

4099

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4099
发表于 2026-4-12 06:44:19 | 显示全部楼层 |阅读模式
一、编译安装python3.6:
先按装支持库:
  1. sudo apt-get update
  2. sudo apt-get install -y \
  3.     build-essential \
  4.     zlib1g-dev \
  5.     libncurses5-dev \
  6.     libncursesw5-dev \
  7.     libreadline-dev \
  8.     libdb5.3-dev \
  9.     libgdbm-dev \
  10.     libsqlite3-dev \
  11.     libssl-dev \
  12.     libbz2-dev \
  13.     libexpat1-dev \
  14.     liblzma-dev \
  15.     tk-dev \
  16.     libffi-dev
复制代码



编译方法:
  1. cd /tmp
  2. wget https://www.python.org/ftp/python/3.6.15/Python-3.6.15.tgz
  3. tar -xvf Python-3.6.15.tgz
  4. cd Python-3.6.15
  5. ./configure --enable-optimizations --enable-shared CFLAGS=-fPIC
  6. make -j$(nproc)
  7. sudo make altinstall
复制代码

二、在安装好了python3.6之后,运行:
  1. sudo python3.6 -m pip install mod-wsgi
复制代码

之后,找到mod-wsgi.load 配置文件( /etc/apache2/mods-avaliable/)
打开该文件,看看内容指向哪里(比如  /usr/local/apache2/modules/mod-wsgi.so)

然后,寻找python3.6版的mod-wsgi.so:
  1. sudo find / -name "mod-wsgi.*py36.*.so" 2>/dev/null
复制代码

找到之后,进入/usr/local/apache2/modules/, 发现mod-wsgi.so 是一个软连接,删除它,建立到python3.6版so的软连接( ln -s  实体名 mod-wsgi.so )


以上为安装python36使用的mod-wsgi版本.so。
三、重启apache2:
  1. sudo apache2ctl configtest
  2. #  如果都报语法ok
  3. sudo systemctl start apache2
复制代码




回复

使用道具 举报

504

主题

691

帖子

4099

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4099
 楼主| 发表于 2026-4-13 03:00:16 | 显示全部楼层
出错:
看到 RuntimeError: The 'apxs' command appears not to be installed 这个报错,说明你在尝试通过 pip 安装 mod_wsgi 时失败了。

简单来说,mod_wsgi 是一个 Apache 的模块,它需要“嵌入”到 Apache 中运行。为了编译这个模块,安装程序必须找到 Apache 的开发工具包,其中最核心的工具就是 apxs(Apache eXtenSion tool)。
你的系统里目前只有 Apache 的运行程序,缺少了开发头文件和工具。

  1. sudo apt-get install apache2-dev
复制代码


重新安装 mod_wsgi:
安装完上述工具后,apxs 命令就会存在了。现在你可以重新运行之前的安装命令:
  1. # 确保先激活你的虚拟环境
  2. source /var/www/Yourprogramme/venv/bin/activate

  3. # 再次安装
  4. pip install mod-wsgi
复制代码
回复

使用道具 举报

504

主题

691

帖子

4099

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4099
 楼主| 发表于 2026-4-13 03:09:11 | 显示全部楼层
出错:
restart apache2有错误:apache2: Syntax error on line 146 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/wsgi.load: Cannot load /usr/lib/apache2/modules/mod_wsgi-py36.so into server: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

这个错误非常明确:Apache 启动时加载 mod_wsgi 模块失败了,原因是系统找不到 Python 3.6 的动态链接库文件 libpython3.6m.so.1.0。
这通常发生在你使用源码编译安装了 Python 3.6,但系统(以及 Apache)并不知道这个库文件在哪里。
别担心,我们可以通过配置系统库路径来解决这个问题。请按照以下步骤操作:

第一步:找到缺失的库文件
首先,我们需要确认 libpython3.6m.so.1.0 文件确实在你的系统中,并找到它的确切位置。
在终端执行以下命令:
  1. sudo find / -name "libpython3.6m.so.1.0" 2>/dev/null
复制代码


你会得到一个类似这样的路径(请记下这个路径):
/usr/local/lib/libpython3.6m.so.1.0

第二步:配置系统识别该库(推荐方法)
找到文件后,我们需要告诉操作系统:“去这个目录里找库文件”。最标准的方法是将其添加到系统的库配置中。
创建配置文件
在 /etc/ld.so.conf.d/ 目录下创建一个新的配置文件(假设你找到的文件在 /usr/local/lib):
  1. sudo nano /etc/ld.so.conf.d/python3.6.conf
复制代码

写入路径
在文件中写入包含 libpython3.6m.so.1.0 的目录路径(不要包含文件名本身):
  1. /usr/local/lib
复制代码


更新缓存
保存文件后(在 nano 中按 Ctrl+O 回车保存,Ctrl+X 退出),立即运行以下命令更新系统库缓存:
  1. sudo ldconfig
复制代码


第三步:重启 Apache
现在系统已经知道去哪里找 Python 3.6 的库了,尝试重新启动 Apache:
  1. sudo systemctl restart apache2
复制代码



回复

使用道具 举报

504

主题

691

帖子

4099

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4099
 楼主| 发表于 2026-4-30 20:07:49 | 显示全部楼层
Current thread 0x00007c0c8f22b780 (most recent call first):
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

这个是mod_wsgi 没有装。用目标python重新安装mod_wsgi:
  1. /home/yourusername/.pyenv/versions/3.6.15/bin/pip3 install mod_wsgi
复制代码
获取Apache模块位置:
  1. /home/yourusername/.pyenv/versions/3.6.15/bin/mod_wsgi-express install-module
复制代码
将输出的两行(loadModule 和 WSGIPythonHome)加入apache配置。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2026-5-16 14:40 , Processed in 0.014082 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表