温馨提示×

ubuntu minimal云服务部署

小樊
33
2025-12-14 11:36:35
栏目: 云计算

Ubuntu Minimal 云服务部署实操指南

一 场景与镜像选择

  • 面向公有云/私有云的常见做法是基于官方提供的 Ubuntu Cloud Images 部署最小化实例,镜像站点为:https://cloud-images.ubuntu.com。镜像分为 daily/releaseminimal/普通 两类,minimal 体积更小、仅含必要组件,适合云环境快速启动与自动化初始化。若需要桌面环境,可在最小化系统上按需增装(如 ubuntu-desktop-minimal)。对于本地 KVM 虚机,通常下载 amd64 的 qcow2/vmdk/ova 镜像并使用 cloud-init 初始化。

二 本地 KVM 快速起一台最小化云实例

  • 准备镜像与工具
    • 下载镜像(示例为 22.04):ubuntu-22.04-server-cloudimg-amd64.img
    • 安装依赖:sudo apt install -y qemu-kvm cloud-image-utils
    • 规划桥接网络(示例桥接网卡 br0
  • 生成 cloud-init 初始化介质
    • metadata.yaml(实例元数据)
      instance-id: iid-local01
      local-hostname: cloudimg
      
    • user-data.yaml(用户数据,免密登录示例)
      #cloud-config
      ssh_authorized_keys:
        - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSc4mEaOsvQusPZRUIV6PUz2yM2D/Td3FKkdumu...(你的公钥)
      ssh_import_id:
        - gh:
        - lp:
      
    • 生成 seed.img:cloud-localds seed.img user-data.yaml metadata.yaml
  • 启动虚机(示例)
    virt-install \
      --name ubuntu2204-mini \
      --vcpus 2 --memory 4096 \
      --graphics none \
      --import \
      --os-type linux --os-variant ubuntu20.04 \
      --network bridge=br0,model=virtio \
      --disk /data/vms/ubuntu2204-mini.qcow2 \
      --disk /data/vms/seed.img
    
  • 登录与验证
    • 默认用户为 ubuntu,使用你的私钥登录:ssh ubuntu@<实例IP>
    • 查看初始化日志:tail -f /var/log/cloud-init.log

三 公有云或自建云的最小化初始化与安全加固

  • 初始化与基础配置
    • 创建非 root 用户并加入 sudo:adduser cloudadmin && usermod -aG sudo cloudadmin
    • 更新与基础环境:sudo apt update && sudo apt upgrade -y
    • 时区与语言:timedatectl set-timezone Asia/Shanghai
  • 防火墙与安全组
    • Ubuntu 使用 UFW:sudo ufw allow 22/tcp;sudo ufw allow 80/tcp;sudo ufw enable
    • 同时在云平台控制台放行相同端口(安全组/NACL 规则需一致)
  • SSH 密钥登录与禁用密码
    • 本地生成密钥:ssh-keygen -t ed25519 -C “you@example.com”
    • 上传公钥:ssh-copy-id -i ~/.ssh/id_ed25519.pub cloudadmin@
    • 服务器禁用密码:编辑 /etc/ssh/sshd_config
      • PasswordAuthentication no
      • ChallengeResponseAuthentication no
      • UsePAM no
    • 重启 SSH:sudo systemctl restart sshd
  • 自动安全更新
    • 启用无人值守升级:sudo dpkg-reconfigure -plow unattended-upgrades

四 在最小化系统上部署私有云应用示例 Nextcloud

  • 安装 Docker 与 Compose
    sudo apt update
    sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
      | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
      https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
      | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
    sudo systemctl enable --now docker
    sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" \
      -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
  • 启动 MySQL 与 Nextcloud(示例 docker-compose.yml)
    version: '3.8'
    services:
      mysql:
        image: mysql:8.0
        container_name: nextcloud_mysql
        restart: unless-stopped
        environment:
          MYSQL_ROOT_PASSWORD: YourStrongRootPass
          MYSQL_DATABASE: nextcloud
          MYSQL_USER: nextcloud
          MYSQL_PASSWORD: NextcloudUserPass
        volumes:
          - ./mysql_data:/var/lib/mysql
        command: --default-authentication-plugin=mysql_native_password
        ports:
          - "3306:3306"
    
      nextcloud:
        image: nextcloud:stable
        container_name: nextcloud_app
        restart: unless-stopped
        ports:
          - "8080:80"
        depends_on:
          - mysql
        environment:
          MYSQL_HOST: mysql
          MYSQL_DATABASE: nextcloud
          MYSQL_USER: nextcloud
          MYSQL_PASSWORD: NextcloudUserPass
          NEXTCLOUD_TRUSTED_DOMAINS: "localhost 192.168.x.x your.domain.com"
        volumes:
          - ./nextcloud_data:/var/www/html
          - ./apps:/var/www/html/custom_apps
          - ./config:/var/www/html/config
          - ./data:/var/www/html/data
    
    • 启动:docker-compose up -d
    • 访问:http://<服务器IP>:8080 创建管理员账户并配置数据库

五 常见问题与排错要点

  • 无法 SSH 登录
    • 检查云控制台安全组与系统防火墙(UFW)是否放行 22/tcp
    • 确认使用正确的私钥(ed25519/rsa),以及 /etc/ssh/sshd_config 中已禁用密码登录
  • cloud-init 未生效
    • 确认已挂载 seed.img,并检查 /var/log/cloud-init.log 与 /var/log/cloud-init-output.log
    • 若需重新初始化,可删除 /var/lib/cloud 后重启
  • 端口占用或服务未启动
    • 使用 ss -tulpen | grep <端口> 或 systemctl status <服务> 排查
    • 对于 Nextcloud,确认数据库容器健康且 nextcloud 容器已连接到同一网络

0