源码包准备
我们首先要在官网下载OpenResty的源码包。官网上会提供很多的版本,各个版本有什么不同也会有说明,我们可以按需选择下载。笔者选择下载的源码包为 ngx_openresty-1.9.3.1.tar.gz。
相关依赖包的安装
首先你要安装OpenResty需要的多个库
请先配置好你的 apt 源,配置源的过程在这就不阐述了,然后执行以下命令安装OpenResty编译或运行时所需要的软件包。
<code class="hljs lasso has-numbering">apt<span class="hljs-attribute">-get</span> install libreadline<span class="hljs-attribute">-dev</span> libncurses5<span class="hljs-attribute">-dev</span> libpcre3<span class="hljs-attribute">-dev</span> <span class="hljs-subst">\</span> libssl<span class="hljs-attribute">-dev</span> perl make build<span class="hljs-attribute">-essential</span></code>
如果你只是想测试一下OpenResty,并不想实际使用,那么你也可以不必去配置源和安装这些依赖库,请直接往下看。
OpenResty 的安装
OpenResty在 linux 的部署可以通过 C 程序员非常熟悉的方式进行安装:
<code class="hljs go has-numbering">./configure <span class="hljs-built_in">make</span> && <span class="hljs-built_in">make</span> install</code>
具体的步骤如下:
(1)将软件包拷贝到 Ubuntu 系统中
首先通过 WinScp 或者 XFTP 等文件传输工具将之前下载的OpenResty包传输到你的Ubuntu系统上,如果你的Ubuntu系统可以直接联网的话,你也可以通过wget https://openresty.org/download/ngx_openresty-1.9.3.1.tar.gz
命令直接从官网下载 OpenResty 到当前目录。
(2)解压 openresty 软件包
<code class="hljs avrasm has-numbering">tar xzvf ngx_openresty-<span class="hljs-number">1.9</span><span class="hljs-number">.3</span><span class="hljs-number">.1</span><span class="hljs-preprocessor">.tar</span><span class="hljs-preprocessor">.gz</span></code>
一般来说这个命令不会出错,解压之后你会得到一个名为 ngx_openresty-1.9.3.1 的文件夹,如果解压出错,请尝试重新下载 OpenResty。
(3)配置安装目录及需要激活的组件
现在你可以进入到解压出来的目录下,大致浏览一下目录结构,我们可以看到有一个 configure 文件,它是一个可执行文件,我们可以通过 configure 命令来对 OpenResty 进行一些配置,常见的配置有:
1)OpenResty 安装目录: –prefix,不指定则默认为/usr/local/openresty
2) 激活某些组件: with-xxxx
3)禁用某些组件: without-xxxx
OpenResty 是在 Nginx 的基础之上,集成了大量优秀的第三方模块形成的,在 OpenResty 中,大多数的组件都是默认激活的,只有少数几个组件需要手动指定激活,可以通过下述选项激活这几个组件:
<code class="hljs lasso has-numbering"><span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-lua51</span> <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-http_drizzle_module</span> <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-http_postgres_module</span> <span class="hljs-subst">--</span><span class="hljs-keyword">with</span><span class="hljs-attribute">-http_iconv_module</span></code>
一个完整的配置命令如下:
<code class="hljs brainfuck has-numbering"><span class="hljs-string">.</span><span class="hljs-comment">/configure</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">prefix=/opt/openresty\</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">without</span><span class="hljs-literal">-</span><span class="hljs-comment">http_redis2_module</span> <span class="hljs-comment">\</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">with</span><span class="hljs-literal">-</span><span class="hljs-comment">http_postgres_module</span></code>
命令很短,也比较好理解:
1) –prefix=/opt/openresty:将软件安装在/opt/openresty 目录下
2) –without-http_redis2_module:禁用 redis 模块
3) with-http_postgres_module:启用 postgres 数据库模块
上述命令如果不出错的话则会在当前目录下生成一个 makefile 文件,这是为我们后续的make && make install
做准备的,该文件指定了 make 命令的执行规则。
如果出现了错误,则在控制台会输出控制信息,即失败的原因,为何出错可以根据失败原因进行具体的分析,我在这里简单总结下可能的情况。
1)缺少了依赖库:绝大多数情况都是因为这个错误导致的,可以查看错误提示中具体说明的缺少哪一个库,然后进行安装即可
2)部分库本身 BUG:这种情况是非常少见的,除非你在一些特别的Ubuntu版本上进行安装,笔者使用的是Ubuntu 14.04.3 LTS,没有发现任何问题,如果出现这类问题,可以尝试更新一下编译器版本或者该库文件版本
前面我们说到,如果只是想测试一下 OpenResty 的话,我们可以不安装依赖库,当然在这里配置时也需要禁用几个模块,防止 configure 命令出错
<code class="hljs brainfuck has-numbering"><span class="hljs-string">.</span><span class="hljs-comment">/configure</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">without</span><span class="hljs-literal">-</span><span class="hljs-comment">http_rewrite_module</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">without</span><span class="hljs-literal">-</span><span class="hljs-comment">http_ssl_module</span> <span class="hljs-literal">-</span><span class="hljs-literal">-</span><span class="hljs-comment">without</span><span class="hljs-literal">-</span><span class="hljs-comment">http_gzip_module</span></code>
禁用了这几个模块之后,即可顺利生成 makefile 文件,但是仅供测试,少了这几个模块,你就少了很多强大的功能。
(4)执行安装
完成了安装前的配置,生成了对应的 makefile 之后,我们就可以进行真正的安装了,命令非常的简单。
<code class="hljs go has-numbering"><span class="hljs-built_in">make</span> && <span class="hljs-built_in">make</span> install</code>
执行完该命令之后,OpenResty 就安装到了你之前指定的安装目录下了。
测试安装是否成功
如果你在之前的make && make install
中没有发现错误的话,一般来说就是安装成功了,但是我们还是进行一个简单的测试以保证我们 OpenResty 确实成功安装了。
如果你使用的是默认的安装目录,则可以执行以下命令启动 OpenResty,如果不是,请改为你指定的路径。
<code class="hljs lua has-numbering">/usr/<span class="hljs-keyword">local</span>/openresty/nginx/sbin/nginx</code>
正确启动的话则没有任何输出,现在 OpenResty 已经成功启动并监听了Ubuntu服务器的 80 端口,你可以打开浏览器,输入你的Ubuntu服务器的 IP,则你可以看到”Welcome to nginx!”字样,这说明你的 OpenResty 服务器已经成功运行了。
你也可以通过直接在 Ubuntu 服务器上输入以下指令来测试 OpenResty 是否成功启动
<code class="hljs nginx has-numbering"><span class="hljs-title">curl</span> <span class="hljs-number">127.0.0.1</span></code>
你会看到一小段 HTML 格式的文本输出。
设置环境变量方便操作
之前的测试案例中,我们需要切换到软件安装的目录下执行相应的命令,那么有没有办法让我们可以直接在任意目录下都可以使用 OpenResty 的命令呢,其实也非常的简单,只需要配置一下环境变量 PATH 即可。
在 linux 终端输入一个命令之后,它会到 PATH 环境变量所指定的各个目录下去寻找这个命令,所以我们要做的就是把 OpenResty 的 sbin 目录,也就是 OpenResty 的可执行文件目录设置到 PATH 环境变量中即可。
在 Ubuntu 中,也许多方式可以设置环境变量,在许多个文件中添加响应的配置行都能达到设置环境变量的目的,我们这里通过设置用户家目录下的.bashrc 文件来实现。
<code class="hljs vala has-numbering">vi ~/.bashrc <span class="hljs-preprocessor"># 添加下面一行代码即可,笔者一般都添加到文件开头,方便查看</span> <span class="hljs-preprocessor"># 注意:冒号后面接的是 OpenResty 安装的位置的可执行文件目录</span> <span class="hljs-preprocessor"># 没有特殊指定安装目录的则是: /usr/local/openresty/nginx/sbin</span> export PATH=$PATH:/usr/local/openresty/nginx/sbin</code>
添加配置之后不会立即生效,我们可以通过 source 命令来重新加载一下我们的配置文件
<code class="hljs bash has-numbering"><span class="hljs-built_in">source</span> ~/.bashrc</code>
之后我们就可以在任意位置来使用我们的 nginx 命令了
<code class="hljs bash has-numbering"><span class="hljs-built_in">cd</span> ~ nginx <span class="hljs-operator">-s</span> reload</code>
接下来,我们就可以进入到后面的章节HelloWorld学习。