云服务器部署 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:仅内网访问

安全组

  • 控制入站和出站流量
  • 配置规则允许特定端口访问

实例创建步骤

以阿里云为例

  1. 登录阿里云控制台

  2. 进入云服务器 ECS 控制台

    • 产品与服务 -> 云服务器 ECS
  3. 创建实例

    • 点击"创建实例"
    • 选择付费方式(包年包月/按量付费)
    • 选择地域和可用区
    • 选择实例规格
    • 选择镜像(Ubuntu 22.04 LTS)
    • 配置存储
    • 配置网络和安全组
    • 设置登录密码或 SSH 密钥
    • 确认配置并购买
  4. 等待实例创建完成

    • 实例状态变为"运行中"
    • 获取公网 IP 地址

以腾讯云为例

  1. 登录腾讯云控制台

  2. 进入云服务器 CVM 控制台

    • 云产品 -> 云服务器 CVM
  3. 创建实例

    • 点击"新建"
    • 选择计费模式
    • 选择地域和可用区
    • 选择实例规格
    • 选择镜像
    • 配置存储
    • 配置网络
    • 设置安全组
    • 设置登录方式
    • 确认配置并购买

系统初始化配置

首次登录

使用密码登录

# 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 -y

CentOS/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 服务器

步骤

  1. 创建云服务器实例

    • 选择 Ubuntu 22.04 LTS 镜像
    • 配置 2GB 内存,50GB 磁盘
    • 分配公网 IP
  2. 系统初始化

    sudo apt update && sudo apt upgrade -y
    sudo apt install nginx -y
    sudo systemctl start nginx
    sudo systemctl enable nginx
  3. 配置安全组

    • 允许 80/tcp(HTTP)
    • 允许 443/tcp(HTTPS)
    • 允许 22/tcp(SSH)
  4. 测试访问

  5. 部署网站

    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>
  6. 配置 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;
        }
    }
  7. 启用站点

    sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx

案例2:部署数据库服务器

目标:在云服务器上部署 MySQL 数据库

步骤

  1. 创建云服务器实例

    • 选择 CentOS 7 镜像
    • 配置 4GB 内存,80GB 磁盘
    • 分配公网 IP
  2. 系统初始化

    sudo yum update -y
    sudo yum install epel-release -y
  3. 安装 MySQL

    sudo yum install mysql-server -y
    sudo systemctl start mysqld
    sudo systemctl enable mysqld
  4. 安全配置

    sudo mysql_secure_installation
  5. 创建数据库和用户

    sudo mysql -u root -p
    
    CREATE DATABASE mydatabase;
    CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
    GRANT ALL PRIVILEGES ON mydatabase.* TO 'myuser'@'%';
    FLUSH PRIVILEGES;
    EXIT;
  6. 配置远程访问

    sudo nano /etc/my.cnf

    添加配置

    bind-address = 0.0.0.0
  7. 重启 MySQL

    sudo systemctl restart mysqld
  8. 配置安全组

    • 允许 3306/tcp(MySQL)
    • 允许 22/tcp(SSH)

案例3:部署应用服务器

目标:在云服务器上部署 Node.js 应用

步骤

  1. 创建云服务器实例

    • 选择 Ubuntu 22.04 LTS 镜像
    • 配置 2GB 内存,50GB 磁盘
    • 分配公网 IP
  2. 系统初始化

    sudo apt update && sudo apt upgrade -y
  3. 安装 Node.js

    curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
    sudo apt install -y nodejs
  4. 创建应用

    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}`);
    });
  5. 安装 PM2

    sudo npm install -g pm2
    pm2 start app.js
    pm2 startup
    pm2 save
  6. 配置 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;
        }
    }
  7. 启用站点

    sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx
  8. 配置安全组

    • 允许 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

问题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
    • 使用负载均衡分散流量

总结与最佳实践

核心概念回顾

  1. 云服务器定义:基于云计算技术的虚拟服务器
  2. 优势:弹性扩展、按需付费、高可用性
  3. 部署流程:选择云平台 -> 创建实例 -> 系统初始化 -> 应用部署
  4. 安全加固:禁用 root 登录、配置防火墙、安装 Fail2ban
  5. 管理要点:监控告警、备份恢复、弹性伸缩

部署建议

  1. 云平台选择

    • 国内业务选择国内云平台
    • 全球业务选择国际云平台
    • 考虑价格、服务质量、地理位置
  2. 实例配置

    • 根据应用需求选择合适的实例类型
    • 预留一定的资源余量
    • 选择 SSD 存储提高性能
  3. 安全配置

    • 最小权限原则:只开放必要的端口
    • 定期更新系统和软件
    • 启用多因素认证
    • 配置安全组和防火墙
  4. 监控与备份

    • 配置全面的监控指标
    • 制定合理的备份策略
    • 定期测试备份恢复流程

最佳实践

  1. 自动化部署

    • 使用 Terraform 等工具自动化云资源创建
    • 使用 Ansible 等工具自动化配置管理
    • 使用 CI/CD 工具自动化应用部署
  2. 高可用性设计

    • 部署多可用区架构
    • 使用负载均衡分散流量
    • 配置自动故障转移
  3. 成本优化

    • 选择合适的计费模式
    • 使用预留实例或承诺使用折扣
    • 定期检查并清理未使用的资源
    • 利用弹性伸缩节省成本
  4. 性能优化

    • 选择靠近用户的区域
    • 配置 CDN 加速静态资源
    • 优化数据库查询
    • 使用缓存减少计算负载
  5. 合规与审计

    • 遵循行业合规要求
    • 启用操作审计日志
    • 定期进行安全评估

后续学习路径

  1. 高级云服务

    • 容器服务(Docker、Kubernetes)
    • 无服务器计算
    • 函数计算
  2. DevOps 实践

    • CI/CD 流程
    • 基础设施即代码
    • 监控告警系统
  3. 云安全

    • 云安全架构
    • 身份与访问管理
    • 数据加密
    • 安全合规
  4. 多云管理

    • 多云部署策略
    • 云资源管理工具
    • 跨云迁移

通过本教程的学习,你应该已经掌握了云服务器的部署和基本管理技能。云服务器作为现代 IT 基础设施的重要组成部分,为应用部署和业务运行提供了灵活、高效的解决方案。随着你对云服务的深入了解,你可以逐步探索更高级的云服务和架构设计,构建更加可靠、安全、高效的云环境。

« 上一篇 双系统安装 Linux 下一篇 » Linux 系统登录与退出