本篇将配置基本 OpenResty 开发测试环境及成功运行 Hello World

OpenResty 安装

截至到写这篇文章时, OpenResty 的最新版本为 1.9.3.2 RC2。 之所以选择这个RC版本,主要因为这个版本引入了一些新的 Nginx 指令:*_by_lua_block,使得可以在 Nginx 的配置文件中直接书写 Lua 代码而不用担心转义问题。

$ wget https://openresty.org/download/ngx_openresty-1.9.3.2rc2.tar.gz
$ tar zxvf ngx_openresty-1.9.3.2rc2.tar.gz
$ cd ngx_openresty-1.9.3.2rc2
$ ./configure
$ make -j 4
$ sudo make install

完成以上步骤之后,OpenResty 就被安装到了 /usr/local/openresty,如果需要指定其他位置,在 configure 时查看帮助文档。

打开你的 .bashrc.zshrc 或其他什么可以设置环境变量的地方,将 OpenResty 加入到 PATH 中去:

export PATH="/usr/local/openresty/nginx/sbin:/usr/local/openresty/luajit/bin:$PATH"

查看安装结果

root@OpenRestyTutorial:~$ nginx -v
nginx version: openresty/1.9.3.2rc2

Luarocks 安装

Luarocks 是一个 Lua 的包管理工具,类似于 PHPComposerRubyGemNodejsnpm。 有了它,我们在安装一些常用的第三方包时就不用那么痛苦地自己下载、编译、安装了(这句话至少针对大部分包~)。

$ wget http://keplerproject.github.io/luarocks/releases/luarocks-2.2.2.tar.gz
$ tar zxvf luarocks-2.2.2.tar.gz
$ cd luarocks-2.2.2
`#以下的配置需要注意路径及版本等`
$ ./configure --with-lua=/usr/local/openresty/luajit \ `#指定了 Lua 的目录`
--lua-suffix=jit-2.1.0-beta1 \ `#指定了 Lua binary 除了 **lua**之后的名称`
--with-lua-include=/usr/local/openresty/luajit/include/luajit-2.1 \ `#指定了 Lua 的包含文件目录`
--prefix=/usr/local/openresty/luajit `#指定了 Luarocks 的安装目录`
$ sudo make bootstrap

查看安装结果

root@OpenRestyTutorial:~$ luarocks --version
/usr/local/openresty/luajit/lib/luarocks/rocks/luarocks/2.2.2-1/bin/luarocks 2.2.2
LuaRocks main command-line interface

Hello World

首先建立一个目录来存放我们这次的测试代码,如~/tutorial1

$ mkdir tutorial1
$ cd tutorial1
$ mkdir logs conf

上面的命令在 tutorial1 目录下又新建了 logsconf 目录,分别存放日志记录文件和配置文件。

然后我们在 conf 目录新建 nginx.conf 配置文件,并写入如下代码:

worker_processes  auto;     #nginx worker 数量
error_log logs/error.log;   #指定错误日志文件路径
events {
    worker_connections 1024;
}
http {
    server {
        listen 8888;
        location / {
            default_type text/html;
            content_by_lua_block {
                ngx.say("Hello OpenResty!")
            }
        }
    }
}

运行:

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

在上边的命令中 -p 参数指定了 OpenResty 运行时的工作空间,如果不指定,那么日志将被记录到 OpenResty 的安装目录下去。

root@OpenRestyTutorial:~/tutorial1$ curl 127.0.0.1:8888
Hello OpenResty!

To Be Continued

在下一节(如果有的话……),我们将要回归本质,看看 LuaPHP 有和异同。