前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenResty实践 | 在openEuler系统下部署web应用

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

原创
作者头像
江湖有缘
修改2024-01-18 12:25:07
5390
修改2024-01-18 12:25:07
举报
文章被收录于专栏:Linux成长之路Linux成长之路

一、OpenResty介绍

1.1 OpenResty简介

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

1.2 OpenResty特点

  • 高性能: OpenResty利用Nginx的高性能和低资源消耗,加上Lua的快速执行速度,可以处理高并发的Web请求。
  • 高扩展性: OpenResty允许开发人员通过编写Lua脚本来扩展其功能,包括处理HTTP请求、访问数据库、缓存数据等。
  • 轻量级: OpenResty在功能上比传统的Web开发框架更轻量级,不需要启动额外的应用服务器或中间件。
  • 简单易用:OpenResty使用Lua编程语言,这是一种简单易学的脚本语言,开发人员可以快速上手。
  • 高可靠性:OpenResty基于Nginx,Nginx作为一个被广泛使用的Web服务器,在稳定性和可靠性方面有着良好的声誉。

1.3 OpenResty使用场景

  • 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.使用OpenResty部署一个web应用。

三、检查本地环境

3.1 检查操作系统版本

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

代码语言:bash
复制
[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。

代码语言:bash
复制
[root@openEuler ~]# uname -r
5.10.0-153.12.0.92.oe2203sp2.x86_64

3.3 检查Docker环境

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

代码语言:bash
复制
[root@openEuler ~]# docker -v
-bash: docker: command not found

四、部署Docker环境

4.1 安装相关依赖包

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

代码语言:bash
复制
 dnf install -y dnf-utils device-mapper-persistent-data lvm2 fuse-overlayfs wget

4.2 配置Docker的yum仓库

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

代码语言:bash
复制
dnf config-manager --add-repo=https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+$releasever+7+' /etc/yum.repos.d/docker-ce.repo

更新缓存

代码语言:bash
复制
dnf makecache

检查yum仓库状态

代码语言:bash
复制
[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。

代码语言:bash
复制
dnf install -y docker-ce

4.4 开启路由转发

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

代码语言:bash
复制
echo "net.ipv4.ip_forward=1" >>  /etc/sysctl.conf
sysctl -p

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

代码语言:bash
复制
vim /etc/rc.d/rc.local
代码语言:bash
复制
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables

4.5 启动Docker服务

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

代码语言:bash
复制
systemctl enable --now docker

查看当前Docker服务状态

代码语言:bash
复制
[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镜像加速。

代码语言:bash
复制
echo '{ "registry-mirrors": ["https://docker.mirrors.sjtug.sjtu.edu.cn"] }'   > /etc/docker/daemon.json 
systemctl daemon-reload  && systemctl restart docker

五、创建OpenResty容器

5.1 创建挂载目录

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

代码语言:bash
复制
[root@openEuler ~]# mkdir -p /data/openresty/nginx/{conf,logs,html}
[root@openEuler ~]# cd /data/openresty/

5.2 下载openresty镜像

在docker hub拉取openresty镜像

代码语言:bash
复制
[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测试容器。

代码语言:bash
复制
docker run --name openresty \
-p 80:80 \
-d openresty/openresty

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

5.4 拷贝nginx配置文件

拷贝nginx配置文件

代码语言:bash
复制
[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

删除测试容器

代码语言:bash
复制
docker rm -f openresty

5.5 创建openresty容器

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

代码语言:bash
复制
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容器正常启动。

代码语言:bash
复制
[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的根目录

代码语言:bash
复制
cd /data/openresty/nginx/html

下载my-mind源码包

代码语言:bash
复制
 git clone https://github.com/ondras/my-mind.git

查看my-mind目录内容

代码语言:bash
复制
[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容器

代码语言:bash
复制
[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平台!

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、OpenResty介绍
    • 1.1 OpenResty简介
      • 1.2 OpenResty特点
        • 1.3 OpenResty使用场景
        • 二、本地环境介绍
          • 2.1 本地环境规划
            • 2.2 本次实践介绍
            • 三、检查本地环境
              • 3.1 检查操作系统版本
                • 3.2 检查内核版本
                  • 3.3 检查Docker环境
                  • 四、部署Docker环境
                    • 4.1 安装相关依赖包
                      • 4.2 配置Docker的yum仓库
                        • 4.3 安装docker
                          • 4.4 开启路由转发
                            • 4.5 启动Docker服务
                              • 4.6 配置镜像加速
                              • 五、创建OpenResty容器
                                • 5.1 创建挂载目录
                                  • 5.2 下载openresty镜像
                                    • 5.3 创建openresty测试容器
                                      • 5.4 拷贝nginx配置文件
                                        • 5.5 创建openresty容器
                                          • 5.6 查看openresty容器状态
                                          • 六、部署my-mind应用
                                            • 6.1 下载my-mind
                                              • 6.2 重启openresty容器
                                                • 6.3 访问web应用
                                                • 七、总结
                                                相关产品与服务
                                                容器服务
                                                腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                                领券
                                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                                                http://www.vxiaotou.com