快速部署宝塔面板

更新时间:
一键部署
我的部署

宝塔面板是一款使用方便、功能强大的服务器和网站管理软件,支持LinuxWindows系统。通过宝塔面板您可以一键配置LAMP、LNMP、网站、数据库、FTP、SSL等环境,还可以通过Web端轻松管理服务器,提升运维效率。本文档主要介绍如何通过阿里云云市场镜像在ECS实例上快速部署宝塔面板。

说明

关于宝塔面板的更多信息,请参见宝塔官网

快速部署

您可以单击一键运行进入Terraform Explorer查看并执行Terraform代码,从而实现自动化地在ECS实例中部署宝塔面板。

部署指引

本文档提供以下2种快速部署宝塔面板的方案,您可以根据操作系统按需选择。

部署方案

示例操作系统

说明

方案一:通过ROS快速部署宝塔面板

Alibaba Cloud Linux 3

说明

目前仅支持此操作系统。

通过ROS可以实现自动化宝塔面板。更多信息,请参见什么是资源编排服务

方案二:通过云市场镜像部署宝塔面板

Alibaba Cloud Linux 3

说明

如果您对操作系统有要求,推荐您使用此方案,可以选择对应操作系统的云市场镜像。

阿里云云市场提供宝塔面板镜像,用于快捷搭建宝塔面板,降低了部署环境的门槛,适用于刚开始使用阿里云ECS的企业或个人用户。更多信息,请参见了解镜像市场

方案一:通过ROS快速部署宝塔面板

步骤一:部署宝塔面板

  1. 单击一键部署,根据界面提示配置参数后,单击立即部署

    关键参数说明如下:

    • 地域:就近选择业务所在ECS实例的地域。

    • 实例来源

      如果您对ECS实例的计费方式、磁盘、网络等有要求,建议您提前购买Alibaba Cloud Linux 3操作系统的ECS实例,然后选择已有实例的方式即可。具体操作,请参见自定义购买实例

      创建新实例

      ROS会自动创建一台抢占式实例,并在实例中自动部署宝塔面板。

      • 实例镜像:Alibaba Cloud Linux 3

      • 实例类型:按需选择实例规格。更多信息,请参见实例规格族

      • 实例密码:输入ECS实例的密码和确认密码。

      选择已有实例

      ROS会在选择的已有实例中自动部署宝塔面板,但ECS实例必须具有公网访问能力且操作系统为Alibaba Cloud Linux 3.2104。

      说明

      实例已分配固定公网IP地址或绑定弹性公网IP(EIP)。如您不清楚如何开通公网,请参见开通公网

  2. ROS会自动部署中,当进度为100%时,表示部署宝塔面板成功。

    说明

    您可以单击资源栈名称,在ROS控制台查看创建的ECS实例、VPC、安全组等资源信息。具体操作,请参见查看资源栈

    image

  3. 单击查看输出页签,查看并记录宝塔面板登录信息。

    输出关键字说明如下:

    • EcsLoginAddress:ECS实例远程连接地址。

    • Console@PRIVATE_URL:宝塔面板私网登录地址。

    • Console@PASSWORD:宝塔面板登录密码。

    • Console@USERNAME:宝塔面板用户名。

    • Console@PublicURL:宝塔面板公网登录地址。

      image

步骤二:登录宝塔Linux面板

  1. 在具有公网访问能力的Windows主机的浏览器中,输入宝塔面板公网地址。

    本示例宝塔面板公网地址为https://47.105.XX.XX:8888/cad432be,请以在查看输出页签中显示为准。如果无法访问宝塔面板,请参见以下文档排查:

    说明

    首次使用浏览器访问宝塔面板外网面板地址时,会出现“您的连接不是私密连接”类似的提示,单击高级,然后单击继续前往47.105.XX.XX(不安全),访问即可。具体操作,请参见宝塔官方文档说明

    image

  2. 输入用户名和密码,根据界面提示登录宝塔Linux面板。

    image

  3. 选中我已阅读并同意《用户协议》,单击进入面板

  4. 完成宝塔账号绑定后,在弹出的推荐安装套件对话框中,您可以按需安装软件。

    关于宝塔面板的具体使用,请参见宝塔面板官网文档

    image

方案二:通过云市场镜像部署宝塔面板

步骤一:使用宝塔面板镜像创建ECS实例

说明
  1. 登录ECS管理控制台

  2. 在左侧导航栏,选择实例与镜像 > 实例

  3. 在页面左侧顶部,选择目标资源所在的资源组和地域。地域

  4. 实例列表页,单击创建实例

  5. 自定义购买页面的镜像区域,选择云市场镜像 > 从云市场获取更多选择(含操作系统)镜像

  6. 在搜索框中输入宝塔,并单击搜索,选择镜像后,单击使用

    您可以单击搜索结果中的镜像标题,进入云市场镜像售卖页,获取镜像的配置信息。本示例中使用的宝塔Linux面板(Alibaba Cloud Linux 3/LAMP/LNMP/Tomcat/Node.js/)镜像如下。

    说明
    • 如果您对操作系统及其版本有要求,可以选择对应操作系统的云市场镜像。

    • 选择云市场镜像,您需要关注镜像的费用问题,如果镜像显示¥0/时,表示镜像不收取费用。

    • 您可以单击镜像名称,进入镜像页面,可以查看镜像的详情及其使用指南等信息。

    image

  7. 自定义购买页面,按照界面提示配置其他参数,并完成购买操作。

    请注意以下参数,更多参数说明,请参见自定义购买实例

    • 实例:建议选择至少2 GiB或更高内存的实例规格。

    • 镜像镜像区域已自动设置为您选购的镜像。

    • 公网 IP:选中分配公网 IPv4 地址,并根据业务需要,设置带宽值。

步骤二:登录宝塔面板

  1. 获取宝塔面板登录信息。

    1. 远程连接ECS实例。具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

    2. 执行以下命令,获取宝塔面板内、外网面板地址及其用户名和密码信息。

      bt default

      回显信息类似如下所示。

      image

  2. ECS实例的安全组的入方向放行宝塔面板8888端口。具体操作,请参见添加安全组规则

    本示例宝塔面板端口为8888,具体以1中实际获取为准。基于服务器数据安全考虑,除创建服务器默认放行的端口外,本示例仅放行必要的端口。

    image

  3. 在具有公网访问能力的Windows主机的浏览器中,输入宝塔外网面板地址http://<ECS实例公网IP>:8888/login

    如果无法访问宝塔面板,请参见以下文档排查:

    重要

    宝塔外网面板地址请以1中获取的为准。

  4. 输入用户名和密码,根据界面提示登录宝塔Linux面板。

    image

  5. 选中我已阅读并同意《用户协议》,单击进入面板

  6. 完成宝塔账号绑定后,在弹出的推荐安装套件对话框中,您可以按需安装软件。

    关于宝塔面板的具体使用,请参见宝塔面板官网文档

    image

方案三:通过Terraform快速部署宝塔面板

步骤一:部署宝塔面板

  1. 点击一键运行进入Terraform Explorer,自动加载如下的Terraform代码。

    Terraform代码

    //实例名称
    variable "name" {
      default = "terraform-example"
    }
    
    // 实例规格
    variable "instance_type" {
      default = "ecs.e-c1m2.xlarge"
    }
    
    //实例登录密码
    variable "instance_password" {
      default = "Test@12345"
    }
    
    // 地域
    variable "region" {
      default = "cn-beijing"
    }
    
    provider "alicloud" {
      region = var.region
    }
    
    variable "create_instance" {
      default = true
    }
    
    //实例ID
    variable "instance_id" {
      default = ""
    }
    
    // 镜像ID
    variable "image_id" {
      default = "debian_12_8_x64_20G_alibase_20241216.vhd"
    }
    
    // 创建VPC
    resource "alicloud_vpc" "vpc" {
      count      = var.create_instance ? 1 : 0
      cidr_block = "192.168.0.0/16"
    }
    
    // 创建交换机
    resource "alicloud_vswitch" "vswitch" {
      count        = var.create_instance ? 1 : 0
      vpc_id       = alicloud_vpc.vpc[0].id
      cidr_block   = "192.168.0.0/16"
      zone_id      = data.alicloud_zones.default.zones.0.id
      vswitch_name = var.name
    }
    
    //创建安全组
    resource "alicloud_security_group" "group" {
      count               = var.create_instance ? 1 : 0
      security_group_name = var.name
      description         = "foo"
      vpc_id              = alicloud_vpc.vpc[0].id
    }
    
    //创建安全组规则(此处仅作示例参考,请您按照自身安全策略设置)
    resource "alicloud_security_group_rule" "allow_all_tcp" {
      count             = var.create_instance ? 1 : 0
      type              = "ingress"                           # 规则类型:入站
      ip_protocol       = "tcp"                               # 协议类型:TCP
      policy            = "accept"                            # 策略:接受
      port_range        = "22/22"                             # 端口范围:仅22端口
      priority          = 1                                   # 优先级:1
      security_group_id = alicloud_security_group.group[0].id # 关联到之前创建的安全组
      cidr_ip           = "0.0.0.0/0"                         # 允许所有IP地址访问
    }
    
    resource "alicloud_security_group_rule" "allow_tcp_80" {
      count             = var.create_instance ? 1 : 0
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "80/80"
      priority          = 1
      security_group_id = alicloud_security_group.group[0].id
      cidr_ip           = "0.0.0.0/0"
    }
    
    resource "alicloud_security_group_rule" "allow_tcp_443" {
      count             = var.create_instance ? 1 : 0
      type              = "ingress"
      ip_protocol       = "tcp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "443/443"
      priority          = 1
      security_group_id = alicloud_security_group.group[0].id
      cidr_ip           = "0.0.0.0/0"
    }
    
    resource "alicloud_security_group_rule" "allow_icmp_all" {
      count             = var.create_instance ? 1 : 0
      type              = "ingress"
      ip_protocol       = "icmp"
      nic_type          = "intranet"
      policy            = "accept"
      port_range        = "-1/-1"
      priority          = 1
      security_group_id = alicloud_security_group.group[0].id
      cidr_ip           = "0.0.0.0/0"
    }
    
    data "alicloud_zones" "default" {
      available_disk_category     = "cloud_essd"
      available_resource_creation = "VSwitch"
      available_instance_type     = var.instance_type
    }
    
    //创建实例
    resource "alicloud_instance" "instance" {
      count             = var.create_instance ? 1 : 0
      availability_zone = data.alicloud_zones.default.zones.0.id
      security_groups   = alicloud_security_group.group.*.id
      # series III
      instance_type              = var.instance_type
      system_disk_category       = "cloud_essd"
      system_disk_name           = var.name
      system_disk_description    = "test_foo_system_disk_description"
      image_id                   = var.image_id
      instance_name              = var.name
      vswitch_id                 = alicloud_vswitch.vswitch.0.id
      internet_max_bandwidth_out = 10
      password                   = var.instance_password
    }
    
    resource "alicloud_ecs_command" "install_content" {
      name            = "install_content"
      type            = "RunShellScript"
      command_content = base64encode(local.install_content)
      timeout         = 3600
      working_dir     = "/root"
      depends_on      = [alicloud_instance.instance]
    }
    
    resource "alicloud_ecs_invocation" "invocation_install" {
      instance_id = [local.instanceId]
      command_id  = alicloud_ecs_command.install_content.id
      timeouts {
        create = "15m"
      }
    }
    
    data "alicloud_instances" "default" {
      count = var.create_instance ? 0 : 1
      ids   = [var.instance_id]
    }
    
    locals {
      instanceId         = var.create_instance ? alicloud_instance.instance[0].id : var.instance_id
      instance_public_ip = var.create_instance ? element(alicloud_instance.instance.*.public_ip, 0) : lookup(data.alicloud_instances.default[0].instances.0, "public_ip")
      install_content    = <<SHELL
    echo '#!/bin/bash
    # 检测操作系统版本
    if [ -f /etc/os-release ]; then
        source /etc/os-release || { echo "无法读取 /etc/os-release 文件"; exit 1; }
        if [ -z "$${ID:-}" ] || [ -z "$${VERSION_ID:-}" ]; then
            echo "/etc/os-release 文件格式不符合预期或缺少必要信息"
            exit 1
        fi
        OS=$ID
        VER=$VERSION_ID
        echo "操作系统: $OS 版本: $VER"
    else
        echo "无法检测操作系统版本,/etc/os-release 文件不存在"
        exit 1
    fi
    if [[ $OS == "alinux" ]]; then
    url="https://download.bt.cn/install/install_lts.sh"
    if [ -f /usr/bin/curl ]; then
        curl -sSO "$url"
    else
        wget -O install_lts.sh "$url"
    fi
    yes | bash install_lts.sh ed8484bec
    
    elif [[ $OS == "centos" ]]; then
    url="https://download.bt.cn/install/install_lts.sh"
    if [ -f /usr/bin/curl ]; then
        curl -sSO "$url"
    else
        wget -O install_lts.sh "$url"
    fi
    yes | bash install_lts.sh ed8484bec
    elif [[ $OS == "ubuntu" ]]; then
    wget -O install.sh https://download.bt.cn/install/install_lts.sh && yes | sudo bash install.sh ed8484bec
    elif [[ $OS == "debian" ]]; then
    wget -O install.sh https://download.bt.cn/install/install_lts.sh && yes | bash install.sh ed8484bec
    else
        echo "不支持的操作系统"
        exit 1
    fi
    ' > install.sh
    chmod +x install.sh
    timeout 300s ./install.sh
    bt default > credentials.txt
    SHELL
    }
    
    output "credentials_info" {
      value = "宝塔面板登录信息请您登录ECS实例后,查看用户主目录下的credentials.txt文件"
    }
    
    output "ecs_login_address" {
      value = "ECS远程连接地址:https://ecs-workbench.aliyun.com/?from=EcsConsole&instanceType=ecs&regionId=${var.region}&instanceId=${local.instanceId}"
    }
  2. 根据实际情况修改参数,默认情况下,将会在cn-beijing创建1VPC实例、1台操作系统为Debian的按量付费ECS实例。关于实例计费说明,请参见计费概述

  3. 单击发起调试,预览待创建资源详细信息,若资源信息无误,单击预览并执行开始创建资源。当任务的执行详情状态为执行成功时,说明已部署完成。

步骤二:登录宝塔Linux面板

  1. 获取宝塔面板登录信息。

    1. 远程连接ECS实例。具体操作,请参见使用Workbench工具以SSH协议登录Linux实例

    2. 执行以下命令,获取宝塔面板内、外网面板地址及其用户名和密码信息。

      bt default

      回显信息类似如下所示。

      image

  2. ECS实例的安全组的入方向放行宝塔面板8888端口。具体操作,请参见添加安全组规则

    本示例宝塔面板端口为8888,具体以1中实际获取为准。基于服务器数据安全考虑,除创建服务器默认放行的端口外,本示例仅放行必要的端口。

    image

  3. 在具有公网访问能力的Windows主机的浏览器中,输入宝塔外网面板地址http://<ECS实例公网IP>:8888/login

    如果无法访问宝塔面板,请参见以下文档排查:

    重要

    宝塔外网面板地址请以1中获取的为准。

  4. 输入用户名和密码,根据界面提示登录宝塔Linux面板。

    image

  5. 选中我已阅读并同意《用户协议》,单击进入面板

  6. 完成宝塔账号绑定后,在弹出的推荐安装套件对话框中,您可以按需安装软件。

    关于宝塔面板的具体使用,请参见宝塔面板官网文档

    image