云服务器部署 Linux
章节介绍
云服务器是一种基于云计算技术的虚拟服务器,它允许用户通过互联网远程访问和管理。与传统物理服务器相比,云服务器具有弹性扩展、按需付费、高可用性等优势。本教程将详细介绍云服务器的概念、主流云平台的选择、Linux 实例的创建与配置、系统初始化、安全加固以及日常管理,帮助你快速掌握云服务器的部署和运维技能。
核心知识点
云服务器概述
什么是云服务器?
- 定义:基于云计算技术的虚拟服务器
- 特点:
- 弹性扩展:根据需求调整资源
- 按需付费:按实际使用计费
- 高可用性:多副本存储,故障自动迁移
- 易管理:通过 Web 控制台远程管理
- 快速部署:几分钟内完成实例创建
云服务器与传统服务器的对比
| 特性 | 云服务器 | 传统物理服务器 |
|---|---|---|
| 部署时间 | 分钟级 | 天/周级 |
| 成本 | 按需付费,低起步 | 一次性高投入 |
| 扩展性 | 弹性伸缩 | 硬件限制 |
| 维护 | 云厂商负责基础设施 | 自行维护 |
| 可靠性 | 多可用区,高可用 | 单点故障风险 |
| 安全性 | 多层安全防护 | 自行搭建 |
云服务器的应用场景
- 网站托管:个人网站、企业官网
- 应用部署:Web 应用、移动应用后端
- 数据库服务:MySQL、PostgreSQL 等
- 开发测试:开发环境、测试环境
- 大数据处理:数据存储、分析
- 游戏服务器:游戏后端、实时对战
主流云平台介绍
国内云平台
阿里云
- 特点:国内市场份额第一,产品丰富,服务完善
- 优势:节点覆盖广,网络稳定,支持多种实例类型
- 官网:https://www.aliyun.com
- 适合场景:企业级应用、高并发网站
腾讯云
- 特点:游戏、社交领域优势明显,价格实惠
- 优势:与微信生态集成,适合移动应用
- 官网:https://cloud.tencent.com
- 适合场景:游戏服务器、移动应用后端
华为云
- 特点:技术实力强,安全合规,政企客户首选
- 优势:自主研发,安全可靠,支持国产化
- 官网:https://www.huaweicloud.com
- 适合场景:政企应用、安全要求高的场景
百度智能云
- 特点:AI 能力突出,搜索技术优势
- 优势:AI 服务丰富,适合智能应用
- 官网:https://cloud.baidu.com
- 适合场景:AI 应用、搜索相关服务
国际云平台
Amazon Web Services (AWS)
- 特点:全球市场份额第一,产品最丰富
- 优势:全球节点多,服务完善,生态成熟
- 官网:https://aws.amazon.com
- 适合场景:全球业务、大型企业
Microsoft Azure
- 特点:与微软产品集成度高,企业级服务
- 优势:Windows 生态,混合云能力强
- 官网:https://azure.microsoft.com
- 适合场景:企业级应用、混合云部署
Google Cloud Platform (GCP)
- 特点:AI 和大数据能力突出,网络性能好
- 优势:全球网络,容器服务强
- 官网:https://cloud.google.com
- 适合场景:AI 应用、数据处理、容器部署
云服务器实例创建
选择实例规格
实例类型:
- 通用型:均衡的 CPU、内存和网络性能
- 计算型:高 CPU 性能,适合计算密集型应用
- 内存型:高内存配置,适合内存密集型应用
- 存储型:高存储性能,适合大数据应用
- GPU 型:适合 AI、图形处理等场景
配置选择:
- CPU:根据应用负载选择(1-16核)
- 内存:根据应用需求选择(1-64GB)
- 存储:
- 系统盘:20-100GB SSD
- 数据盘:根据数据量选择
- 带宽:根据访问量选择(1-100Mbps)
选择镜像
Linux 发行版选择:
- Ubuntu:用户友好,更新频繁
- CentOS:稳定可靠,企业首选
- Debian:轻量稳定,适合服务器
- Alpine Linux:极致轻量,适合容器
镜像类型:
- 公共镜像:云厂商提供的官方镜像
- 自定义镜像:基于现有实例创建的镜像
- 共享镜像:其他用户共享的镜像
- 市场镜像:预配置了应用的镜像
网络配置
网络类型:
- **专有网络 (VPC)**:隔离的网络环境,更安全
- 经典网络:共享网络,配置简单
IP 地址:
- 公网 IP:可通过互联网访问
- 私网 IP:仅内网访问
安全组:
- 控制入站和出站流量
- 配置规则允许特定端口访问
实例创建步骤
以阿里云为例:
登录阿里云控制台:
- 访问 https://console.aliyun.com
- 使用账号密码登录
进入云服务器 ECS 控制台:
- 产品与服务 -> 云服务器 ECS
创建实例:
- 点击"创建实例"
- 选择付费方式(包年包月/按量付费)
- 选择地域和可用区
- 选择实例规格
- 选择镜像(Ubuntu 22.04 LTS)
- 配置存储
- 配置网络和安全组
- 设置登录密码或 SSH 密钥
- 确认配置并购买
等待实例创建完成:
- 实例状态变为"运行中"
- 获取公网 IP 地址
以腾讯云为例:
登录腾讯云控制台:
- 访问 https://console.cloud.tencent.com
- 使用账号密码登录
进入云服务器 CVM 控制台:
- 云产品 -> 云服务器 CVM
创建实例:
- 点击"新建"
- 选择计费模式
- 选择地域和可用区
- 选择实例规格
- 选择镜像
- 配置存储
- 配置网络
- 设置安全组
- 设置登录方式
- 确认配置并购买
系统初始化配置
首次登录
使用密码登录:
# Windows 用户使用 PuTTY 或 Windows Terminal
# Linux/macOS 用户使用终端
ssh root@your_public_ip
# 输入密码使用 SSH 密钥登录:
# Windows 用户
putty -i private_key.ppk root@your_public_ip
# Linux/macOS 用户
chmod 600 private_key.pem
ssh -i private_key.pem root@your_public_ip系统更新
Ubuntu/Debian:
# 更新软件包列表
sudo apt update
# 更新所有软件包
sudo apt upgrade -y
# 自动清理不需要的包
sudo apt autoremove -yCentOS/RHEL:
# 旧版使用 yum
sudo yum update -y
# 新版使用 dnf
sudo dnf update -y时间同步
安装并配置 NTP:
# Ubuntu/Debian
sudo apt install ntp -y
# CentOS/RHEL
sudo yum install ntp -y
# 启动并启用服务
sudo systemctl start ntp
sudo systemctl enable ntp
# 检查时间同步状态
timedatectl status配置主机名
# 查看当前主机名
hostname
# 修改主机名
sudo hostnamectl set-hostname your-hostname
# 验证修改
hostname配置 DNS
编辑 DNS 配置文件:
# Ubuntu/Debian
sudo nano /etc/resolv.conf
# CentOS/RHEL
sudo nano /etc/resolv.conf添加 DNS 服务器:
nameserver 8.8.8.8
nameserver 8.8.4.4安全加固
创建普通用户
创建用户并设置密码:
# 创建用户
sudo adduser username
# 设置密码
sudo passwd username
# 添加到 sudo 组
sudo usermod -aG sudo username禁用 root 远程登录
编辑 SSH 配置文件:
sudo nano /etc/ssh/sshd_config修改配置:
# 找到并修改以下行
PermitRootLogin no
# 保存并退出重启 SSH 服务:
sudo systemctl restart sshd配置防火墙
**Ubuntu (ufw)**:
# 启用防火墙
sudo ufw enable
# 允许 SSH 端口
sudo ufw allow 22/tcp
# 允许 HTTP/HTTPS 端口(如需)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 查看规则
sudo ufw status**CentOS (firewalld)**:
# 启动防火墙
sudo systemctl start firewalld
sudo systemctl enable firewalld
# 允许 SSH 端口
sudo firewall-cmd --permanent --add-service=ssh
# 允许 HTTP/HTTPS 端口(如需)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 重新加载规则
sudo firewall-cmd --reload
# 查看规则
sudo firewall-cmd --list-all配置 Fail2ban
安装 Fail2ban:
# Ubuntu/Debian
sudo apt install fail2ban -y
# CentOS/RHEL
sudo yum install epel-release -y
sudo yum install fail2ban -y配置 Fail2ban:
sudo nano /etc/fail2ban/jail.local添加配置:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600启动服务:
sudo systemctl start fail2ban
sudo systemctl enable fail2ban云服务器管理
远程管理
SSH 登录:
# 使用密码登录
ssh username@your_public_ip
# 使用密钥登录
ssh -i private_key.pem username@your_public_ip文件传输:
# 从本地传输到服务器
scp local_file username@your_public_ip:/remote/path
# 从服务器传输到本地
scp username@your_public_ip:/remote/file local_path
# 传输目录
scp -r local_directory username@your_public_ip:/remote/path监控与告警
云平台监控:
- CPU 使用率:监控计算资源
- 内存使用率:监控内存消耗
- 磁盘使用率:监控存储空间
- 带宽使用:监控网络流量
- 系统负载:监控整体性能
设置告警:
- 配置 CPU 使用率超过 80% 时告警
- 配置磁盘使用率超过 90% 时告警
- 配置网络带宽异常时告警
备份与恢复
快照备份:
- 创建快照:定期为系统盘和数据盘创建快照
- 恢复快照:当系统出现问题时,从快照恢复
- 快照策略:制定合理的快照策略
数据备份:
- 定期备份:使用脚本定期备份重要数据
- 异地备份:将数据备份到其他存储服务
- 备份验证:定期验证备份的可用性
弹性伸缩
自动伸缩:
- 根据 CPU 使用率自动扩容
- 根据流量自动调整带宽
- 设置伸缩规则和冷却时间
手动伸缩:
- 临时增加实例规格
- 手动调整带宽
- 添加负载均衡
实操案例
案例1:部署 Web 服务器
目标:在云服务器上部署 Nginx Web 服务器
步骤:
创建云服务器实例:
- 选择 Ubuntu 22.04 LTS 镜像
- 配置 2GB 内存,50GB 磁盘
- 分配公网 IP
系统初始化:
sudo apt update && sudo apt upgrade -y sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx配置安全组:
- 允许 80/tcp(HTTP)
- 允许 443/tcp(HTTPS)
- 允许 22/tcp(SSH)
测试访问:
- 在浏览器中访问 http://your_public_ip
- 看到 Nginx 默认页面
部署网站:
sudo mkdir -p /var/www/html/mywebsite sudo nano /var/www/html/mywebsite/index.html添加内容:
<!DOCTYPE html> <html> <head> <title>My Website</title> </head> <body> <h1>Hello from Cloud Server!</h1> <p>This is deployed on a Linux cloud server.</p> </body> </html>配置 Nginx:
sudo nano /etc/nginx/sites-available/mywebsite添加配置:
server { listen 80; server_name your_domain.com; root /var/www/html/mywebsite; index index.html; location / { try_files $uri $uri/ =404; } }启用站点:
sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
案例2:部署数据库服务器
目标:在云服务器上部署 MySQL 数据库
步骤:
创建云服务器实例:
- 选择 CentOS 7 镜像
- 配置 4GB 内存,80GB 磁盘
- 分配公网 IP
系统初始化:
sudo yum update -y sudo yum install epel-release -y安装 MySQL:
sudo yum install mysql-server -y sudo systemctl start mysqld sudo systemctl enable mysqld安全配置:
sudo mysql_secure_installation创建数据库和用户:
sudo mysql -u root -p CREATE DATABASE mydatabase; CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'%'; FLUSH PRIVILEGES; EXIT;配置远程访问:
sudo nano /etc/my.cnf添加配置:
bind-address = 0.0.0.0重启 MySQL:
sudo systemctl restart mysqld配置安全组:
- 允许 3306/tcp(MySQL)
- 允许 22/tcp(SSH)
案例3:部署应用服务器
目标:在云服务器上部署 Node.js 应用
步骤:
创建云服务器实例:
- 选择 Ubuntu 22.04 LTS 镜像
- 配置 2GB 内存,50GB 磁盘
- 分配公网 IP
系统初始化:
sudo apt update && sudo apt upgrade -y安装 Node.js:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install -y nodejs创建应用:
mkdir myapp && cd myapp npm init -y npm install express nano app.js添加内容:
const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello from Node.js on Cloud Server!'); }); app.listen(port, () => { console.log(`App listening at http://localhost:${port}`); });安装 PM2:
sudo npm install -g pm2 pm2 start app.js pm2 startup pm2 save配置 Nginx 反向代理:
sudo apt install nginx -y sudo nano /etc/nginx/sites-available/myapp添加配置:
server { listen 80; server_name your_domain.com; location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }启用站点:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx配置安全组:
- 允许 80/tcp(HTTP)
- 允许 22/tcp(SSH)
常见问题与解决方案
问题1:无法通过 SSH 登录云服务器
解决方案:
- 检查网络连接:
- 确认本地网络正常
- 检查云服务器公网 IP 是否正确
- 检查安全组:
- 确认安全组已允许 22 端口
- 检查入站规则是否正确
- 检查 SSH 服务:
- 在云控制台使用 VNC 登录
- 检查 SSH 服务状态:
sudo systemctl status sshd
- 检查防火墙:
- 检查系统防火墙是否阻止 SSH:
sudo ufw status # Ubuntu sudo firewall-cmd --list-all # CentOS
- 检查系统防火墙是否阻止 SSH:
问题2:云服务器带宽不足
解决方案:
- 临时升级带宽:
- 在云控制台调整带宽上限
- 选择按流量计费模式
- 优化应用:
- 启用 Gzip 压缩
- 优化图片大小
- 使用 CDN 加速静态资源
- 配置缓存:
- 启用 Nginx 缓存
- 使用 Redis 缓存
问题3:云服务器被黑客攻击
解决方案:
- 立即处理:
- 更改所有密码
- 检查异常进程:
top ps aux | grep suspicious - 检查异常登录:
last grep 'Failed password' /var/log/auth.log
- 加强安全:
- 禁用 root 远程登录
- 更改 SSH 端口
- 配置 Fail2ban
- 安装入侵检测系统(如 OSSEC)
- 恢复系统:
- 从快照恢复系统
- 重新部署应用
问题4:云服务器磁盘空间不足
解决方案:
- 检查磁盘使用情况:
df -h - 清理磁盘空间:
# 查找大文件 sudo find / -type f -size +100M -exec ls -lh {} \; # 清理日志文件 sudo journalctl --vacuum-time=1d # 清理包缓存 sudo apt clean # Ubuntu sudo yum clean all # CentOS - 扩展磁盘:
- 在云控制台扩容磁盘
- 在系统中扩展分区:
sudo growpart /dev/vda 1 sudo resize2fs /dev/vda1
问题5:云服务器性能下降
解决方案:
- 检查系统负载:
uptime top - 检查进程:
ps aux --sort=-%cpu | head -10 ps aux --sort=-%mem | head -10 - 检查网络:
netstat -tulpn netstat -an | grep ESTABLISHED | wc -l - 优化配置:
- 调整应用参数
- 增加内存或 CPU
- 使用负载均衡分散流量
总结与最佳实践
核心概念回顾
- 云服务器定义:基于云计算技术的虚拟服务器
- 优势:弹性扩展、按需付费、高可用性
- 部署流程:选择云平台 -> 创建实例 -> 系统初始化 -> 应用部署
- 安全加固:禁用 root 登录、配置防火墙、安装 Fail2ban
- 管理要点:监控告警、备份恢复、弹性伸缩
部署建议
云平台选择:
- 国内业务选择国内云平台
- 全球业务选择国际云平台
- 考虑价格、服务质量、地理位置
实例配置:
- 根据应用需求选择合适的实例类型
- 预留一定的资源余量
- 选择 SSD 存储提高性能
安全配置:
- 最小权限原则:只开放必要的端口
- 定期更新系统和软件
- 启用多因素认证
- 配置安全组和防火墙
监控与备份:
- 配置全面的监控指标
- 制定合理的备份策略
- 定期测试备份恢复流程
最佳实践
自动化部署:
- 使用 Terraform 等工具自动化云资源创建
- 使用 Ansible 等工具自动化配置管理
- 使用 CI/CD 工具自动化应用部署
高可用性设计:
- 部署多可用区架构
- 使用负载均衡分散流量
- 配置自动故障转移
成本优化:
- 选择合适的计费模式
- 使用预留实例或承诺使用折扣
- 定期检查并清理未使用的资源
- 利用弹性伸缩节省成本
性能优化:
- 选择靠近用户的区域
- 配置 CDN 加速静态资源
- 优化数据库查询
- 使用缓存减少计算负载
合规与审计:
- 遵循行业合规要求
- 启用操作审计日志
- 定期进行安全评估
后续学习路径
高级云服务:
- 容器服务(Docker、Kubernetes)
- 无服务器计算
- 函数计算
DevOps 实践:
- CI/CD 流程
- 基础设施即代码
- 监控告警系统
云安全:
- 云安全架构
- 身份与访问管理
- 数据加密
- 安全合规
多云管理:
- 多云部署策略
- 云资源管理工具
- 跨云迁移
通过本教程的学习,你应该已经掌握了云服务器的部署和基本管理技能。云服务器作为现代 IT 基础设施的重要组成部分,为应用部署和业务运行提供了灵活、高效的解决方案。随着你对云服务的深入了解,你可以逐步探索更高级的云服务和架构设计,构建更加可靠、安全、高效的云环境。