Node.js + Express 项目完整搭建手册(Redis + MySQL + 常用中间件)

本文全程基于 Express 实现后端服务,包含 Redis 缓存配置、MySQL 连接、外网访问、安全加固、常用中间件,可直接用于生产环境,新手也能快速落地。

一、新建项目

快速初始化一个 Express 项目:

bash 复制代码
# 初始化 npm 项目(一路回车即可)
npm init -y
# 安装 Express 核心框架
npm install express
# 启动服务
node app.js

二、Redis 中间件

Redis 用于数据缓存、减轻数据库压力,是后端必备中间件。

1、安装 Redis

bash 复制代码
# 群晖 NAS:直接在套件中心安装
# macOS 本地安装:
brew install redis

# 临时启动(关闭终端即停止)
redis-server
# 后台启动 + 开机自启(推荐)
brew services start redis
# 关闭 + 取消自启
brew services stop redis

2、连通性测试

bash 复制代码
# 只测试端口通不通(网络层)
nc -zv zhanglei.nasfuns.fun 6379
# 真正连接 Redis 验证权限(最准确)
redis-cli ping
redis-cli -h zhanglei.nasfuns.fun -p 6379 ping

3、允许外网访问(群晖 / Linux 通用)

bash 复制代码
# 查找 redis.conf 配置文件位置
find / -name "redis.conf" 2>/dev/null
# 编辑配置(群晖示例路径)
vi /volume1/@appdata/redis/redis.conf

修改以下两项:

bash 复制代码
# 允许所有 IP 访问
bind 127.0.0.1 -::1
bind 0.0.0.0

# 关闭保护模式(必须改,否则外网连不上)
protected-mode yes
protected-mode no

修改完成后重启 Redis生效。

4、设置密码 + 安全加固

方式 1:修改配置文件(永久生效)
bash 复制代码
# redis.conf 添加密码
requirepass 123456

项目连接地址格式:

js 复制代码
# 无密码
url: 'redis://zhanglei.nasfuns.fun:6379'
# 有密码(格式:redis://:密码@主机:端口)
url: 'redis://:123456@zhanglei.nasfuns.fun:6379'

命令行带密码测试:

bash 复制代码
# 带密码
redis-cli -h zhanglei.nasfuns.fun -p 6379 -a 123456 ping
# 无密码
redis-cli -h zhanglei.nasfuns.fun -p 6379 ping
方式 2:redis-cli 动态设置(无需重启)

注意:密码建议纯字母 + 数字 ,特殊符号 ! # & 会导致连接报错

bash 复制代码
# 登录(无密码、有密码)
redis-cli
redis-cli -a 123456

# 不用重启 Redis,改完立即生效
CONFIG SET requirepass "123456"							 # 开启密码
CONFIG SET bind 0.0.0.0 										 # 允许外网访问(你必须要)
CONFIG SET protected-mode no           			 # 关闭保护模式(必须)
CONFIG SET rename-command CONFIG "DISABLED"  # 禁用改配置(防入侵)
CONFIG SET rename-command FLUSHDB "DISABLED" # 禁删库
CONFIG SET rename-command FLUSHALL "DISABLED"# 禁删全库

save 																				 # 不save重启redis就会丢失
exit

三、MySQL 连接与使用

bash 复制代码
# 查看 MySQL 版本
mysql --version
# MySQL 8.0 低版本登录
mysql -u root -p1234567890 -P 3307 --ssl=0
# MySQL 8.0 以上高版本登录
mysql -u root -p1234567890 -P 3307 --ssl-mode=DISABLED
# 修改密码
SET PASSWORD = PASSWORD('1234567890'); 				# mysql5.7低版本 
ALTER USER USER() IDENTIFIED BY '1234567890'; # mysql8.0+高版本
FLUSH PRIVILEGES;															# 立即生效
exit;


四、可运行Demo与git步骤

下载demo

附录:Express 常用中间件(必备)

4 类必备:web 服务 + 数据库 + 鉴权安全 + 工具日志

1、核心中间件(内置,无需安装)

中间件 作用
express.json() 解析 JSON 请求体
express.urlencoded() 解析表单格式数据
express.static() 托管静态资源
express.Router() 路由模块化拆分

2、常用第三方中间件(需安装)

中间件 作用
cors 解决跨域
morgan HTTP 请求日志
helmet 安全防护(XSS/CSRF)

3、项目必备工具库(必装依赖)

  • express ------ Web 框架(接口服务)
  • mysql2 ------ MySQL 数据库连接
  • redis ------ Redis 缓存
  • jsonwebtoken ------ JWT 登录鉴权
  • cors ------ 跨域处理
  • dotenv ------ 环境配置管理
  • morgan ------ 请求日志
  • bcryptjs ------ 密码加密
相关推荐
我不会起名字3221 小时前
Redis pipeline 用了反而更慢:3 类误用与正确的批量姿势
redis·pipeline·lua·rtt·批量
Tsuki_tl2 小时前
【总结】Redis五大数据类型应用场景及基本命令
数据库·redis·后端·缓存·缓存中间件·redis命令·redis 五大数据类型
SomeOtherTime2 小时前
node.js基础(AI回答)
node.js
代码丰17 小时前
大 JSON 放进 Redis 之后,如何用 Stream 解耦耗时任务?
redis·后端·系统架构
枫子有风20 小时前
卡码网盘项目深挖
java·redis·jwt·es·pgvector
福大大架构师每日一题20 小时前
redis 8.10.3正式发布:聚焦集群总线超大消息传播场景的安全修复,8.10.3 Latest更新解读
数据库·redis·安全
雨季mo浅忆1 天前
记录Node.js安全漏洞及其内置Brotli解码器问题
node.js·安全性测试
江屿风1 天前
【Plain Language Large Model】【从麦当劳点餐到Redis接入:MCP如何让AI工具集成变简单】流食般投喂
人工智能·redis·笔记·语言模型·llm·mcp
tommyjiatong1 天前
资安底座连环雷:从 PHP2Shell 到 Node2Shell
node.js·php
码智社1 天前
Redis 哨兵模式详解:从原理到生产实践
java·redis