快速部署
您可以单击一键运行进入Terraform Explorer查看并执行Terraform代码,从而实现自动化地在ECS实例中部署宝塔面板。
部署指引
本文档提供以下2种快速部署宝塔面板的方案,您可以根据操作系统按需选择。
方案一:通过ROS快速部署宝塔面板
步骤一:部署宝塔面板
单击一键部署,根据界面提示配置参数后,单击立即部署。
关键参数说明如下:
ROS会自动部署中,当进度为100%时,表示部署宝塔面板成功。
说明 您可以单击资源栈名称,在ROS控制台查看创建的ECS实例、VPC、安全组等资源信息。具体操作,请参见查看资源栈。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p878112.png)
单击查看输出页签,查看并记录宝塔面板登录信息。
输出关键字说明如下:
EcsLoginAddress:ECS实例远程连接地址。
Console@PRIVATE_URL:宝塔面板私网登录地址。
Console@PASSWORD:宝塔面板登录密码。
Console@USERNAME:宝塔面板用户名。
Console@PublicURL:宝塔面板公网登录地址。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p878119.png)
步骤二:登录宝塔Linux面板
在具有公网访问能力的Windows主机的浏览器中,输入宝塔面板公网地址。
本示例宝塔面板公网地址为https://47.105.XX.XX:8888/cad432be
,请以在查看输出页签中显示为准。如果无法访问宝塔面板,请参见以下文档排查:
说明 首次使用浏览器访问宝塔面板外网面板地址时,会出现“您的连接不是私密连接”类似的提示,单击高级,然后单击继续前往47.105.XX.XX(不安全),访问即可。具体操作,请参见宝塔官方文档说明。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p878130.png)
输入用户名和密码,根据界面提示登录宝塔Linux面板。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p877705.png)
选中我已阅读并同意《用户协议》,单击进入面板。
完成宝塔账号绑定后,在弹出的推荐安装套件对话框中,您可以按需安装软件。
关于宝塔面板的具体使用,请参见宝塔面板官网文档。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p877933.png)
方案二:通过云市场镜像部署宝塔面板
步骤一:使用宝塔面板镜像创建ECS实例
登录ECS管理控制台。
在左侧导航栏,选择。
在页面左侧顶部,选择目标资源所在的资源组和地域。
在实例列表页,单击创建实例。
在自定义购买页面的镜像区域,选择。![镜像](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8053568071/p549055.png)
在搜索框中输入宝塔
,并单击搜索,选择镜像后,单击使用。
您可以单击搜索结果中的镜像标题,进入云市场镜像售卖页,获取镜像的配置信息。本示例中使用的宝塔Linux面板(Alibaba Cloud Linux 3/LAMP/LNMP/Tomcat/Node.js/)镜像如下。
说明 如果您对操作系统及其版本有要求,可以选择对应操作系统的云市场镜像。
选择云市场镜像,您需要关注镜像的费用问题,如果镜像显示¥0/时
,表示镜像不收取费用。
您可以单击镜像名称,进入镜像页面,可以查看镜像的详情及其使用指南等信息。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p878295.png)
在自定义购买页面,按照界面提示配置其他参数,并完成购买操作。
请注意以下参数,更多参数说明,请参见自定义购买实例。
步骤二:登录宝塔面板
获取宝塔面板登录信息。
远程连接ECS实例。具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
执行以下命令,获取宝塔面板内、外网面板地址及其用户名和密码信息。
bt default
回显信息类似如下所示。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p878494.png)
在ECS实例的安全组的入方向放行宝塔面板8888
端口。具体操作,请参见添加安全组规则。
本示例宝塔面板端口为8888
,具体以1中实际获取为准。基于服务器数据安全考虑,除创建服务器默认放行的端口外,本示例仅放行必要的端口。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p877828.png)
在具有公网访问能力的Windows主机的浏览器中,输入宝塔外网面板地址http://<ECS实例公网IP>:8888/login
。
如果无法访问宝塔面板,请参见以下文档排查:
输入用户名和密码,根据界面提示登录宝塔Linux面板。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p877705.png)
选中我已阅读并同意《用户协议》,单击进入面板。
完成宝塔账号绑定后,在弹出的推荐安装套件对话框中,您可以按需安装软件。
关于宝塔面板的具体使用,请参见宝塔面板官网文档。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p877933.png)
方案三:通过Terraform快速部署宝塔面板
步骤一:部署宝塔面板
点击一键运行进入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®ionId=${var.region}&instanceId=${local.instanceId}"
}
根据实际情况修改参数,默认情况下,将会在cn-beijing创建1个VPC实例、1台操作系统为Debian的按量付费ECS实例。关于实例计费说明,请参见计费概述。
单击发起调试,预览待创建资源详细信息,若资源信息无误,单击预览并执行开始创建资源。当任务的执行详情状态为执行成功时,说明已部署完成。
步骤二:登录宝塔Linux面板
获取宝塔面板登录信息。
远程连接ECS实例。具体操作,请参见使用Workbench工具以SSH协议登录Linux实例。
执行以下命令,获取宝塔面板内、外网面板地址及其用户名和密码信息。
bt default
回显信息类似如下所示。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p878494.png)
在ECS实例的安全组的入方向放行宝塔面板8888
端口。具体操作,请参见添加安全组规则。
本示例宝塔面板端口为8888
,具体以1中实际获取为准。基于服务器数据安全考虑,除创建服务器默认放行的端口外,本示例仅放行必要的端口。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p877828.png)
在具有公网访问能力的Windows主机的浏览器中,输入宝塔外网面板地址http://<ECS实例公网IP>:8888/login
。
如果无法访问宝塔面板,请参见以下文档排查:
输入用户名和密码,根据界面提示登录宝塔Linux面板。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p877705.png)
选中我已阅读并同意《用户协议》,单击进入面板。
完成宝塔账号绑定后,在弹出的推荐安装套件对话框中,您可以按需安装软件。
关于宝塔面板的具体使用,请参见宝塔面板官网文档。
![image](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4099682371/p877933.png)