在Linux上安装配置OpenResty

2024-04-28 09:25:21 浏览数 (1)

一、前言

OpenResty是一个基于 Nginx 与 Lua 的开源高性能 Web 平台,OpenResty团队为Nginx开发了Lua模块,使得开发者/运维可以使用Lua为OpenResty开发扩展,或者为Nginx定制功能,另外OpenResty团队也内置了很多Lua扩展(JWT、MySQL、Redis等),可以通过OpenResty高效率的开发高性能Web服务

1、本文主要内容

  • OpenResty基础依赖:Lua、LuaJit、LuaRocks编译安装
  • OpenResty安装(Yum)&配置开机启动
  • OpenResty编译安装&配置开机启动
  • OpenResty配置HTTP代理
  • OpenResty Lua脚本响应HTTP请求
  • OpenResty常用命令介绍

2、本文环境信息

工具/环境

版本说明

适用版本

Linux

OpenEuler 22.03 LTS

openEuler 22.03 ,CentOS 7

Lua

5.1.5

5.1

LuaJit

2.1

2.0

LuaRocks

3.11.0

3.0

OpenResty

1.21.4.1

1.17

3、前置准备

开放80及其他测试端口

代码语言:javascript复制
sudo firewall-cmd --add-port=80-9999/tcp --permanent
sudo firewall-cmd --add-port=80-9999/udp --permanent
sudo firewall-cmd --reload

二、使用Yum包安装OpenResty

1、安装依赖&添加Yum源

代码语言:javascript复制
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

2、安装OpenResty

代码语言:javascript复制
# 查看可选版本
yum list openresty --showduplicates

# 输出示例
openresty.x86_64                                         1.19.3.2-1.el7  
openresty.x86_64                                         1.21.4.1-1.el7  
openresty.x86_64                                         1.25.3.1-1.el7 

# 安装指定版本
sudo yum install -y openresty-1.21.4.1-1.el7  

# 安装最新版本
sudo yum install -y openresty

3、启动&设置为开机启动

代码语言:javascript复制
sudo systemctl start openresty
sudo systemctl enable openresty

4、安装验证

代码语言:javascript复制
# 查看openresty版本
openresty -v

# curl访问测试
curl localhost --head | grep Server

三、编译安装OpenResty

1、安装准备

安装基础依赖

代码语言:javascript复制
sudo yum install -y wget gcc make unzip git 
              readline-devel pcre-devel openssl-devel zlib-devel

准备源码安装目录

代码语言:javascript复制
mkdir -p /home/downloads && cd /home/downloads

2、编译安装Lua

在Lua官网选择需要的版本:https://www.lua.org/ftp/,本次我们选择5.1.5版本

代码语言:javascript复制
# 下载&解压Lua源码
wget https://www.lua.org/ftp/lua-5.1.5.tar.gz
tar zxvf lua-5.1.5.tar.gz
cd lua-5.1.5

# 编译&安装Lua到/usr/local
sed -i 's/INSTALL_TOP=.*/INSTALL_TOP= /usr/local/' Makefile
make linux && sudo make install

使编译安装的Lua生效

代码语言:javascript复制
# 替换原有lua
sudo mv /usr/bin/lua /usr/bin/lua.bak
sudo ln -sf /usr/local/bin/lua /usr/bin/lua

# 验证安装
lua -v

3、编译安装LuaJit

代码语言:javascript复制
# git迁出LuaJit仓库
cd /home/downloads
git clone -b v2.1 https://luajit.org/git/luajit.git luajit-2.1
cd luajit-2.1

# 编译&安装LuaJit
make && sudo make install

# 验证LuaJit安装
luajit -v

4、编译安装LuaRocks

在LuaRocks官网选择需要的版本:https://luarocks.org/releases,本次我们选择3.11.0版本

代码语言:javascript复制
# 下载&解压LuaRocks源码
cd /home/downloads
wget https://luarocks.org/releases/luarocks-3.11.0.tar.gz
tar zxvf luarocks-3.11.0.tar.gz
cd luarocks-3.11.0

# 编译&安装
./configure && make && sudo make install

LuaRocks安装验证&测试

代码语言:javascript复制
# luarocks安装luasocket包
luarocks install luasocket

# 在lua中引用安装的luasocket测试
lua
require "socket"

5、编译安装OpenResty

在OpenResty选择需要的版本:https://openresty.org/en/download.html#legacy-releases,如果没有特别要求,直接选择最新版即可,本次以1.21.4.1版本作为示例

代码语言:javascript复制
# 下载&解压OpenResty源码
cd /home/downloads
wget https://openresty.org/download/openresty-1.21.4.1.tar.gz
tar zvxf openresty-1.21.4.1.tar.gz
cd openresty-1.21.4.1

# 配置编译选项:制定安装目录
./configure --prefix=/usr/local/openresty

# 编译&安装
make -j$(nproc) && sudo make install

安装完成后可以根据指定的路径进行测试

代码语言:javascript复制
# 查看版本
/usr/local/openresty/nginx/sbin/nginx -v

# 启动
sudo /usr/local/openresty/nginx/sbin/nginx
# 访问测试
curl http://localhost/

# 停止
sudo /usr/local/openresty/nginx/sbin/nginx -s stop

配置OpenResty环境变量

代码语言:javascript复制
# 修改profile
sudo vi /etc/profile

# 在文件末尾追加
export PATH=$PATH:/usr/local/openresty/bin
export PATH=$PATH:/usr/local/openresty/nginx/sbin

# 使环境变量生效
source /etc/profile

命令测试

代码语言:javascript复制
# 查看版本
openresty -v

# 启动openresty
openresty

# 停用openresty
openresty -s stop

# 重载配置
openresty -s reload

浏览器访问测试

image.pngimage.png

四、OpenResty配置

OpenResty的默认安装目录为:/usr/local/openresty 配置目录:/usr/local/openresty/nginx/conf/ 默认配置文件为:nginx.conf

1、新增配置目录

代码语言:javascript复制
#1、新增配置文件夹
mkdir -p /openresty/conf

#2、修改默认配置
vi /usr/local/openresty/nginx/conf/nginx.conf 

#3、在http属性下新增配置文件夹(绝对路径):
include /openresty/conf/*.conf;

2、基本转发配置

跟Nginx反向代理配置方式一致

代码语言:javascript复制
#1、新建/修改配置文件
vi /openresty/conf/ken.conf

#2、配置内容
server {
    listen       80;        #监听80端口
    server_name  test.local.ken.io; #监听的域名
    location / {            #转发或处理
        proxy_pass https://ken.io;
    }
}

#3、重载配置
openresty -s reload

修改hosts

代码语言:javascript复制
# 修改hosts配置
sudo vi /etc/hosts

# 增加配置
127.0.0.1 test.local.ken.io

使用curl命令或者浏览器进行访问测试

代码语言:javascript复制
curl test.local.ken.io

3、使用Lua响应请求

监听8888端口,使用OpenResty内置的Lua函数响应请求,输出:Hello,{name}

代码语言:javascript复制
#1、新建/修改配置文件
vi /openresty/conf/hello.conf

#2、配置内容
server {
    listen 8888;

    location / {
        default_type 'text/plain';
        content_by_lua_block {
            local args = ngx.req.get_uri_args()
            local name = args["name"]
            ngx.header["X-Header"] = "ken.io"
            if name then
                ngx.say("Hello, " .. name)
            else
                ngx.say("Hello, OpenResty!")
            end
        }
    }
}

#3、重载配置
openresty -s reload

使用curl命令或者浏览器进行访问测试

代码语言:javascript复制
curl -i localhost:8888
curl -i localhost:8888?name=Ken

# 输出示例
HTTP/1.1 200 OK
Server: openresty/1.21.4.1
Content-Type: text/plain
Transfer-Encoding: chunked
Connection: keep-alive
X-Header: ken.io

Hello, OpenResty!
image.pngimage.png

五、备注

1、OpenResty常用命令

代码语言:javascript复制
# 启动 OpenResty 主进程
openresty

# 停止 OpenResty
openresty -s stop

# 优雅地关闭 OpenResty
openresty -s quit

# 重载 OpenResty 配置文件
openresty -s reload

# 重新打开日志文件
openresty -s reopen

# 显示 OpenResty 的版本信息
openresty -v

# 指定 OpenResty 工作目录
openresty -p /path/to/work_dir

# 使用指定的配置文件启动 OpenResty
openresty -c /path/to/nginx.conf

0 人点赞