前言


作为IT技术人员,在日常工作中云服务器的使用不可或缺,华为云Flexus云服务器X实例以其卓越的性能和高性价比成为理想的选择。选择华为云Flexus X实例,就意味着步入了一个充满无限可能的技术世界。本次实践我们专注于在华为云Flexus X实例上运行的openEuler系统中部署OpenResty,以实现高效稳定的Web服务访问。通过华为云的强大技术支持,整个部署过程显得尤为顺畅。无论是计算能力还是网络稳定性,华为云都展现了其在云服务领域的领先地位。使用华为云不仅提升了工作效率,也为未来的项目部署奠定了坚实的基础。


一、Flexus云服务器X实例介绍

1.1 Flexus云服务器X实例简介

华为云Flexus云服务器X实例是新一代面向中小企业和开发者的柔性算力云服务器。它能够智能感知业务负载的变化,自动调整资源配置。这款服务器特别适用于中低负载的应用场景,例如电商直播、企业网站建设、开发测试环境、游戏服务器以及音视频服务等。X实例的设计理念旨在为用户提供更加灵活和高效的计算资源管理方式。通过智能调整,它可以更好地满足不同业务的需求,提高资源利用率。

在这里插入图片描述

1.2 Flexus云服务器X实例特点

  • 提供丰富的公共镜像:Flexus云服务器X实例提供多种公共镜像供用户选择,方便快速部署各种应用和服务。

  • 可灵活自定义vCPU内存配比:用户可以根据自己的需要灵活调整虚拟CPU和内存的配比,以满足不同场景的需求。

  • 智能感知业务动态升降配:Flexus云服务器X实例能够智能感知业务的负载情况,并根据需要自动升降配,以满足业务的需求,提高系统的稳定性和性能。

  • 负载范围更高:相对于Flexus应用服务器L实例,Flexus云服务器X实例能够处理更高的负载,适用于更复杂和繁忙的场景。

1.3 Flexus云服务器X实例使用场景

Flexus云服务器X实例针对不同的使用场景展现出其独特的优势:

  1. 电商直播:利用X实例搭建电商交易平台,可以有效应对电商市场的瞬息万变,从容处理业务压力波动,确保交易过程顺畅无阻。

  2. 企业建站:面向博客、论坛和企业门户等应用场景,X实例帮助企业高效传播价值信息,促进信息共享与交流,支持构建多功能传播和交互平台。

  3. 个人开发测试:开发者在开发和测试过程中所需的环境资源可以通过X实例便捷获取,不仅提高了搭建效率,而且降低了成本。

  4. 游戏服务器:适用于搭建游戏后台服务器,强大的计算能力可以轻松应对大量玩家同时在线的情况,同时支持平滑扩容,快速应对玩家数量增长的需求,以及提供出色的网络加速能力以提升用户体验。

二、OpenResty介绍

2.1 OpenResty简介

OpenResty是一个基于Nginx的高性能Web平台,通过嵌入Lua脚本扩展Nginx的功能。它结合了Nginx的强大性能与Lua的灵活性,为开发者提供了丰富的工具集来构建复杂的应用。

2.2 OpenResty特点

  • 高性能:OpenResty继承了Nginx的高效性能和低资源消耗特性,加上Lua的高效执行速度,使其能够轻松应对高并发请求。
  • 高扩展性:开发人员可以通过编写Lua脚本扩展其功能,实现对HTTP请求的处理、数据库访问、数据缓存等多种任务。
  • 轻量级:相较于传统Web框架,OpenResty无需启动额外的应用服务器或中间件,更加轻便。
  • 简单易用:Lua是一种简洁易学的语言,使开发人员能够迅速掌握并运用。
  • 高可靠性:基于广受赞誉的Nginx服务器,OpenResty在稳定性和可靠性方面表现出色。

2.3 OpenResty使用场景

  • Web应用开发:作为高性能Web应用的开发平台,OpenResty利用Lua脚本在Nginx层面处理业务逻辑,提升应用性能。
  • API网关:通过OpenResty的反向代理和负载均衡功能,实现对微服务接口的统一管理和控制,并增强系统的安全性和可扩展性。
  • 静态资源服务器:利用Nginx的高并发处理能力,OpenResty能够高效地提供静态文件服务。
  • 缓存服务:在Nginx层面实施缓存策略,减轻后端服务压力,提高响应速度。
  • 日志分析:借助第三方模块,OpenResty支持实时日志收集与分析,帮助识别系统瓶颈,优化性能。

三、本次实践介绍

3.1 本次实践简介

1.本次实践为个人测试学习环境,旨在快速部署应用,生产环境请谨慎;
2.本次实践环境为云华为云Flexus云服务器X实例,使用的操作系统为openEuler 22.03 LTS;
3.本次实践在Docker环境下部署Web应用服务器OpenResty。

3.2 本次环境规划

服务器类别公共镜像选择内网IP地址Docker版本操作系统版本
华为云Flexus云服务器X实例openEuler192.168.0.16926.1.3openEuler 22.03 LTS

四、远程连接华为云Flexus云服务器X实例

4.1 购买Flexus云服务器X实例

进入华为云官网:https://activity.huaweicloud.com/,登录自己的华为云账号,进入华为云首页。

在这里插入图片描述
在这里插入图片描述

  • 镜像选择:本次实践使用openEuler作为公共镜像,请根据实际需求自定义选择合适的操作系统镜像。
  • 镜像切换说明:参考的公共镜像原为Huawei Cloud EulerOS,但本次实践中已切换至openEuler。
  • 基础配置参考:购买时可参考以下基础配置进行选择。

1.计费模式:包年/包月,这里选择此模式;
2.区域:华北—北京四,可用区:随机即可;
3.实例规格:关闭性能模式,选择自定义,4vCPUs | 12GiB;
4.镜像:公共镜像,Huawei Cloud EulerOS,版本,Huawei Cloud EulerOS 2.0 Standard 64 bit(10GiB);
5.应用加速:这里选择不加速;
6.存储:系统盘,通用型SSD100G;
7.网络:选择默认即可;
8.安全组:选择默认即可;
9.弹性公网IP:选择“现在购买”,全动态BGP,带宽3Mbit/s;
10.云服务器名称:可自定义设置,这里选择默认的名称;
11.登录凭证:自定义设置密码;
12.云备份:暂不购买;
其余配置默认即可。

  • 确认配置及购买:在确认配置页面仔细检查Flexus云服务器X实例的各项设置,确保无误后点击“立即购买”,完成付款流程即可成功购买。

在这里插入图片描述

4.2 查看Flexus云服务器X实例状态

进入华为云Flexus云服务的控制台,选择Flexus云服务器X实例,可以看到已经正在运行的Flexus云服务器X实例。

在这里插入图片描述

4.3 使用Xshell远程连接

  • 复制Flexus云服务器X实例的弹性公网IP地址

在这里插入图片描述

  • 主要填写Flexus云服务器X实例的弹性公网IP地址,输入其登录用户和密码,连接即可。

在这里插入图片描述

在这里插入图片描述

五、检查Flexus云服务器X实例系统环境

5.1 检查操作系统版本

检查Flexus云服务器X实例的操作系统版本,本次实践选择的版本为openEuler 22.03 LTS

[root@flexusx-51a1 ~]# cat /etc/os-release
NAME="openEuler"
VERSION="22.03 LTS"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03 LTS"
ANSI_COLOR="0;31"

5.2 检查内核版本

检查当前操作系统的内核版本,当前内核版本为5.10.0-60.109.0.136.oe2203.x86_64

[root@flexusx-51a1 ~]# uname -r
5.10.0-60.109.0.136.oe2203.x86_64

5.3 检查Docker版本

部署该项目需要提前安装Docker环境,检查Docker版本,当前安装的Docker版本为 26.1.3

[root@flexusx-51a1 ~]# docker -v
Docker version 26.1.3, build b72abbb

5.4 检查Docker服务状态

检查Docker服务状态,确保Docker服务正常。

[root@flexusx-51a1 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
     Active: active (running) since Sun 2024-09-08 14:54:37 CST; 1 day 9h ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 1264 (dockerd)
      Tasks: 1751
     Memory: 1.0G
     CGroup: /system.slice/docker.service
             ├─ 1264 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

5.5 检查Docker compose版本

检查docker compose版本,当前默认安装版本为v2.27.0

[root@flexusx-51a1 ~]# docker compose version
Docker Compose version v2.27.0

六、部署OpenResty应用

6.1 下载OpenResty相关镜像

执行以下命令,拉取OpenResty镜像openresty/openresty,版本为latest。

[root@flexusx-51a1 ~]# docker pull  openresty/openresty
Using default tag: latest
latest: Pulling from openresty/openresty
76956b537f14: Pull complete
3773beab0351: Pull complete
b98b811bf239: Pull complete
8cc852136401: Pull complete
Digest: sha256:2c0d70fa5142833e5dfe01e6ba75ec5980ac8a830a4f30696a0d736a418119af
Status: Downloaded newer image for openresty/openresty:latest
docker.io/openresty/openresty:latest

在这里插入图片描述

6.2 创建挂载目录

执行以下命令,创建宿主机的挂载目录/data/openresty/nginx/{conf,logs,html}。

mkdir -p /data/openresty/nginx/{conf,logs,html}  && cd /data/openresty

6.3 使用docker-cli创建OpenResty(可选)

使用docker-cli方式创建OpenResty,可参考以下命令。建议采用docker compose方式部署,易于管理。本次实践使用docker compose方式部署,可以参考后续步骤。

docker run --name openresty \
--restart always  \
-p 80:80 \
-d openresty/openresty

6.4 拷贝nginx配置文件

  • 运行测试容器web01
docker run --name web01 \
-p 8710:80 \
-d openresty/openresty
  • 拷贝容器内nginx.conf配置文件到./nginx/conf目录下
docker cp web01:/usr/local/openresty/nginx/conf/nginx.conf /data/openresty/nginx/conf
  • 删除测试容器
[root@flexusx-51a1 openresty]# docker rm -f web01
web01

6.5 编辑docker-compose.yaml文件

本次使用使用docker compose方式部署,需要新建及编辑docker-compose.yaml文件。在部署文件中,可以自定义修改宿主机映射端口等信息,注意防止端口冲突。

vim docker-compose.yaml
version: '3.9'
services:
    openresty:
        image: openresty/openresty
        volumes:
            - '/etc/localtime:/etc/localtime'
            - '/data/openresty/nginx/html:/usr/local/openresty/nginx/html'
            - '/data/openresty/nginx/logs:/usr/local/openresty/nginx/logs'
            - '/data/openresty/nginx/conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf'
        restart: always
        container_name: openresty
        ports:
            - '8130:80'



6.6 创建OpenResty容器

执行以下命令,快速创建OpenResty容器。

[root@flexusx-51a1 openresty]# docker compose up -d
WARN[0000] /data/openresty/docker-compose.yaml: `version` is obsolete
[+] Running 2/2
 ✔ Network openresty_default  Created                                                                                                                          0.0s
 ✔ Container openresty        Started                                                                                                                          0.2s

在这里插入图片描述

6.7 查看OpenResty容器状态

检查OpenResty容器状态,确保OpenResty容器正常启动。

[root@flexusx-51a1 openresty]# docker compose ps
WARN[0000] /data/openresty/docker-compose.yaml: `version` is obsolete
NAME        IMAGE                 COMMAND                  SERVICE     CREATED          STATUS          PORTS
openresty   openresty/openresty   "/usr/bin/openresty …"   openresty   12 seconds ago   Up 12 seconds   0.0.0.0:8130->80/tcp, :::8130->80/tcp

在这里插入图片描述

七、访问OpenResty服务前准备工作

7.1 设置防火墙与selinux

  • 执行以下命令,关闭防火墙。
 systemctl stop firewalld && systemctl disable firewalld
  • 关闭selinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

7.2 Flexus云服务器X实例安全组配置

进入Flexus云服务器X实例控制台,进行安全组规则配置。在安全组入方向规则上,放行8130端口。

在这里插入图片描述

八、部署测试应用

8.1 进入挂载目录

进入到宿主机的网站挂载目录/data/openresty/nginx/html

[root@flexusx-51a1 openresty]# ls
docker-compose.yaml  nginx
[root@flexusx-51a1 openresty]# cd nginx/html/
[root@flexusx-51a1 html]# pwd
/data/openresty/nginx/html

8.2 拉取项目

执行以下命令,在Github上拉取my-mind项目的源码。

 git clone https://github.com/ondras/my-mind.git

在这里插入图片描述

执行以下命令,查看mymind项目内容。

[root@flexusx-51a1 html]# tree  -L 2 ./my-mind/
./my-mind/
├── css
│?? ├── context-menu.less
│?? ├── font.less
│?? ├── map.less
│?? ├── my-mind.less
│?? ├── pane.less
│?? └── print.less
├── editor.html
├── examples
│?? ├── features.mymind
│?? └── Goldfish.mymind
├── favicon.ico
├── github.png
├── img
│?? ├── help.png
│?? ├── new.png
│?? ├── notes-indicator.png
│?? ├── notes.png
│?? ├── open.png
│?? ├── save-as.png
│?? ├── save.png
│?? └── throbber.gif
├── index.html
├── LICENSE.txt
├── logo
│?? ├── logo128.png
│?? ├── logo16.png
│?? ├── logo256.png
│?? ├── logo32.png
│?? ├── logo64.png
│?? └── logo.svg
├── Makefile
├── map.css
├── my-mind.css
├── my-mind.js
├── package.json
├── PRIVACY.txt
├── README.md
├── screenshot.png
└── src
    ├── action.ts
    ├── backend
    ├── clipboard.ts
    ├── command
    ├── format
    ├── history.ts
    ├── html.ts
    ├── item.ts
    ├── keyboard.ts
    ├── layout
    ├── map.ts
    ├── mouse.ts
    ├── my-mind.ts
    ├── pubsub.ts
    ├── shape
    ├── svg.ts
    ├── title.ts
    ├── tsconfig.json
    └── ui

11 directories, 48 files

8.3 访问OpenResty应用

访问地址:http://弹性公网IP地址:8130/my-mind,将IP替换为自己华为云Flexus云服务器X实例的弹性公网IP地址,可以看到正常访问到my-mind网页。

在这里插入图片描述

九、配置https访问web服务

9.1 配置自签名证书

  • 进入宿主机的/data/openresty/nginx/conf目录中
[root@flexusx-51a1 openresty]# cd nginx/conf/
[root@flexusx-51a1 conf]# pwd
/data/openresty/nginx/conf
  • 依次执行以下命令,生成SSL证书相关文件。
openssl genrsa -out nginx.key 4096
openssl req -new -key nginx.key -out nginx.csr
openssl x509 -req -days 365 -in nginx.csr -signkey nginx.key -out nginx.crt

在这里插入图片描述

9.2 修改nginx.conf配置文件

/data/openresty/nginx/conf目录中,修改nginx.conf文件,新增以下内容。

vim nginx.conf
  server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      /usr/local/openresty/nginx/conf/nginx.crt;
    ssl_certificate_key  /usr/local/openresty/nginx/conf/nginx.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location /my-mind {
        root   html;
        index  index.html index.htm;
    }
}

  • 删除OpenResty容器
docker rm -f openresty 

9.3 修改docker-compose.yaml文件

修改docker-compose.yaml文件,内容如下:

version: '3.9'
services:
    openresty:
        image: openresty/openresty
        volumes:
            - '/etc/localtime:/etc/localtime'
            - '/data/openresty/nginx/html:/usr/local/openresty/nginx/html'
            - '/data/openresty/nginx/logs:/usr/local/openresty/nginx/logs'
            - '/data/openresty/nginx/conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf'
            - '/data/openresty/nginx/conf/nginx.key:/usr/local/openresty/nginx/conf/nginx.key'
            - '/data/openresty/nginx/conf/nginx.crt:/usr/local/openresty/nginx/conf/nginx.crt'
        restart: always
        container_name: openresty
        ports:
            - '8130:80'
            - '8132:443'

9.4 重新创建OpenResty容器

执行以下命令,重新创建OpenResty容器。

[root@flexusx-51a1 openresty]# docker compose up -d
WARN[0000] /data/openresty/docker-compose.yaml: `version` is obsolete
[+] Running 2/2
 ✔ Network openresty_default  Created                                                                                                                          0.0s
 ✔ Container openresty        Started                                                                                                                          0.2s

9.5 查看OpenResty容器状态

查看OpenResty容器状态,确保容器正常启动。

[root@flexusx-51a1 openresty]#  docker compose ps
WARN[0000] /data/openresty/docker-compose.yaml: `version` is obsolete
NAME        IMAGE                 COMMAND                  SERVICE     CREATED          STATUS          PORTS
openresty   openresty/openresty   "/usr/bin/openresty …"   openresty   35 minutes ago   Up 35 minutes   0.0.0.0:8130->80/tcp, :::8130->80/tcp, 0.0.0.0:8132->443/tcp, :::8132->443/tcp

9.6 使用https访问OpenResty应用

访问地址:https://弹性公网IP地址:8132/my-mind,将IP替换为自己华为云Flexus云服务器X实例的弹性公网IP地址,可以看到正常访问到OpenResty应用my-mind工具网页。

在这里插入图片描述

十、使用体验与总结

在本次实践中,我们不仅成功地在华为云Flexus云服务器X实例上部署了OpenResty服务,整个部署过程流畅无阻,彰显了华为云的卓越技术实力与高质量服务。华为云Flexus X实例凭借其优异的性价比、强大的计算性能和稳定的运行表现,为OpenResty的部署提供了坚实的基础。无论是在网络连接的稳定性还是操作过程的高效性方面,华为云均表现出色,确保了无缝的用户体验。OpenResty作为一个基于Nginx的高性能Web平台,在华为云的支撑下,充分发挥了其高并发处理能力与扩展性优势。此次部署体验再次证明了华为云在云计算领域的领导地位,为未来的项目部署树立了新的标杆。


趁着华为云828 B2B企业节的强劲东风,快来探索Flexus X实例带来的超值优惠,亲身体验技术与创新的完美交融。不论是高性能计算需求,还是智能化监控应用,每一个细节都体现了华为云对卓越品质的不懈追求与坚定承诺。加入华为云,不仅仅意味着技术层面的跃升,更是向未来迈出的关键一步。让我们携手共进,共创云端的新辉煌!


在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐