OpenResty实践 | 在openEuler系统下部署web应用

举报
江湖有缘 发表于 2024/04/21 17:55:04 2024/04/21
【摘要】 OpenResty实践 | 在openEuler系统下部署web应用

一、OpenResty介绍

1.1 OpenResty简介

OpenResty是一个基于Nginx的可伸缩的Web平台,它由Lua编程语言构建而成。OpenResty将Nginx作为核心服务器,并通过在Nginx中嵌入Lua脚本来扩展其功能。

1.2 OpenRestry特点

  • 高性能:OpenResty利用Nginx的高性能和低资源消耗,加上Lua的快速执行速度,可以处理高并发的Web请求。

  • 高扩展性:OpenResty允许开发人员通过编写Lua脚本来扩展其功能,包括处理HTTP请求、访问数据库、缓存数据等。

  • 轻量级:OpenResty在功能上比传统的Web开发框架更轻量级,不需要启动额外的应用服务器或中间件。

  • 简单易用:OpenResty使用Lua编程语言,这是一种简单易学的脚本语言,开发人员可以快速上手。

  • 高可靠性:OpenResty基于Nginx,Nginx作为一个被广泛使用的Web服务器,在稳定性和可靠性方面有着良好的声誉。

1.3 OpenRestry使用场景

  • Web应用开发:OpenResty可以作为一个轻量级的Web框架,用于开发高性能、高并发的Web应用。它的核心是基于Nginx的Lua模块,通过Lua语言的编程能力,开发者可以在Nginx层面完成一些业务逻辑的处理,以提高Web应用的性能和可靠性。

  • API网关:OpenResty可以作为一个API网关,用于统一管理和控制多个微服务接口。通过OpenResty的反向代理和负载均衡功能,可以将请求路由到不同的后端服务上,并对请求进行鉴权、限流、重试等操作,提高系统的可扩展性和安全性。

  • 静态资源服务器:OpenResty可以作为一个高性能的静态资源服务器,用于提供静态文件的访问服务。由于Nginx的高并发处理能力和OpenResty的Lua扩展,可以快速处理大量的静态文件请求,提高用户的访问速度和体验。

  • 缓存服务:OpenResty支持使用内存缓存和分布式缓存,在请求到达时,可以在Nginx层面进行缓存操作,减少后端服务的负载和响应时间。另外,OpenResty还支持一些高级缓存策略,如热点缓存、缓存预加载等,提高系统的性能和可用性。

  • 日志分析:OpenResty可以通过使用第三方模块,如Lua-resty-kafka、Lua-resty-redis等,将请求日志发送到消息队列或Redis,实现实时的日志收集和分析。通过OpenResty的日志处理能力,可以快速识别系统的瓶颈和问题,对系统进行优化和调整。

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为openEuler 22.03。

hostname 本地P地址 操作系统版本 内核版本 Docker版本
openEuler 192.168.3.125 openEuler 22.03 5.10.0-153.12.0.92.oe2203sp2.x86_64 24.0.7

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境;
2.在openEuler环境下部署Docker环境;
3.使用OpenRestry部署一个web应用。

三、检查本地环境

3.1 检查操作系统版本

检查当前操作系统版本,当前操作系统版本为openEuler 22.03。

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

3.2 检查内核版本

检查内核版本,当前操作系统内核版本为5.10.0-153.12.0.92.oe2203sp2.x86_64。

[root@openEuler ~]# uname -r
5.10.0-153.12.0.92.oe2203sp2.x86_64

3.3 检查Docker环境

检查当前是否安装Docker环境,没有安装可看下面的Docker环境部署过程。

[root@openEuler ~]# docker -v
-bash: docker: command not found

四、部署Docker环境

4.1 安装相关依赖包

执行以下命令,安装Docker环境相关依赖包。

 dnf install -y dnf-utils device-mapper-persistent-data lvm2 fuse-overlayfs wget

在这里插入图片描述

4.2 配置Docker的yum仓库

添加docker-ce.repo源,本次使用的华为云的镜像源。

dnf config-manager --add-repo=https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+$releasever+8+' /etc/yum.repos.d/docker-ce.repo

更新缓存

dnf makecache

检查yum仓库状态

[root@openEuler yum.repos.d]# dnf repolist enabled
repo id                                                   repo name
EPOL                                                      EPOL
OS                                                        OS
debuginfo                                                 debuginfo
docker-ce-stable                                          Docker CE Stable - x86_64
everything                                                everything
source                                                    source
update                                                    update
update-source                                             update-source

4.3 安装docker

执行以下命令,使用dnf安装docker。

dnf install -y docker-ce

在这里插入图片描述

4.4 开启路由转发

执行以下命令,开启路由转发功能。

echo "net.ipv4.ip_forward=1" >>  /etc/sysctl.conf
sysctl -p

在/etc/rc.d/rc.local文件中,写入以下内容:

vim /etc/rc.d/rc.local
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

4.5 启动Docker服务

启动Docker服务,并设置开机自启。

systemctl enable --now docker

查看当前Docker服务状态

[root@openEuler ~]# 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 Wed 2024-01-17 17:23:17 CST; 2min 16s ago
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 2047 (dockerd)
      Tasks: 9
     Memory: 29.7M
     CGroup: /system.slice/docker.service
             └─ 2047 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Jan 17 17:23:12 openEuler systemd[1]: Starting Docker Application Container Engine...
Jan 17 17:23:12 openEuler dockerd[2047]: time="2024-01-17T17:23:12.099328424+08:00" level=info msg="Starting up"
Jan 17 17:23:13 openEuler dockerd[2047]: time="2024-01-17T17:23:13.205841306+08:00" level=info msg="Loading containers: star>
Jan 17 17:23:14 openEuler dockerd[2047]: time="2024-01-17T17:23:14.562904207+08:00" level=info msg="Firewalld: interface doc>
Jan 17 17:23:15 openEuler dockerd[2047]: time="2024-01-17T17:23:15.776656547+08:00" level=info msg="Loading containers: done>
Jan 17 17:23:16 openEuler dockerd[2047]: time="2024-01-17T17:23:16.314188764+08:00" level=info msg="Docker daemon" commit=31>
Jan 17 17:23:16 openEuler dockerd[2047]: time="2024-01-17T17:23:16.314426535+08:00" level=info msg="Daemon has completed ini>
Jan 17 17:23:17 openEuler dockerd[2047]: time="2024-01-17T17:23:17.170648967+08:00" level=info msg="API listen on /run/docke>
Jan 17 17:23:17 openEuler systemd[1]: Started Docker Application Container Engine.

4.6 配置镜像加速

执行以下命令,配置Docker镜像加速。

echo '{ "registry-mirrors": ["https://docker.mirrors.sjtug.sjtu.edu.cn"] }'   > /etc/docker/daemon.json 
systemctl daemon-reload  && systemctl restart docker

五、创建OpenRestry容器

5.1 创建挂载目录

创建挂载目录/data/openresty/nginx/{conf,logs,html}

[root@openEuler ~]# mkdir -p /data/openresty/nginx/{conf,logs,html}
[root@openEuler ~]# cd /data/openresty/

5.2 下载openresty镜像

在docker hub拉取openresty镜像

[root@openEuler openresty]# docker pull  openresty/openresty
Using default tag: latest
latest: Pulling from openresty/openresty
b5a0d5c14ba9: Pull complete
888d97642d94: Pull complete
581783ef2103: Pull complete
18ae657ec283: Pull complete
Digest: sha256:200d719be42b7748019d72f6fd983798b2e9453b2926b1b82d49c7b8109a8c52
Status: Downloaded newer image for openresty/openresty:latest
docker.io/openresty/openresty:latest

5.3 创建openresty测试容器

执行以下命令,创建openresty测试容器。

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

访问地址:http://192.168.3.125,进入到openresty默认首页。如果无法访问到此页面,请检查本地防火墙是否关闭或放行相关端口,云服务器则需要设置安全组。

在这里插入图片描述

5.4 拷贝nginx配置文件

拷贝nginx配置文件

[root@openEuler openresty]# docker cp openresty:/usr/local/openresty/nginx/conf/nginx.conf /data/openresty/nginx/conf
Successfully copied 4.61kB to /data/openresty/nginx/conf

删除测试容器

docker rm -f openresty

5.5 创建openresty容器

执行以下命令,创建openresty容器。

docker run -d   \
           -p 8015:80 \
           --name openresty  \
           --restart always \
           -v /data/openresty/nginx/conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf \
           -v /data/openresty/nginx/logs:/usr/local/openresty/nginx/logs \
           -v /data/openresty/nginx/html:/usr/local/openresty/nginx/html  \
           -v /etc/localtime:/etc/localtime \
            openresty/openresty

在这里插入图片描述

5.6 查看openresty容器状态

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

[root@openEuler openresty]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS          NAMES
fab6942b57d2   openresty/openresty   "/usr/bin/openresty …"   18 seconds ago   Up 15 seconds   0.0.0.0:8015->80/tcp, :::8015->80/tcp   openresty

六、部署my-mind应用

6.1 下载my-mind

进入OpenRestry的根目录

cd /data/openresty/nginx/html

下载my-mind源码包

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

查看my-mind目录内容

[root@openEuler html]# ls my-mind
css          examples     github.png  index.html   logo      map.css      my-mind.js    PRIVACY.txt  screenshot.png
editor.html  favicon.ico  img         LICENSE.txt  Makefile  my-mind.css  package.json  README.md    src

6.2 重启openresty容器

重启openresty容器

[root@openEuler html]# docker restart openresty
openresty

6.3 访问web应用

访问地址:http://192.168.3.125:8015/my-mind/index.html,将IP替换为自己服务器的IP地址,访问my-mind首页。

在这里插入图片描述

七、总结

本次实践《OpenRestry实践 | 在openEuler系统下部署web应用》成功完成。需要注意的是,目前流行的Docker一键部署脚本不支持openEuler系统,因此需要手动在openEuler上逐步安装Docker。使用Docker方式部署OpenResty服务非常方便和快捷,小白也可以快速上手。OpenResty使用体验很好,响应快速,应用没有卡顿,OpenResty是一个功能强大且性能优异的Web平台!

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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