云服务器购买与配置指南
·
文章目录
一、如何根据日活(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 | < 20 | 1核 / 2G | 1-2 Mbps | 单机 (All-in-One) |
| 1,000 - 5,000 | 企业官网、小程序后端 | 20 - 100 | 2核 / 4G | 3-5 Mbps | 单机 |
| 5,000 - 20,000 | 电商、教育平台、资讯站 | 100 - 400 | 2核 / 8G 或 4核 / 8G | 5-10 Mbps | Web + DB 分离 |
| > 20,000 | 社交、高并发交易 | > 400 | 4核 / 16G + | 10 Mbps+ | 集群 + 负载均衡 |
二、详细环境搭建步骤
环境假设:
- 云厂商:阿里云
- 操作系统:CentOS 7.9 (推荐使用 7 系列,稳定性好)
- 远程工具:Xshell, FinalShell 或 VS Code
0. 系统架构图
在动手之前,请明确我们要构建的目标架构:
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文件),必须开启系统级快照,以防系统崩溃导致无法启动。
- 登录阿里云控制台。
- 找到 存储与快照 -> 快照。
- 创建 自动快照策略(例如:每天凌晨4点,保留7天)。
- 将策略应用到你的 ECS 实例的云盘上。
三、总结与检查清单
至此,你已经拥有了一个完整的服务器环境。在正式上线前,请检查以下项目:
- [ ] 安全组检查:确保只开放了 80, 443, 22 (SSH), 3306 (如果允许远程DB), 6379 (如果允许远程Redis)。切勿开放所有端口。
- [ ] 密码强度:Root 密码、数据库密码、Redis 密码是否已修改为强密码?
- [ ] 服务自启:运行
systemctl list-unit-files | grep enabled确保 nginx, mariadb, redis 均为enabled。 - [ ] 备份测试:手动运行一次备份脚本,检查生成的 SQL 文件是否完整且可导入。
这套方案以 Nginx 作为流量的入口守门员,MariaDB 负责数据持久化,Redis 提供高速缓存,配合 阿里云快照 和 本地脚本 实现数据双保险,足以支撑中型 Web 业务的稳定运行。
更多推荐
所有评论(0)