[Django-web]1.环境准备

1.安装Python3.12.13

root@ali-lite-web \~# df -h

文件系统 容量 已用 可用 已用% 挂载点

devtmpfs 916M 0 916M 0% /dev

tmpfs 936M 20K 936M 1% /dev/shm

tmpfs 936M 504K 936M 1% /run

tmpfs 936M 0 936M 0% /sys/fs/cgroup

/dev/vda3 40G 11G 27G 29% /

/dev/vda2 200M 5.8M 194M 3% /boot/efi

tmpfs 188M 0 188M 0% /run/user/0
wget https://ftp.python.org/ftp/python/3.12.13/Python-3.12.13.tar.xz

tar xfv Python-3.12.13.tar.xz

cd Python-3.12.13/

./configure --enable-optimizations --prefix=/usr/local/python3.12

make -j $(nproc) # 使用所有CPU核心加速编译

sudo make altinstall # 使用 altinstall 而不是 install

mv /usr/bin/python /usr/bin/python-bk

mv /usr/bin/python3 /usr/bin/python3-bk

创建新链接

sudo ln -s /usr/local/python3.12/bin/python3.12 /usr/bin/python3

sudo ln -s /usr/local/python3.12/bin/python3.12 /usr/bin/python

同样处理 pip3

sudo mv /usr/bin/pip3 /usr/bin/pip3-bk

sudo ln -s /usr/local/python3.12/bin/pip3.12 /usr/bin/pip3

sudo ln -s /usr/local/python3.12/bin/pip3.12 /usr/bin/pip

2.修改MySQL配置

-- 1. 修改 localhost 的 root 密码

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

-- 2. 检查是否存在 'root'@'%' 用户

SELECT user, host FROM mysql.user WHERE user = 'root';

-- 3. 如果存在,先删除(可选,确保唯一性)

DROP USER IF EXISTS 'root'@'%';

-- 4. 创建允许任何主机登录的 root 用户,并授予所有权限

CREATE USER 'root'@'%' IDENTIFIED BY '123456';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- 5. 刷新权限

FLUSH PRIVILEGES;

-- 6. 退出

EXIT;

3.安装docker

卸载旧版本(如果存在)

sudo yum remove docker \

docker-client \

docker-client-latest \

docker-common \

docker-latest \

docker-latest-logrotate \

docker-logrotate \

docker-engine

配置docker yum源。

sudo yum install -y yum-utils

sudo yum-config-manager \

--add-repo \

http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 最新 docker

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

配置加速

复制代码
方案二:使用阿里云内网镜像加速服务(如果可用,推荐)
如果您的阿里云账号有容器镜像服务(ACR),
通常它会提供一个内网可访问的 docker.io镜像加速地址,
格式如 https://<企业版实例ID>.mirror.aliyuncs.com。您需要:
1.登录阿里云容器镜像服务控制台。
2.在"镜像加速器"页面找到正确的、用于 docker.io的镜像加速器地址。
3.将这个地址配置到 /etc/docker/daemon.json的 registry-mirrors中,然后重启 Docker。

sudo mkdir -p /etc/docker

vim daemon.json

{

"registry-mirrors": [

"https://docker.m.daocloud.io"

]

}

sudo systemctl daemon-reload

sudo systemctl restart docker

启动& 开机启动docker; enable + start

systemctl enable docker --now

4.安装redis

wget https://download.redis.io/releases/redis-7.4.0.tar.gz

tar -zxvf redis-7.4.0.tar.gz -C /usr/local

cd /usr/local/redis-7.4.0

make

make install

安装到 /usr/local/bin 目录:

root@ali-lite-web redis-7.4.0# ll /usr/local/bin/

total 46272

lrwxrwxrwx 1 root root 15 Dec 9 2024 aliyun -> /usr/bin/aliyun

-rwxr-xr-x 1 root root 1776 Dec 25 2024 jemalloc-config

-rwxr-xr-x 1 root root 145 Dec 25 2024 jemalloc.sh

-rwxr-xr-x 1 root root 179069 Dec 25 2024 jeprof

-rwxr-xr-x 1 root root 1461 Dec 25 2024 libmcrypt-config

lrwxrwxrwx 1 root root 18 Dec 1 19:09 luajit -> luajit-2.1.0-beta3

-rwxr-xr-x 1 root root 4309040 Dec 1 19:09 luajit-2.1.0-beta3

-rwxr-xr-x 1 root root 356728 Dec 25 2024 mcrypt

lrwxrwxrwx 1 root root 6 Dec 25 2024 mdecrypt -> mcrypt

-rwxr-xr-x 1 root root 9413344 Mar 25 23:15 redis-benchmark

lrwxrwxrwx 1 root root 12 Mar 25 23:15 redis-check-aof -> redis-server

lrwxrwxrwx 1 root root 12 Mar 25 23:15 redis-check-rdb -> redis-server

-rwxr-xr-x 1 root root 10471368 Mar 25 23:15 redis-cli

lrwxrwxrwx 1 root root 12 Mar 25 23:15 redis-sentinel -> redis-server

-rwxr-xr-x 1 root root 22620640 Mar 25 23:15 redis-server

-rwxr-xr-x 1 root root 244 Jan 2 12:45 virtualenv

sudo mkdir /etc/redis

sudo vim /etc/redis/redis.conf

复制代码
bind 0.0.0.0
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile /var/log/redis/redis_6379.log

# 添加/修改:禁用空闲连接超时(0 表示永不超时)
timeout 0
tcp-keepalive 300

# dir 定义了Redis 工作目录,所有持久化文件(RDB快照、AOF日志)都会保存在这个目录下
dir /var/lib/redis

# 持久化设置(可选)
save 900 1
save 300 10
save 60 10000

# 安全设置(可选)
requirepass 123456

# 配置用于加载 RedisJSON 模块,让Redis原生支持 JSON数据类型 的操作。
loadmodule /usr/lib/redis/modules/rejson.so

# 设置为 no:关闭保护模式,允许任何IP连接(无论是否有密码),默认是yes
# protected-mode no

sudo mkdir -p /var/lib/redis /var/log/redis

sudo chown -R redis:redis /var/lib/redis /var/log/redis (可选)

sudo chmod 770 /var/lib/redis /var/log/redis

==================

创建 redis 用户:

sudo useradd -r -M -U -s /bin/false redis

参数 含义 作用
-r --system 创建系统用户(UID < 1000),而非普通用户
-M --no-create-home 不创建用户的家目录
-U --user-group 创建与用户名同名的用户组
-s /bin/false --shell /bin/false 设置登录 shell 为 /bin/false禁止登录
redis 用户名 创建的用户名

创建 systemd 服务文件

sudo vim /etc/systemd/system/redis.service

bash 复制代码
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target
bash 复制代码
[Unit]
# 单元描述
Description=Redis persistent key-value database
# 在网络服务启动后再启动Redis
After=network.target

[Service]
# 启动类型
Type=simple
# 以哪个用户和组运行Redis服务
User=redis
Group=redis
# Redis服务的主进程命令
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
# 优雅停止Redis的命令
ExecStop=/usr/local/bin/redis-cli shutdown
# 如果进程崩溃,在5秒后自动重启
Restart=always
RestartSec=5
# 资源限制(可选但推荐)
# LimitNOFILE=65536
# 安全设置(可选但推荐)
# 禁止写入大部分文件系统
ProtectSystem=strict
# 设置私有临时目录
PrivateTmp=true
# 限制访问/home、/root、/run/user等目录
ProtectHome=true
# 防止修改内核参数
NoNewPrivileges=true
# 限制可访问的目录
ReadWritePaths=/var/lib/redis /var/log/redis
# 标准输出和错误输出重定向到系统日志
StandardOutput=journal
StandardError=journal

[Install]
# 指定在哪个系统运行级别启用服务
WantedBy=multi-user.target

sudo systemctl daemon-reload

sudo systemctl enable redis

sudo systemctl start redis
启动时发现redis一直重启:

方案 1:检查并修复 daemonize 配置(最常见)

Redis 配置中的 daemonize 设置与 systemd 服务类型冲突:

bash

复制代码
# 查看当前配置
grep "^daemonize" /etc/redis/redis.conf

如果显示 daemonize yes

  • 问题:Redis 会 fork 到后台运行,主进程立即退出

  • systemd 认为进程已退出,触发重启循环,因此将配置文件中的daemonize 设置为no

编译:rejson.so模块

步骤 1:安装编译所需依赖

复制代码
# 安装开发工具和依赖
sudo yum groupinstall -y "Development Tools"
sudo yum install -y cmake clang git

步骤 2:安装 Rust 环境

RedisJSON 最新版本依赖 Rust 进行编译。如果希望使用最新版,需要先安装 Rust:

复制代码
# 下载并安装 Rust(安装过程中选择默认选项即可)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 使环境变量生效
source $HOME/.cargo/env

# 验证安装
rustc --version

步骤 3:克隆 RedisJSON 仓库并编译

进入常用的源码目录

cd /usr/local/src

克隆 RedisJSON 仓库

git clone https://github.com/RedisJSON/RedisJSON.git

进入目录

cd RedisJSON

编译模块(这一步会生成 lib rejson.so 文件)

cargo build --release

步骤 4:放置模块文件并配置权限

复制代码
# 创建存放 Redis 模块的目录
sudo mkdir -p /usr/lib/redis/modules

# 将编译好的模块文件复制过去
sudo cp target/release/librejson.so /usr/lib/redis/modules/

# 设置正确的所有者和权限
sudo chown redis:redis /usr/lib/redis/modules/librejson.so
sudo chmod 755 /usr/lib/redis/modules/librejson.so

步骤 5:修改 Redis 配置文件

复制代码
# 编辑 Redis 配置文件
sudo vi /etc/redis.conf

# 在文件末尾添加以下一行
loadmodule /usr/lib/redis/modules/librejson.so

步骤 6:重启 Redis 并验证

bash

复制代码
# 重启 Redis 服务
sudo systemctl restart redis

# 连接 Redis 并查看已加载模块
redis-cli
127.0.0.1:6379> MODULE LIST
# 输出中应该包含类似 "name" "ReJSON" 的信息

如果发现远程无法连接redis,检查阿里云服务器的防火墙:

5.构建项目环境

相关推荐
NiceCloud喜云2 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
AI玫瑰助手2 小时前
Python函数:默认参数的定义与注意事项
开发语言·python·信息可视化
weixin_468466852 小时前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
小糖学代码3 小时前
LLM系列:环境搭建:5.Python-dotenv 环境变量管理
人工智能·python·深度学习·神经网络
智慧物业老杨3 小时前
智慧物业合同周期管理系统:从风险预警到智能交接的全流程数智化落地方案
java·人工智能·python
橙橙笔记3 小时前
Python的学习第一部分
python·学习
voidmort4 小时前
3. 微调(Fine-tuning)与强化学习(RL)的核心思想
python·深度学习·算法
biter down5 小时前
基于 Pywinauto 的 QQ 音乐 GUI 自动化测试实践
python
人道领域5 小时前
【LeetCode刷题日记】669.修剪二叉搜索树
开发语言·python·算法
EntyIU6 小时前
mineru从安装部署到测试使用完整指南
python·ocr