基于华为云平台的 “微信公众号后台消息回复” + “云容器快速搭建网站”

举报
saika 发表于 2023/10/27 17:01:50 2023/10/27
【摘要】 本文根据华为云微认证相关内容实现了 “微信公众号后台消息回复” + “云容器快速搭建网站”

基于华为云平台

微信公众号后台消息回复

+

云容器快速搭建网站


目录

一、      实验简介      1

1.1 实验背景      1

1.1.1 微信公众号      1

1.1.2 云容器快速搭建网站      1

1.2 实验目的      1

二、      微信公众号后台消息回复      2

2.1 实验架构      2

2.2 实验流程      2

2.3 注册微信公众号      3

2.4 创建虚拟私有云 VPC      3

2.5 创建弹性云服务器 ECS      4

2.6 安装 Python 及相关框架      5

2.7 利用 WinSCP 上传相关代码      7

2.7.1 main.py 文件:主程序      7

2.7.2 handle.py 文件:定义服务请求、接受、发送、处理等相关方法      8

2.7.3 receive.py 文件:定义相关信息处理的类和方法      9

2.7.4 reply_text.xml 文件:执行信息回复时使用的数据包      11

2.7.5 利用 WinSCP 上传代码      11

2.8 对接微信公众号接口 & 启动服务      12

2.8 实验结果验证      13

三、      制作私有镜像搭建 Guestbook      15

3.1 实验架构      15

3.2 实验流程      16

3.3 创建虚拟私有云 VPC      16

3.4 创建弹性云服务器 ECS & 安装 docker      16

3.5 制作 Guestbook 镜像;      18

3.5.1 制作 Frontend 组件镜像      18

3.5.2 制作 redis redisslave 镜像      20

3.6 CCE 上创建集群并添加节点      21

3.7 连接华为云私有镜像仓库并上传镜像      22

3.8 创建 guestbook 容器工作负载      24

3.9 实验结果验证      26

四、      实验中遇到的问题      27

4.1 微信公众号无法正常回复      27

4.2 工作负载 redisslave 无法正常启动      27

五、      创新性内容      28

六、      实验总结      29

七、      附录:华为微认证证书      30




1、 实验简介

1.1实验背景

Cloud 2.0时代,企业更加关注应用上云,期待应用的高效迁移部署和快速迭代开发。在容器 运用日趋普及的当下,利用容器来提升资源利用率、优化算力、简化运维已成了企业云上开发 与运维的共识。在电商、游戏、互联网等众多行业,应用容器化已经成为了必然趋势,面对流 量高峰期,容器的秒级启动为弹性伸缩提供了很好的基础,用户几乎可以实时地根据应用的需 要去扩展/缩小容器规模,这在应用负载多变的场景中及其重要。

1.1.1微信公众号

微信公众号是开发者或商家在微信公众平台上申请的应用账号。通过公众号,商家可以在微 信平台上实现和特定群体的文字、图片、语音、视频的全方位沟通、互动,形成一种主流的线 上线下微信互动营销方式。

本次实验通过弹性云服务器 ECS、弹性公网 IP 搭建微信公众号处理后台,使用 Python 语言编写对应的微信消息处理逻辑代码,接收从微信服务端转发过来的消息,并返回处理结果给最终用户,体验基于华为公有云服务不一样的感受。

1.1.2 云容器快速搭建网站

云容器引擎CCE是基于 K8s 和 Docker 的企业级容器服务,为企业应用提供快速部署、自动化运维、弹性伸缩等容器生命周期管理能力。

实验通过docker容器以及云容器引擎 CCE 平台快速实现了网站搭建,体验到容器为企业应用所带来的极大的便利性。

1.2实验目的

理解弹性云服务器与镜像以及弹性公网 IP 的关系及作用;

掌握在华为公有云服务器上软件安装下载以及版本升级的操作方法;

掌握 WinSCP 工具的正确使用方法;

利用弹性公网 IP 以及 token 成功对接弹性云服务器;

解容器与镜像的关系及作用

掌握镜像制作与上传的原理及流程

利用镜像创建容器工作负载并发布网站服务

利用token验证对传统HTTP无状态协议进行改进

利用CCE集群搭建自己的个人网站

2、 微信公众号后台消息回复

使用 Python+Web.py 组合完成微信公众号开发,在弹性云服务器 ECS 上部署微信公众号后台,配置开发者模式,通过弹性公网 IP 以及 token 成功对接弹性云服务器 ECS。

2.1实验架构

图2-1 实验原理架构

由于HTTP是一种没有状态的协议,它并不知道是谁访问了我们的应用,用户使用用户名还有密码通过了身份验证,不过下次这个用户再发送请求的时候,还得再验证一下。

Token是服务端生成的一串加密字符串,用作客户端进行请求的一个“令牌”。当用户第一次使用账号密码成功进行登录后,服务器便生成一个Token及Token失效时间并将此返回给客户端,若成功登陆,以后客户端只需在有效时间内带上这个Token前来请求数据即可,无需再次带上用户名和密码

2.2实验流程

图2-2 实验流程图

2.3注册微信公众号

1) 输入微信公众平台网站平台https://mp.weixin.qq.com/,在上方点击“立即注册”;

2) 在弹出的注册界面中,选择“订阅号”,并点击

3) 选择“订阅号”后,按照腾讯公众号指引流程进行引导注册,填写“基本信息”

4) 完成注册,公众号管理界面如图2-3所示。

图2-3 微信公众号注册成功

2.4创建虚拟私有云VPC

1) 登陆华为云控制台,点击左侧图标找到“网络>虚拟私有云 VPC”,进入网络控制台,点击“创建虚拟私有云”进入创建界面;

2) 创建虚拟私有云vpc-shiyan,其相关配置如图2-4所示;

图2-4 虚拟私有云创建成功


3) 配置vpc-shiyan子网subnet-shiyan如图2-5所示

图2-5 VPC子网配置成功


4) 在网络控制台左侧菜单栏中点击“访问控制 > 安全组”进入安全组页面,点击需要修改的安全组“Sys-default在“入方向规则”中点击“添加规则”。

5) 添加两条规则如图2-6所示:

(a) 开放80端口

(b) 开放22端口

图2-6 安全组设置

其中22端口用于远程连接服务器,80端口用于启动python程序以及相关服务

2.5创建弹性云服务器ECS

1) 登陆华为云控制台,点击“计算>弹性云服务器 ECS”,进入云服务器控制台,购买弹性云服务器,其相关配置如下图2-7所示:

图2-6 弹性云服务器相关配置


2) 利用华为云CloudShell进入刚刚购买的服务器ecs-shiyan,选择公网登陆,输入密码便可登陆进入服务器控制台界面

图2-7 成功登陆服务器ecs-shiyan

2.6安装Python及相关框架

1) 使用如下命令wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0a1.tar.xz下载 Python 安装包,并解压;

图2-8 成功解压python安装包

2) 进入Python-3.6.0a1目录下(cd Python-3.6.0a1),执行命令“./configure”(检查、配置),生成Makefile文件后,执行命令“ make && make install ”(编译源码、并编译结果复制到相应目录中)

图2-9 “./configure”成功生成“ Makefile”文件

图2-10 python安装成功但是pip安装错误

3) 查看Python3版本python3安装成功!

图2-11 python版本Python 3.6.0a1

4) 重新安装pip(由于前面安装提示pip安装错误)

5) 使用命令yum install openssl-devel-y安装openssl-devel

6) 执行命令make && make install,完成pip安装

图2-12 pip安装成功

7) 使用命令pip3 install --upgrade pip,成功将pip升级到最新版本

图2-13 pip升级成功

8) 使用如下命令安装web.py框架: “pip3 install web.py == 0.40.dev0”

图2-14 web.py安装成功

2.7利用WinSCP传相关代码

通常情况下,我们在本地Windows操作系统上编辑代码,完成后再上传至ECS弹性云服务器上。WinSCP一个Windows环境下使用的SSH的开源图形化SFTP客户端,同时支持SCP协议。它的主要功能是在本地与远程计算机间安全地复制文件,并且可以直接编辑文件。打开浏览器输入WinSCP安装链接:https://winscp.net/eng/docs/lang:chs即可下载。

此外,我们还需要在这一步编写服务所需的相关python代码

2.7.1 main.py文件:主程序

1) 在本地新建一个记事本文件,输入代码如下:

# -*- coding: utf-8 -*-

filename: main.py

import web

from handle import Handle

urls = ('/wx''Handle',)

if __name__ == '__main__':

    app = web.application(urlsglobals())

app.run()



2) 将该记事本文件另存为,格式如下:

文件名:main.py

保存类型:所有文件

编码:UTF-8

3) main.py主程序用于调用相关方法,启动自动回复消息的程序服务


2.7.2 handle.py文件定义服务请求、接受、发送、处理等相关方法

1) 在本地新建一个记事本文件,输入代码如下:

# -*- 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 = "weixin"

            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 (Exceptionas 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 (Exceptionas Argment:

          return Argment



2) 将该记事本文件另存为,格式如下:

文件名:handle.py

保存类型:所有文件

编码:UTF-8

3) handle.py中定义了两类方法,Get方法和Post方法,Get中定义了token的取值,Post方法中定义了对应消息的回复语句,并通过receive.py以及main.py形成相关调用


2.7.3 receive.py文件定义相关信息处理的类和方法

1) 在本地新建一个记事本文件,输入代码如下:

# -*- 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__(selfxmlData):

        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__(selfxmlData):

        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__(selfxmlData):

        Msg.__init__(selfxmlData)

        self.Content = xmlData.find('Content').text

    

class ImageMsg(Msg):

    def __init__(selfxmlData):

        Msg.__init__(selfxmlData)

        self.PicUrl = xmlData.find('PicUrl').text

        self.MediaId = xmlData.find('MediaId').text

    

class LocationMsg(Msg):

    def __init__(selfxmlData):

        Msg.__init__(selfxmlData)

        self.Location_X = xmlData.find('Location_X').text

        self.Location_Y = xmlData.find('Location_Y').text


class EventMsg(Msg):

    def __init__(selfxmlData):

        Event.__init__(selfxmlData)

        self.Event = xmlData.find('Event').text



2) 将该记事本文件另存为,格式如下:

文件名:handle.py

保存类型:所有文件

编码:UTF-8


2.7.4 reply_text.xml文件执行信息回复时使用的数据包

1) 新建templates文件夹,在文件夹下新建记事本文件输入代码如下:

$def with (toUser,fromUser,createTime,content)

<xml>

<ToUserName><![CDATA[$toUser]]></ToUserName>

<FromUserName><![CDATA[$fromUser]]></FromUserName>

<CreateTime>$createTime</CreateTime>

<MsgType><![CDATA[text]]></MsgType>

<Content><![CDATA[$content]]></Content>

</xml>


2) 将该记事本文件另存为,格式如下:

文件名:reply_text.xml

保存类型:所有文件

编码:UTF-8

3) 当用户发送文本消息给公众号时,会产生一个POST请求,开发者可以在响应包(Get)中返回特定XMIL结构,来对该消息进行响应

4) XML文件是公众号需要执行回复消息功能的一个数据包,其中包括了多个参数

ToUserName :接收方帐号(收到的OpenID )

FromUserName’:开发者微信号

CreateTime’:消息创建时间(整型)

MsgType’:消息类型,文本为text

Content’:回复的消息内容


2.7.5 利用WinSCP上传代码

1) 打开 WinSCP,在界面中输入弹性云主机的弹性公网IP 123.249.65.1、用户名以及密码,确认输入无误后,点击登录;

2) 在本地创建一个名称为wx的文件夹,将上述代码文件拖入到该文件夹中

3) WinSCP 工具将wx文件夹上传到云服务器的根目录中

图2-15 文件传输成功

2.8对接微信公众号接口 & 启动服务

1) 使用如下命令python3 main.py 80启动服务。启动成功如图2-16所示

图2-16 服务启动成功

开放80端口启动python微信公众号自动回复消息服务

2) 登录微信公众平台,选择“设置与开发 > 基本配置”,单击“修改配置”

3) 填写配置信息如图2-17所示,单击“提交”,等待验证 token 成功,单击启用

图2-17 微信公众号配置服务器接口

URL:填写 ECS 上配置的弹性公网 IP,此处应该写:http://123.249.65.1/wx

Token:需要与 handle.py 中对应 token 取值完全一致,此处为 weixin

EncodingAESKey:随机生成

消息加解密方式:选择简单的“明文模式”

2.8实验结果验证

根据python中的程序设计,对公众号输入任何信息message,公众号都会回复“欢迎关注! + message如图2-20所示的信息

图2-18 查找公众号

图2-19 根据客户端请求的服务器响应信息

图2-20 公众号自动回复信息

HTTP 是以ASCII 码传输的,建立在TCP/IP 协议之上的应用层规范。HTTP 请求包括:请求行、请求头、消息主体数据。

由图2-19不难看出,handle.py文件根据其定义的Get方法获取并处理客户端的请求,结合xml文件形成需要回复的信息,并保存于变量content,最后Post回复给客户端。最后可见如图2-19中白框里的HTTP -200 OK,表示响应成功。

3、 制作私有镜像搭建 Guestbook

在安装好docker环境的虚拟机中制作 Guestbook的三个镜像:frontend, redis和redisslave,并上传到云容器引擎 CCE 的镜像仓库中,通过私有镜像发布容器服务,搭建 Guestbook留言簿。

3.1实验架构

图3-1 实验架构

容器为App提供独立的、受控的运行环境,是一种轻量级的操作系统虚拟化

Docker是目前使用最广泛的容器技术,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。利用该技术,可以将一款软件打包成一个标准化的软件开发单元,其中包括软件运行所需的全部内容:代码、运行时间、系统工具和系统库等。Docker能够在任何环境下快速、可靠、一致地部署应用程序。

3.2实验流程

图3-2 实验流程图

3.3创建虚拟私有云VPC

1) 在控制台,在“服务列表”下点击“网络 > 虚拟私有云”,进入网络控制台,点击“创建虚拟私有云”进入创建界面,配置如图2-4、图2-5所示,完成后点击“立即创建”;此处可直接采用上一个实验创建的虚拟私有云VPC

图3-3 直接采用上一个实验创建的VPC

2) 在网络控制台左侧菜单栏中点击“访问控制”下“安全组”进入安全组页面,选择 Sys-default默认安全组进行配置规则。 Sys-default 安全组添加一条如下图3-4所示的入方向规则,点击添加规则

图3-4 安全组添加入方向规则

3.4创建弹性云服务器 ECS & 安装docker

1) 登录华为云控制台,在“服务列表”下点击“计算 > 弹性云服务器”,进入云服务器控制台,点击购买弹性云服务器ECS,其相关配置如下图3-5所示

图3-5 弹性云服务器demo-ecs相关配置

2) 利用华为云CloudShell进入刚刚购买的服务器demo-ecs,选择公网登陆,输入密码便可登陆进入服务器控制台界面

图3-6 成功登录弹性云服务器demo-ecs

3) 利用指令“apt install docker.io”快速安装Docker

原实验指导书上使用的curl -fsSL get.docker.com -o get-docker.sh指令此处不适用,采用华为云服务器提示提供的指令apt install docker.io”快速安装

4) 安装完成后利用docker version命令查询到 docker 版本

图3-7 docker安装成功(检查版本)

3.5制作Guestbook镜像

制作Guestbook镜像中,需要制作三个镜像:frontend作为前端网页服务镜像,代码逻辑全在Frontend组件内,redis和redisslave负责存储,互为主备。

3.5.1 制作Frontend 组件镜像

1) 分别执行如下命令,新建用于存放frontend组件文件的目录

mkdir guestbook

cd guestbook

mkdir frontend

cd frontend

2) 新建guestbook.php文件填写相关代码到guestbook.php文件中

使用指令vi guestbook.php新建文件先按i”,再文件中填写代码,退出时先按“esc”,再按“:wq”保存并退出;

图3-8 guestbook.php文件相关代码



3) 新建controllers.js文件填写相关代码controllers.js文件中,具体操作同上

图3-9 controllers.js文件相关代码

4) 新建index.html文件填写相关代码index.html文件中,具体操作同上;

图3-10 index.html文件相关代码

5) 在当前frontend目录下,利用vi Dockerfile编写Dockerfile文件构建frontend镜像

图3-11 编写Dockerfile文件

FROM 语句:表示使用 php:5-apache 镜像作为基础。

RUN 语句:表示使用 apt-get 命令来更新软件包列表和安装 Predis

ADD 语句:将本地代码文件添加到镜像中。

6) 执行docker build –t frontend .(此处的指令必须手打)命令制作 frontend 镜像

图3-12 成功制作frontend镜像

3.5.2 制作redisredisslave镜像

1) 返回guestbook目录下,创建redisslave文件夹

2) 编写run.sh文件

图3-13 编写run.sh文件

3) 在当前redisslave目录下,编写redisslave镜像的Dockerfile文件

图3-14 编写Dockerfile文件

4) 执行命令docker build –t redisslave .”,制作redisslave的镜像

图3-15 成功制作redisslave镜像

5) 执行docker images命令,可以查看到已经制作好的guestbook的三个镜像

图3-16 成功制作redisslave镜像

3.6CCE上创建集群并添加节点

云容器引擎(Cloud Container Engine,简称CCE)提供高度可扩展的、高性能的企业级Kubernetes集群,支持运行Docker容器。借助云容器引擎,您可以在华为云上轻松部署、管理和扩展容器化应用程序。


1) 在“服务列表”下选择容器服务>云容器引擎 CCE,进入云容器引擎页面

2) 在云容器引擎“总览”界面,点击“购买 CCE集群”

3) 创建集群,设置集群参数如下3-17所示,确认并购买;

图3-17 CCE集群相关配置

原实验指导书上要求创建Kubernetes集群现在华为云不提供可以直接创建Kubernetes集群的方法,因此此处直接创建包含Kubernetes生态的CCE集群


4) 等待CCE集群创建成功,成功后如图3-18所示,点击右下角创建节点;

图3-18 CCE集群创建成功

原实验指导书上创建节点是在购买集群的时候创建的,但现在华为云只支持集群创建成功之后才能创建节点

5) 创建节点,设置参数参考如下3-19所示;

图3-19 CCE集群节点配置

6) 等待一段时间后,CCE集群创建成功。

图3-20 CCE集群创建成功

3.7连接华为云私有镜像仓库并上传镜像

1) 返回云容器引擎控制台,进入“镜像仓库”

2) 在容器镜像服务中,选择“组织管理”创建组织

此处创建一个新组织saika_xuan如图3-21所示


图3-21 组织创建成功

3) 组织创建成功后,进入“我的镜像”,单击“客户端上传”。点击弹出对话框中的“生成临时 docker login 指令docker login -u cn-north-4@1IIK1L5253KM6X46XYXX -p abec48bd8cb6e434621a921ab16f941234e15687eaef9db1a701e86870dda335 swr.cn-north-4.myhuaweicloud.com

4) 云服务器中粘贴docker login指令,成功连接镜像仓库后,执行 docker images 命令,查看到已制作好的三个镜像以及镜像的版本(TAG),现在需要对这三个镜像打上新的标签,然后推送到镜像仓库中。

其使用的相关指令如下:

打标签:

docker tag frontend:latest swr.cn-north-4.myhuaweicloud.com/saika_xuan/frontend:latest

docker tag redisslave:latest swr.cn-north-4.myhuaweicloud.com/saika_xuan/redisslave:latest

docker tag redis:3.0 swr.cn-north-4.myhuaweicloud.com/saika_xuan/redis:3.0

推送:

docker push swr.cn-north-4.myhuaweicloud.com/saika_xuan/frontend:latest

docker push swr.cn-north-4.myhuaweicloud.com/saika_xuan/redisslave:latest

docker push swr.cn-north-4.myhuaweicloud.com/saika_xuan/redis:3.0

图3-22 镜像推送成功

图3-23 华为云平台上可见新的镜像

3.8创建 guestbook 容器工作负载

为已经上传的 guestbook 三个镜像创建容器工作负载,因为三个工作负载有相关性,需要按照顺序进行创建:1.redis;2.redisslave;3.frontend。

1) 进入到云容器引擎控制台,打开“工作负载”界面,点击“创建无状态工作负载”

2) 创建redis工作负载,填写工作负载基本信息,参数参考如

(a) redis工作负载基本配置

(b) redis-master服务

图3-24 创建redis工作负载

3) 点击添加服务,添加 redis-master 服务,设置参数参考如上;

4) 以同样的方式创建 redisslave 工作负载,添加容器中选择 redisslave 镜像。添加服务

中设置服务名称为“redis-slave”,容器端口与访问端口均为“6379”;

5) 返回云容器引擎界面,继续创建 guestbook 无状态工作负载

其基本配置如上相同,除了镜像选择不同;

6) 添加guestbook服务,设置参数如下

图3-25 创建guestbook服务

7) 返回工作负载列表,可以看到三个工作负载正常工作

图3-26 工作负载正常工作

8) 利用均衡负载的弹性公网IP 114.116.223.174访问网站

图3-27 均衡负载实例

3.9实验结果验证

输入网址 http://114.116.223.174/ 即可打开刚刚搭建好的网站。

图3-28 均衡负载实例

云容器引擎(CCE)提供高度可扩展的、高性能的企业级Kubernetes集群,支持运行Docker容器。借助云容器引擎,这使得我们可以在华为云上轻松部署、管理和扩展容器化应用程序。

由图3-28不难看出,本次实验成功实现了在线留言网站的基础搭建,体现了华为云CCE集群的便捷性、可靠性、高效性





4、 实验中遇到的问题

4.1微信公众号无法正常回复

在图4-1中,前面的信息没有被成功回复是因为服务器出现问题,经检查相关报错信,发现是因为python的程序handle.py中缩进格式出现问题。Python是强缩进要求的语言,因此不能出现“tab”和“space”混用的情况。

图4-1 微信公众号无法正常回复

4.2工作负载redisslave无法正常启动

第一次创建好redisslave工作负载后,华为云系统上显示该工作负载无法正常使用,经检查其系统日志发现,是因为创建镜像的时候,run.sh文件编写错误,导致无法识别该指令,进而导致系统报错。

图4-2 redisslave工作负载日志

如图4-2所示,在云服务器中将run.sh文件的指令代码“redis-erver”改为“redis-server”,再重新创建镜像,上传至华为云镜像库即可。

但是再次上传后,依旧报送了相同的错误,我认为这可能是再次创建的镜像和之前的名字相同的原因,因此我改变了创建的镜像的名称,成功实现了系统的功能。

5、 创新性内容

利用前文应用的方法,将自己制作的网站html、css和js文件利用WinSCP上传至云服务器端,利用docker进行镜像制作,在打标推送至华为云镜像平台,利用CCE集群生成相关工作负载,并利用弹性负载的弹性公网IP查找便可进入网站。

可见利用华为云容器引擎CCE平台可以十分便捷的实现网站的搭建。

1.png

图5-2 个人信息页面

6、 实验总结

通过本次实验,我学会了如何利用华为弹性云服务器ECS搭建简易的微信公众号自回复功能,以及如何利用华为云容器引擎CCE搭建属于自己的简易网站。以上这些犯错的经历,我明白了当在部署服务器的过程中遇到问题时,不用慌张,认真阅读系统给出的错误代码和原因,并根据原因去查找错误的地方,再查询相关资料来解决问题。

通过本次实验,我了解了一个网站应用部署的大致流程,熟悉了linux系统中的一些基础操作,包括如何转到对应的文件夹目录下“cd”,如何从网络上获取相应的数据或文件“wget”,如何利用vi编辑文件等基本指令。

我还理解了docker容器的基本工作原理,学会了如何创建一个个人镜像,以及如何创建一个CCE集群并在上面搭载网站,并在最后成功搭建了一个个人网站。

此外,我还成功创建了一个属于自己的微信公众号平台,并学会了公众号后台开发的一些基本流程和方法,实现了简易的消息自回复功能。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。