一、如何根据日活(DAU)确定云服务器规格

购买云服务器时,盲目追求高配置会浪费成本,配置过低则会导致系统卡顿。我们需要通过业务逻辑推算出所需的性能指标。

1. 核心计算公式

QPS(每秒查询率)是衡量服务器压力的关键指标。

  • 预估日请求总量 = DAU × 平均每人每天访问页面数(通常为 10-30 次)
  • 峰值 QPS = (日请求总量 × 80%) / (24小时 × 3600秒 × 20%)
    • 解释:80% 的访问通常集中在 20% 的时间段内(如晚间高峰)。
  • 简化经验公式
    • 普通资讯/展示类:峰值 QPS ≈ DAU × 0.02
    • 轻量交互/SaaS类:峰值 QPS ≈ DAU × 0.05

2. 服务器配置推荐表

根据计算出的 QPS 和业务类型,参考以下配置建议:

DAU 级别业务场景预估峰值 QPS推荐配置 (CPU/内存)带宽架构模式
< 1,000个人博客、Demo< 201核 / 2G1-2 Mbps单机 (All-in-One)
1,000 - 5,000企业官网、小程序后端20 - 1002核 / 4G3-5 Mbps单机
5,000 - 20,000电商、教育平台、资讯站100 - 4002核 / 8G4核 / 8G5-10 MbpsWeb + DB 分离
> 20,000社交、高并发交易> 4004核 / 16G +10 Mbps+集群 + 负载均衡

二、详细环境搭建步骤

环境假设

  • 云厂商:阿里云
  • 操作系统:CentOS 7.9 (推荐使用 7 系列,稳定性好)
  • 远程工具:Xshell, FinalShell 或 VS Code

0. 系统架构图

在动手之前,请明确我们要构建的目标架构:

HTTPS Request

80/443 Port

Static Files

Dynamic Proxy

Read/Write

Cache

备份体系

Dump

整机镜像

Crontab 定时器

本地/远程备份

云盘自动快照

ECS 服务器

用户/浏览器

阿里云安全组

CentOS 防火墙

Nginx Web服务器

后端应用

MySQL/MariaDB 数据库

Redis 缓存

1. 基础环境准备

连接服务器后,首先执行基础更新和工具安装:

# 1. 更新系统内核和软件包(可选,但推荐)
yum update -y
# 2. 安装基础工具(vim, git, wget, tree等)
yum install -y vim wget git net-tools telnet lsof

2. 安装与配置 Nginx (详细版)

CentOS 默认源不包含 Nginx,我们需要先安装 EPEL 源。

步骤 A:安装 Nginx
# 1. 安装 EPEL 源
yum install -y epel-release
# 2. 安装 Nginx
yum install -y nginx
# 3. 查看 Nginx 版本(确认安装成功)
nginx -v
步骤 B:配置防火墙

重要:即使阿里云安全组放行了端口,CentOS 系统内部的防火墙(firewalld)默认也会拦截外部访问。

# 1. 启动防火墙(如果没启动)
systemctl start firewalld
# 2. 放行 HTTP (80) 和 HTTPS (443) 端口
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
# 3. 重载防火墙配置
firewall-cmd --reload
# 4. 查看已放行的端口
firewall-cmd --list-all
步骤 C:启动 Nginx 并设置开机自启
# 启动 Nginx
systemctl start nginx
# 设置开机自启
systemctl enable nginx
# 检查运行状态
systemctl status nginx
步骤 D:配置 Nginx (进阶)

Nginx 的主配置文件在 /etc/nginx/nginx.conf,站点配置通常放在 /etc/nginx/conf.d/ 下。

# 创建一个自定义配置文件
vim /etc/nginx/conf.d/my_site.conf

写入以下基础配置(反向代理示例):

server {
    listen 80;
    server_name your_domain.com; # 或者是你的公网IP
    location / {
        proxy_pass http://127.0.0.1:3000; # 假设你的后端应用跑在3000端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    # 静态文件直接由 Nginx 处理,不经过后端,提高性能
    location /static/ {
        alias /var/www/html/static/;
    }
}

修改后重载配置:

# 测试配置文件语法是否正确
nginx -t
# 重载配置(不中断服务)
nginx -s reload

此时,你可以在浏览器中输入 http://你的公网IP,应该能看到 Nginx 的默认欢迎页(或你配置的页面)。

3. 安装数据库 (MariaDB/MySQL)

在 CentOS 7 中,推荐使用 MariaDB(MySQL 的开源兼容版本,更稳定)。

# 1. 安装 MariaDB 服务端和客户端
yum install -y mariadb-server mariadb
# 2. 启动数据库
systemctl start mariadb
systemctl enable mariadb
# 3. 数据库安全初始化
mysql_secure_installation

执行 mysql_secure_installation 时的操作指引:

  • Set root password? Y (输入你的强密码)
  • Remove anonymous users? Y
  • Disallow root login remotely? Y (出于安全考虑)
  • Remove test database? Y
  • Reload privilege tables now? Y

4. 安装缓存服务

Redis 用于缓存热点数据,减轻数据库压力。

# 1. 安装 Redis
yum install -y redis
# 2. 修改配置文件以允许访问
vim /etc/redis.conf

找到以下行并修改:

  • bind 127.0.0.1 -> 改为 bind 0.0.0.0 (允许任意IP连接,**生产环境建议绑定具体IP或设置密码`)
  • protected-mode yes -> 视情况改为 no (如果改了 bind,通常为了测试方便可改,但建议配置 requirepass)
  • daemonize no -> 改为 yes (允许后台运行)
    设置密码(强烈推荐):
    在配置文件中找到 # requirepass foobared,去掉注释并改为 requirepass 你的强密码
# 3. 启动 Redis
systemctl start redis
systemctl enable redis
# 4. 测试连接
redis-cli
# 进入后输入 auth 你的密码
# 输入 ping,返回 PONG 则成功

注意:需在阿里云安全组放行 6379 端口。

5. 数据库自动备份策略

数据是企业的核心资产,必须建立双重备份机制。

A. 脚本自动备份

创建一个 Shell 脚本来定时备份数据库。

# 1. 创建备份目录
mkdir -p /data/backup/mysql
# 2. 编写脚本
vim /usr/local/scripts/mysql_backup.sh

脚本内容:

#!/bin/bash
# 定义变量
DB_USER="root"
DB_PASS="你的数据库密码"
DB_NAME="你的数据库名"
BACKUP_DIR="/data/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
# 备份文件名
FILE_NAME="$BACKUP_DIR/$DB_NAME_$DATE.sql.gz"
# 执行备份并压缩
/usr/bin/mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $FILE_NAME
# 删除 7 天前的备份
find $BACKUP_DIR -name "*.sql.gz" -type f -mtime +7 -exec rm -rf {} \;
echo "Backup Completed: $FILE_NAME"
# 3. 赋予执行权限
chmod +x /usr/local/scripts/mysql_backup.sh
# 4. 设置定时任务 (每天凌晨 3 点执行)
crontab -e
# 添加以下行
0 3 * * * /usr/local/scripts/mysql_backup.sh >> /var/log/mysql_backup.log 2>&1
B. 阿里云云盘快照

除了逻辑备份(SQL文件),必须开启系统级快照,以防系统崩溃导致无法启动。

  1. 登录阿里云控制台。
  2. 找到 存储与快照 -> 快照
  3. 创建 自动快照策略(例如:每天凌晨4点,保留7天)。
  4. 将策略应用到你的 ECS 实例的云盘上。

三、总结与检查清单

至此,你已经拥有了一个完整的服务器环境。在正式上线前,请检查以下项目:

  1. [ ] 安全组检查:确保只开放了 80, 443, 22 (SSH), 3306 (如果允许远程DB), 6379 (如果允许远程Redis)。切勿开放所有端口。
  2. [ ] 密码强度:Root 密码、数据库密码、Redis 密码是否已修改为强密码?
  3. [ ] 服务自启:运行 systemctl list-unit-files | grep enabled 确保 nginx, mariadb, redis 均为 enabled
  4. [ ] 备份测试:手动运行一次备份脚本,检查生成的 SQL 文件是否完整且可导入。
    这套方案以 Nginx 作为流量的入口守门员,MariaDB 负责数据持久化,Redis 提供高速缓存,配合 阿里云快照本地脚本 实现数据双保险,足以支撑中型 Web 业务的稳定运行。

更多推荐