关于后端:华为云服务之弹性云服务器ECS的深度使用和云端实践华为云至简致远

56次阅读

共计 13146 个字符,预计需要花费 33 分钟才能阅读完成。

【摘要】什么是弹性云服务器 ECS?ECS 的产品架构是什么?它有哪些劣势和有利用场景?弹性云服务器 ECS 的应用流程是怎么的?如何使用弹性云服务器 ECS 搭建微信公众号后盾并收发文本音讯?让咱们带着这些疑难,去弹性云服务器 ECS 的世界里一探到底,玩转 ECS!!一、弹性云服务器 ECS 简介① 什么是弹性云服务器 ECS?弹性云服务器(Elastic Cloud Server,ECS)是由 CPU、内存、操作系统、云硬盘组成的根底的计算组件。弹性云服务器创立胜利后,就能够像应用本人的本地 PC 或物理服务器一样,在云上应用弹性云服务器。弹性云服务器的开明是自助实现的,只须要指定 CPU、内存、操作系统、规格、登录鉴权形式即可,同时也能够依据您的需要随时调整弹性云服务器的规格,打造牢靠、平安、灵便、高效的计算环境。

② ECS 的架构设计 ECS 通过和其余产品、服务组合,弹性云服务器能够实现计算、存储、网络、镜像装置等性能;

弹性云服务器在不同可用区中部署(可用区之间通过内网连贯),局部可用区产生故障后不会影响同一区域内的其它可用区;能够通过虚构公有云建设专属的网络环境,设置子网、平安组,并通过弹性公网 IP 实现外网链接(需带宽反对);通过镜像服务,能够对弹性云服务器装置镜像,也能够通过公有镜像批量创立弹性云服务器,实现疾速的业务部署;通过云硬盘服务实现数据存储,并通过云硬盘备份服务实现数据的备份和复原。云监控是放弃弹性云服务器可靠性、可用性和性能的重要局部,通过云监控,用户能够察看弹性云服务器资源;云备份(Cloud Backup and Recovery,CBR)提供对云硬盘和弹性云服务器的备份爱护服务,反对基于快照技术的备份服务,并反对利用备份数据恢复服务器和磁盘的数据。

与其它服务的关系:

③ ECS 的劣势稳固牢靠:丰盛的磁盘品种,提供一般 IO、高 IO、通用型 SSD、超高 IO、极速型 SSD 类型的云硬盘,能够反对云服务器不同业务场景需要;高数据可靠性:故障主动迁徙且服务可用性达 99.95%,数据多正本且数据持久性达 99.99995%;并反对云服务器和云硬盘的备份及复原,可事后设置好主动备份策略,实现在线主动备份,也能够依据须要随时通过控制台或 API,备份云服务器和云硬盘指定工夫点的数据;平安保障:多种平安服务与多维度防护、平安评估、智能化过程治理、破绽扫描,100% 网络隔离,平安组规定爱护;弹性伸缩:主动调整计算资源、灵便调整云服务器配置、灵便的计费模式,主机规格和宽带可随时调整“云服务器 + 物理机”混合组网;软硬联合:弹性云服务器搭载在业余的硬件设施上,可能深度进行虚拟化优化技术,用户无需自建机房;可随时从虚构资源池中获取并独享资源,并依据业务变动弹性扩大或膨胀;简略易用:对立的管理控制平台,简化运维治理,能够一站式开明和部署;性价比高:根底社网络搭建,保护老本简直为 0,自主抉择包年 / 包月和按需计费。④ ECS 的利用场景网站利用:应用通用型弹性云服务器,次要提供平衡的计算、内存和网络资源,实用于业务负载压力适中的利用场景,满足企业或集体一般业务搬迁上云需要;企业电商:应用内存优化型弹性云服务器,次要提供高内存实例,同时能够配置超高 IO 的云硬盘和适合的带宽;图形渲染:应用 GPU 图形减速型弹性云服务器,G1 型弹性云服务器基于 NVIDIA Tesla M60 硬件虚拟化技术,提供较为经济的图形减速能力,可能反对 DirectX、OpenGL,能够提供最大显存 1GiB、分辩率为 4096×2160 的图形图像解决能力;数据分析:应用磁盘增强型弹性云服务器,次要实用于须要对本地存储上的极大型数据集进行高性能程序读写访问的工作负载,次要的数据存储是基于 HDD 的存储实例,默认配置最高 10GE 网络能力,提供较高的 PPS 性能和网络低提早;高性能计算:应用高性能计算型弹性云服务器,次要应用在受计算限度的高性能处理器的应用程序上,适宜要求提供海量并行计算资源、高性能的基础设施服务,须要达到高性能计算和海量存储,对渲染的效率有肯定保障的场景。二、弹性云服务器 ECS 的应用流程① 筹备环境,购买 ECS 登录 华为云控制台,开展“所有服务”,抉择“计算 > 弹性云服务器”:

再抉择“购买弹性云服务器”:

② 配置 ECS 规格抉择弹性云服务器的“计费模式”和“规格”,咱们当初抉择“按需付费”、“通用计算型”,该类型云服务器提供平衡的计算、存储以及网络配置,实用于大多数的应用场景。抉择计费模式:

抉择规格:

③ 抉择镜像并创立磁盘抉择 Linux 操作系统的“公共镜像”,公共镜像是华为云默认提供的镜像:

系统盘放弃默认值,单击“减少一块数据盘”,增加一块“100 GB”的“高 IO”数据盘:

④ 配置网络首次应用时,请抉择华为云提供的默认 VPC、默认平安组,默认平安组规定如下:

如果有拜访互联网的需要,弹性云服务器需绑定弹性公网 IP,单击“当初购买”,零碎将主动调配弹性公网 IP 给云服务器:

⑤ 抉择登录形式弹性云服务器创立胜利后,通过“密钥对”或“明码”登录。以“明码”为例:

⑥ 设置云备份云备份提供申请即用的备份服务,使数据更加安全可靠,当云服务器或磁盘呈现故障或者人为谬误导致数据误删时,能够自助疾速复原数据。在下拉列表中抉择已有的云备份存储库,设置备份策略:

⑦ 确认配置并购买单击右侧“以后配置”栏的“立刻购买”;查看订单信息,确认无误后,请勾选协定,并单击“提交”;订单领取实现后,零碎将会主动为您创立弹性云服务器,创立弹性云服务器须要几分钟工夫。

⑧(可选)绑定弹性公网 IP 通过 SSH 密钥形式登录 Linux 弹性云服务器时,弹性云服务器必须绑定弹性公网 IP(EIP)。如果购买弹性云服务器时曾经绑定 EIP,请跳过本步骤;如果没有绑定,请执行以下操作:单击待绑定 EIP 的弹性云服务器名称,零碎进入云服务器详情页;抉择“弹性公网 IP”页签;单击“绑定弹性公网 IP”;抉择主网卡与弹性公网 IP,并单击“确定”。

⑨ 登录 ECS 云服务器(A)应用 CloudShell 登录云服务器在云服务器列表页抉择要登录的云服务器,单击“操作”列下的“近程登录”;在弹出的“登录 Linux 云服务器”窗口中,单击“CloudShell 登录”;在 CloudShell 界面配置云服务器信息,默认已主动抉择弹性公网 IP、应用 22 端口、用户名为 root;输出明码,即在购买阶段设置的明码;单击“连贯”登录云服务器。

(B)应用 PuTTY 工具登录 ECS 双击“PUTTY.EXE”,抉择“Session”;Host Name (or IP address):输出弹性云服务器的弹性公网 IP;Connection Type:抉择 SSH;Saved Sessions:工作名称,在下一次应用 putty 时就能够单击保留的工作名称,即可关上近程连贯;单击“Window”,在“Translation”下的“Received data assumed to be in which character set:”抉择“UTF-8”;单击“Open”,建设到云服务器的 SSH 连贯后,依据提醒输出用户名和明码登录弹性云服务器。

⑩ 初始化数据盘(A)应用 fdisk 分区工具初始化数据盘划分分区并挂载磁盘当云服务器挂载了一块新的数据盘时,应用 fdisk 分区工具将该数据盘设为主分区,分区模式默认设置为 MBR,文件系统设为 ext4 格局,挂载在“/mnt/sdc”下,并设置开机启动主动挂载。查看新增数据盘:fdisk -l
后果如下(示意以后的云服务器有两块磁盘,“/dev/vda”是系统盘,“/dev/vdb”是新增数据盘):[root@ecs-test-0001 ~]# fdisk -l

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000bcb4e

Device Boot Start End Blocks Id System
/dev/vda1 * 2048 83886079 41942016 83 Linux

Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
进入 fdisk 分区工具,开始对新增数据盘执行分区操作:fdisk 新增数据盘

// 以新挂载的数据盘“/dev/vdb”为例:
fdisk /dev/vdb
后果如下:[root@ecs-test-0001 ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x38717fc1.

Command (m for help):
输出 n,按 Enter,开始新建分区:// 示意磁盘有两种分区类型:p 示意主分区,e 示意扩大分区
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
以创立一个次要分区为例,输出 p,按 Enter,开始创立一个主分区:// Partition number 示意主分区编号,能够抉择 1-4
Select (default p): p
Partition number (1-4, default 1):
以分区编号抉择 1 为例,输出主分区编号 1,按 Enter:// First sector 示意起始磁柱值,能够抉择 2048-209715199,默认为 2048
Partition number (1-4, default 1): 1
First sector (2048-209715199, default 2048):
以抉择默认起始磁柱值 2048 为例,按 Enter,零碎会主动提醒分区可用空间的起始磁柱值和截止磁柱值,能够在该区间内自定义,或者应用默认值。起始磁柱值必须小于分区的截止磁柱值:// Last sector 示意截止磁柱值,能够抉择 2048-209715199,默认为 209715199
First sector (2048-209715199, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
以抉择默认截止磁柱值 209715199 为例,按 Enter,零碎会主动提醒分区可用空间的起始磁柱值和截止磁柱值,能够在该区间内自定义,或者应用默认值,起始磁柱值必须小于分区的截止磁柱值:// 示意分区实现,即为数据盘新建 1 个分区
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199):
Using default value 209715199
Partition 1 of type Linux and of size 100 GiB is set

Command (m for help):
输出 p,按 Enter,查看新建分区的详细信息(新建分区“/dev/vdb1”的详细信息):Command (m for help): p

Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x38717fc1

Device Boot Start End Blocks Id System
/dev/vdb1 2048 209715199 104856576 83 Linux

Command (m for help):
输出 w,按 Enter,将分区后果写入分区表中:Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
将新的分区表变更同步至操作系统:partprobe
将新建分区文件系统设为零碎所需格局:mkfs -t 文件系统格局 /dev/vdb1
// 以设置文件系统为“ext4”为例:
mkfs -t ext4 /dev/vdb1
后果如下:[root@ecs-test-0001 ~]# mkfs -t ext4 /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
6553600 inodes, 26214144 blocks
1310707 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2174746624
800 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:

    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424, 20480000, 23887872

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
新建挂载目录:mkdir 挂载目录
// 以新建挂载目录“/mnt/sdc”为例:
mkdir /mnt/sdc
将新建分区挂载到 12 中创立的目录下:mount 磁盘分区 挂载目录
// 以挂载新建分区“/dev/vdb1”至“/mnt/sdc”为例:
mount /dev/vdb1 /mnt/sdc
查看挂载后果(新建分区“/dev/vdb1”已挂载至“/mnt/sdc”):df -TH

[root@ecs-test-0001 ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 ext4 43G 1.9G 39G 5% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.1M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
tmpfs tmpfs 398M 0 398M 0% /run/user/0
/dev/vdb1 ext4 106G 63M 101G 1% /mnt/sdc
设置开机主动挂载磁盘分区能够通过配置 fstab 文件,设置云服务器系统启动时主动挂载磁盘分区,已有数据的云服务器也能够进行设置,该操作不会影响现有数据,那么如何在 fstab 文件中应用 UUID 来设置主动挂载磁盘分区呢?查问磁盘分区的 UUID:blkid 磁盘分区
// 以查问磁盘分区“/dev/vdb1”的 UUID 为例:
blkid /dev/vdb1
后果如下:[root@ecs-test-0001 ~]# blkid /dev/vdb1
/dev/vdb1: UUID=”0b3040e2-1367-4abb-841d-ddb0b92693df” TYPE=”ext4″
应用 VI 编辑器关上 fstab 文件:vi /etc/fstab
按 i 进入编辑模式,将光标移至文件开端,按 Enter 增加如下内容:UUID=0b3040e2-1367-4abb-841d-ddb0b92693df /mnt/sdc ext4 defaults 0 2
按 ESC 后,输出“:wq”,按 Enter,保留设置并退出编辑器;执行以下步骤,验证主动挂载性能:卸载已挂载的分区:umount 磁盘分区
// 命令示例
umount /dev/vdb1
将“/etc/fstab”文件所有内容从新加载:mount -a
查问文件系统挂载信息:mount | grep 挂载目录
// 命令示例
mount | grep /mnt/sdc
后果如下,阐明主动挂载性能失效:root@ecs-test-0001 ~]# mount | grep /mnt/sdc
/dev/vdb1 on /mnt/sdc type ext4 (rw,relatime,data=ordered)
(B)应用脚本初始化新挂载的磁盘获取主动初始化磁盘脚本:wget https://ecs-instance-driver.o…
批改主动初始化磁盘脚本权限:chmod +x LinuxVMDataDiskAutoInitialize.sh
执行初始化脚本自动检测待初始化的数据盘(脚本将自动检测以后在服务器上除系统盘之外的盘符并显示进去,如 /dev/vdb,而后须要输出要执行的盘符,例如 /dev/vdb):./LinuxVMDataDiskAutoInitialize.sh

输出盘符并回车后,脚本将主动执行硬盘的创立分区与格式化:

依据提醒输出磁盘须要挂载的门路,比方 /data-test:

期待脚本主动挂载并设置为开机主动挂载后,就实现了磁盘创立分区格式化和挂载磁盘的工作:

(C)应用脚本初始化已应用的磁盘获取主动初始化磁盘脚本:wget https://ecs-instance-driver.o…
批改主动初始化磁盘脚本权限:chmod -x LinuxVMDataDiskAutoInitialize.sh
执行初始化脚本自动检测待初始化的数据盘:sh LinuxVMDataDiskAutoInitialize.sh
脚本会自动检测出抉择的磁盘曾经被挂载并显示出挂载的地位,依据提醒抉择是否卸载磁盘,输出 y 为确定卸载,输出 n 则退出脚本,此处抉择 y 持续后续的初始化操作:

胜利卸载磁盘后依据提醒抉择是否开始格式化磁盘,输出 y 为确定格式化,输出 n 则退出脚本:

胜利格式化磁盘后将会主动执行磁盘的创立分区与格式化,依据提醒输出这个磁盘须要挂载的地位,比方 /data-test:

期待脚本主动挂载并设置为开机主动挂载后,就实现了磁盘创立分区格式化和挂载磁盘的工作:

三、应用弹性云服务器 ECS 搭建微信公众号后盾并收发文本音讯① 整体流程应用 ECS 搭建微信公众号解决后盾,并应用 Python 语言编写对应的微信音讯解决逻辑代码,接管从微信服务端转发过去的音讯,并返回处理结果给最终用户:

须要相熟 CentOS(Linux)操作系统、Python 语言、Web.py 框架、HTTP/XML 协定。② 筹备工作申请微信公众号:微信公众号申请地址;依照上文的应用流程购买华为弹性云服务,配置应用公共镜像 CentOS 7.4;

购买弹性公网 IP,同时购买弹性公网 IP,前面须要在微信公众号上配置公网 IP 的地址:

③ 环境配置(A)降级默认 Python 版本 CentOS 7.4 自带 Python 版本比拟老,倡议降级到 Python3,查看 Python 版本:python –version

下载 Python 安装包:wget https://www.python.org/ftp/py…

解压安装包:tar xvf Python-3.6.0a1.tar.xz
执行命令:cd Python-3.6.0a1
./configure
执行胜利如下所示:

如果呈现“configure: error: no acceptable C compiler found in $PATH”异样提醒,是因为未装置适合的编译器。执行以下命令,装置 / 降级 gcc 及其他依赖的包,并在随后提醒安装包是否 OK 时,输出 y 并回车:sudo yum install gcc-c++
依赖的包装置胜利如下所示,在编译器装置实现后,从新执行 ./configure 命令:

执行命令:make && make install
执行胜利如下所示:

查看 Python3 版本,应用命令:python3 –version
装置 Python3:python3
Python3 装置胜利,如下所示:

(B)降级默认 pip 版本装置 openssl-devel 包:yum install openssl-devel -y

装置 pip:make && make install
装置胜利如下:

降级 pip3:pip3 install –upgrade pip
呈现如下提醒阐明降级 pip 到最新版本:

(C)装置 Web.py 框架 Web.py 的装置请参考:Web.py 官网教程,装置 web.py:pip3 install web.py==0.40.dev0

(D)装置 WinSCP 通常状况下,在本地 Windows 操作系统上编辑代码,实现后再上传至 ECS 上(CentOS Linux 零碎)。WinSCP 是一个 Windows 环境下应用的 SSH 的开源图形化 SFTP 客户端, 同时反对 SCP 协定。它的次要性能是在本地与近程计算机间平安地复制文件,并且能够间接编辑文件。WinSCP 装置链接:https://winscp.net/eng/docs/l…。④ 上传代码新建 main.py 文件,复制如下代码:# –– coding: utf-8 –

filename: main.py

import web
from handle import Handle

urls = (

'/wx', 'Handle',

)

if name == ‘__main__’:

app = web.application(urls, globals())
app.run()

新建 handle.py 文件,复制如下代码:# –– coding: utf-8 –

filename: handle.py

import hashlib
import web
import receive
import time
import os

class Handle(object):

def __init__(self):
    self.app_root = os.path.dirname(__file__)
    self.templates_root = os.path.join(self.app_root, 'templates')
    self.render = web.template.render(self.templates_root)

def GET(self):
    try:
        data = web.input()
        if len(data) == 0:
            return "hello, this is handle view"
        signature = data.signature
        timestamp = data.timestamp
        nonce = data.nonce
        echostr = data.echostr
        token = "此处内容与公众号根本配置里 Token 字段取值保持一致"

        list = [token, timestamp, nonce]
        list.sort()
        s = list[0] + list[1] + list[2]
        hashcode = hashlib.sha1(s.encode('utf-8')).hexdigest()
        print("handle/GET func: hashcode, signature:", hashcode, signature)
        if hashcode == signature:
            return echostr
        else:
            return echostr
    except (Exception) as Argument:
        return Argument

def POST(self):
    try:
        webData = web.data()
        print("Handle Post webdata is:\n", webData)
        #打印消息体日志
        recMsg = receive.parse_xml(webData)

        if isinstance(recMsg, receive.Msg) and recMsg.MsgType == 'text':
            toUser = recMsg.FromUserName
            fromUser = recMsg.ToUserName
            content = "欢送关注我的公众号!" + str(recMsg.Content)
            print('Reply message info:\n')
            print('toUser =', toUser)
            print('fromUser =', fromUser)
            print('content =', content)
            return self.render.reply_text(toUser, fromUser, int(time.time()), content)
        else:
            print("不反对的音讯类型:",recMsg.MsgType)
            return "success"
    except (Exception) as Argment:
        return Argment

新建 receive.py 文件,复制如下代码:# –– coding: utf-8 –

filename: receive.py

import xml.etree.ElementTree as ET

def parse_xml(web_data):

if len(web_data) == 0:
    return None
xmlData = ET.fromstring(web_data)
msg_type = xmlData.find('MsgType').text
if msg_type == 'text':
    return TextMsg(xmlData)
elif msg_type == 'image':
    return ImageMsg(xmlData)
elif msg_type == 'location':
    return LocationMsg(xmlData)
elif msg_type == 'event':
    return EventMsg(xmlData)

class Event(object):

def __init__(self, xmlData):
    self.ToUserName = xmlData.find('ToUserName').text
    self.FromUserName = xmlData.find('FromUserName').text
    self.CreateTime = xmlData.find('CreateTime').text
    self.MsgType = xmlData.find('MsgType').text
    self.Eventkey = xmlData.find('EventKey').text

class Msg(object):

def __init__(self, xmlData):
    self.ToUserName = xmlData.find('ToUserName').text
    self.FromUserName = xmlData.find('FromUserName').text
    self.CreateTime = xmlData.find('CreateTime').text
    self.MsgType = xmlData.find('MsgType').text
    self.MsgId = xmlData.find('MsgId').text

class TextMsg(Msg):

def __init__(self, xmlData):
    Msg.__init__(self, xmlData)
    self.Content = xmlData.find('Content').text

class ImageMsg(Msg):

def __init__(self, xmlData):
    Msg.__init__(self, xmlData)
    self.PicUrl = xmlData.find('PicUrl').text
    self.MediaId = xmlData.find('MediaId').text

class LocationMsg(Msg):

def __init__(self, xmlData):
    Msg.__init__(self, xmlData)
    self.Location_X = xmlData.find('Location_X').text
    self.Location_Y = xmlData.find('Location_Y').text

class EventMsg(Msg):

def __init__(self, xmlData):
    Event.__init__(self, xmlData)
    self.Event = xmlData.find('Event').text

新建 templates 文件夹,在文件夹下新建 reply_text.xml 文件,复制如下代码:$def with (toUser,fromUser,createTime,content)
<xml>
<ToUserName><![CDATA[$toUser]]></ToUserName>
<FromUserName><![CDATA[$fromUser]]></FromUserName>
<CreateTime>$createTime</CreateTime>
<MsgType><![CDATA]></MsgType>
<Content><![CDATA[$content]]></Content>
</xml>
最终本地代码文件造成如下:D:\workspace\wx\textProcess

2022/06/06 14:31 <DIR> .
2022/06/06 14:31 <DIR> ..
2022/06/05 13:42 2077 handle.py
2022/05/22 23:13 211 main.py
2022/06/02 23:46 2008 receive.py
2022/05/20 13:41 <DIR> templates

D:\workspace\wx\textProcess\templates

2022/05/20 13:41 <DIR>
2022/05/20 13:41 <DIR>
2022/06/05 13:14 275 reply_text.xml
通过 WinSCP 工具将上述文件与目录上传至 ECS 指定目录下:

⑤ 启动服务应用如下命令启动服务:python3 main.py 80
启动胜利如下:python3 main.py 80
http://0.0.0.0:80/
登录微信公众平台,抉择“开发 > 根本配置”,单击“批改配置”,填写配置信息,单击“提交”:URL:https://ECS 的弹性公网 IP/wx,不必增加 80 端口;Token:须要与 handle.py 中对应 token 取值完全一致;EncodingAESKey:随机生成;音讯加解密形式:此为示例,抉择简略的“明文模式”。验证 token 胜利,单击“启用”。⑥ 验证应用微信关注公众号,任意发送一条文本音讯,看是否可能收到回复,如能收到回复则表明零碎解决失常。四、附录【华为云至简致远】有奖征文炽热进行中:https://bbs.huaweicloud.com/b…。【版权申明】本文为华为云社区用户原创内容,未经容许不得转载,如需转载请发送邮件至:cloudbbs@huaweicloud.com;如果您发现本社区中有涉嫌剽窃的内容,欢送发送邮件进行举报,并提供相干证据,一经查实,本社区将立即删除涉嫌侵权内容。

正文完
 0