[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.构建项目环境

相关推荐
笨鸟先飞,勤能补拙4 小时前
AI 赋能网络安全:技术全景、成熟度评估与实战案例
人工智能·python·安全·web安全·网络安全·sqlite·github
长和信泰光伏储能5 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
浦信仿真大讲堂6 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
Gu Gu Study6 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
卷无止境7 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境7 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd1237 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
Dxy12393102168 小时前
Python项目打包成EXE完整教程(PyInstaller实战避坑)
开发语言·python
bamb008 小时前
一个项目带你入门AI应用开发01
python
0566468 小时前
Python康复训练——常用标准库
开发语言·python·学习