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平台!
- 点赞
- 收藏
- 关注作者
评论(0)