OpenResty 源码编译安装并运行 Hello World

639 阅读3分钟

OpenResty 源码编译安装和起步

OpenResty 已经为许多 Linux 发行版提供了官方的预编译包,强烈推荐这种安装方式。详见 官方安装文档预编译包 ,以及官方提供的 视频教程

有时有些小伙伴可能还是需要自己编译安装,本文档就详细演示如何使用源码安装 OpenResty,并且运行一个 Hello World。

我的运行环境:

腾讯云轻量级服务器 CentOS 7

下载源码包

OpenResty官方源码包 里找到你所需要的版本

image.png

这里我们以最新版为例,你可以直接点击下载安装包。如果你只能用命令行下载,可以右键复制下载链接

image.png

使用 wget + 你复制的链接将安装包下载下来。

wget https://openresty.org/download/openresty-1.21.4.2.tar.gz

编译源码并安装

官方编译指导参考

准备

根据官方提示和您自己的 Linux 版本进行准备,对于 CentOS 7

sudo yum install pcre-devel openssl-devel gcc curl

按照官方文档操作后,我仍然在第一次这样配置时遇到了如下问题

checking for libpq library version 8.1.4 ... not found
checking for libpq library version 8.1.0 ... not found
checking for libpq library version 8.0.8 ... not found
checking for libpq library version 8.0.0 ... not found
 ./configure: error: ngx_postgres addon was unable to detect version of the libpq library.
ERROR: failed to run command: sh ./configure --prefix=/opt/openresty/nginx \...

是因为没有 libpq 这个库,在 cent OS 7 上,使用如下命令解决。

sudo yum install postgresql-devel

根据不同的 Linux 发行版特点,您可以使用如 apt、yum 或 dnf 这样的包管理器来安装 libpq-dev 或 postgresql-devel,这些包中都包含了 libpq 库。

解压

下载完成后,解压

tar -xzvf openresty-VERSION.tar.gz

VERSION 的地方替换成您下载的源码包的版本号,比如说这里我下载的是 openresty-1.21.4.2.tar.gz,所以我需要

tar -xzvf openresty-1.21.4.2.tar.gz

配置

解压完成,进入 openresty-VERSION/ 目录

image.png

先创建对应的文件夹 sudo mkdir /opt/openresty

然后参照官方指南配置

./configure --prefix=/opt/openresty \
            --with-luajit \
            --without-http_redis2_module \
            --with-http_iconv_module \
            --with-http_postgres_module

试着使用 ./configure --help 查看更多的选项。

配置文件(./configure script)运行出错可以到 build/nginx-VERSION/objs/autoconf.err 找到。 VERSION 的地方必须与OpenResty版本号相对应

安装

由于权限问题,所以建议加上 sudo

sudo gmake && sudo gmake install

运行 Hello World

创建工作目录

首先 HelloWorld 项目创建一个单独的目录。您可以使用任意目录。这里为了简单起见,我们只是使用 ~/work

mkdir ~/work
cd ~/work
mkdir logs conf

注意,这里还创建了 logs/ 目录用于日志文件和 conf/ 目录用于配置文件。

准备配置文件

创建一个名为 conf/nginx.conf 的简单纯文本文件,其中包含以下内容:

worker_processes  1;
error_log logs/error.log;
events {
    worker_connections 1024;
}
http {
    server {
        listen 8080;
        location / {
            default_type text/html;
            content_by_lua_block {
                ngx.say("<p>hello, world</p>")
            }
        }
    }
}

启动 Nginx 服务器

我们在前面配置中,将 OpenResty 安装到了 /opt/openresty 中,将我们OpenResty安装的 nginx 可执行文件加入PATH 环境变量:

PATH=/opt/openresty/nginx/sbin:$PATH
export PATH

如果您在编译前的 config 阶段没有配置安装目录,即 .config 未加参数,默认会将OpenResty安装到 /usr/local/openresty

PATH=/usr/local/openresty/nginx/sbin:$PATH
export PATH

~/work 目录下,使用我们刚刚写好的配置文件,启动服务器

nginx -p `pwd`/ -c conf/nginx.conf

访问 Hello World 服务

我们可以使用curl访问我们的新Web服务,它会显示HelloWorld

curl http://localhost:8080/

如果一切顺利,我们应该得到输出

<p>hello, world</p>

到这里,我们可以确认 OpenResty 已经成功安装并且正常运行了:)