前景

前篇介绍了OpenResty核心概念,优势与架构等信息,进行本篇之前建议至少观看一遍。OpenResty--------企业级理论实践篇
本篇将进行OpenResty的安装与编写第一个应用过程。
注:本篇采用CentOS 7(7.4)系统

环境准备

系统信息

[root@localhost ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core)
[root@localhost ~]# uname -r
3.10.0-693.el7.x86_64

网络设备信息

[root@localhost ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.254  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::fb69:bc45:9e19:5b06  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:be:2d:43  txqueuelen 1000  (Ethernet)
        RX packets 3197  bytes 793326 (774.7 KiB)
        RX errors 0  dropped 2  overruns 0  frame 0
        TX packets 330  bytes 59828 (58.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

关闭selinux

[root@localhost ~]# setenforce 0

清空防火墙规则

[root@localhost ~]# iptables -F

依赖准备

[root@localhost ~]# yum install readline-devel -y
[root@localhost ~]# yum install pcre-devel -y
[root@localhost ~]# yum install openssl-devel -y
[root@localhost ~]# yum install perl -y

安装过程

下载安装包[从github中]

[root@localhost ~]# wget https://github.com/openresty/openresty/releases/download/v1.13.6.2/openresty-1.13.6.2.tar.gz
--2019-08-01 02:35:30--  https://github.com/openresty/openresty/releases/download/v1.13.6.2/openresty-1.13.6.2.tar.gz
Resolving github.com (github.com)... 13.229.188.59
Connecting to github.com (github.com)|13.229.188.59|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://github-production-release-asset-2e65be.s3.amazonaws.com/480080/5565c880-1ef7-11e9-9fb6-06daa71b014c?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190731%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190731T103531Z&X-Amz-Expires=300&X-Amz-Signature=cc703e1769ba14abd394befcd43e7fb26be92ba53e592da53052931ae89f6bf8&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dopenresty-1.13.6.2.tar.gz&response-content-type=application%2Foctet-stream [following]
--2019-08-01 02:35:31--  https://github-production-release-asset-2e65be.s3.amazonaws.com/480080/5565c880-1ef7-11e9-9fb6-06daa71b014c?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190731%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190731T103531Z&X-Amz-Expires=300&X-Amz-Signature=cc703e1769ba14abd394befcd43e7fb26be92ba53e592da53052931ae89f6bf8&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dopenresty-1.13.6.2.tar.gz&response-content-type=application%2Foctet-stream
Resolving github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.217.36.4
Connecting to github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.217.36.4|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4635916 (4.4M) [application/octet-stream]
Saving to: ‘openresty-1.13.6.2.tar.gz’

100%[==========================================================================>] 4,635,916   2.28MB/s   in 1.9s   

2019-08-01 02:35:34 (2.28 MB/s) - ‘openresty-1.13.6.2.tar.gz’ saved [4635916/4635916]

解压包

[root@localhost ~]# tar xf openresty-1.13.6.2.tar.gz 
[root@localhost ~]# ls -l openresty-1.13.6.2
total 96
drwxrwxr-x 43 1000 1000  4096 May 15  2018 bundle
-rwxrwxr-x  1 1000 1000 48140 May 15  2018 configure
-rw-rw-r--  1 1000 1000 22924 May 15  2018 COPYRIGHT
drwxrwxr-x  2 1000 1000   156 May 15  2018 patches
-rw-rw-r--  1 1000 1000  4689 May 15  2018 README.markdown
-rw-rw-r--  1 1000 1000  8972 May 15  2018 README-windows.txt
drwxrwxr-x  2 1000 1000    52 May 15  2018 util

进入安装包目录

[root@localhost ~]# cd openresty-1.13.6.2

生成编译与安装文件

  • --prefix=/usr/local/openresty-1.13.6.2 指定安装目录为/usr/local/openresty-1.13.6.2, 默认为/opt/openresty
  • --with-luajit 开启luajit组件
  • --without-http_redis2_module 禁用 http_redis2_module组件
  • --with-http_iconv_module 开启 http_iconv_module组件
[root@localhost openresty-1.13.6.2]# ./configure \ 
 --prefix=/usr/local/openresty-1.13.6.2 \ 
 --with-luajit \
 --without-http_redis2_module \
 --with-http_iconv_module

编译

[root@localhost openresty-1.13.6.2]# gmake

安装

[root@localhost openresty-1.13.6.2]# gmake install

创建软链接

[root@localhost openresty-1.13.6.2]# ln -s /usr/local/openresty-1.13.6.2 /usr/local/openresty

服务启动测试

自带默认配置文件,默认服务监听80端口

[root@localhost openresty-1.13.6.2]# cat /usr/local/openresty/nginx/conf/nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

使用默认的配置文件启动

[root@localhost openresty-1.13.6.2]# /usr/local/openresty/bin/openresty -p /usr/local/openresty/nginx/

通过浏览器访问测试[测试虚拟机IP为:192.168.0.254]

测试成功图片

访问成功,OpenResty已经成功返回页面。

编写程序

切换至用户家目录

[root@localhost openresty-1.13.6.2]# cd ~

创建工作目录

[root@localhost ~]# mkdir -vp  openresty-test01/{logs,conf}
mkdir: created directory ‘openresty-test01’
mkdir: created directory ‘openresty-test01/logs’
mkdir: created directory ‘openresty-test01/conf’

[root@localhost ~]# tree openresty-test01/
openresty-test01/
├── conf
└── logs

2 directories, 0 files

编写配置文件

注意: 如果你安装的是 openresty 1.9.3.1 及以下版本,请使用 content_by_lua 命令代替示例中的 content_by_lua_block。可使用 nginx/openresty -V 命令查看版本号。

[root@localhost ~]# cat openresty-test01/conf/nginx.conf
worker_processes 1; # 设置worker数量
error_log logs/error.log; # 指定错误日志文件路径
events {
    worker_connections 1024; # 单个worker进程最大允许同时建立外部连接的数量
}

http {
    server {
        listen 8888; # 设置监听端口, 注意系统其它服务是否已占用该端口

        location / {
            # lua 代码块
            content_by_lua_block {
                ngx.say("this is lisea no.1 openresty app")
            }
        }
    }
}

运行

[root@localhost ~]# /usr/local/openresty/bin/openresty -p openresty-test01

无报错就表示运行成功

通过命令测试

[root@localhost ~]# curl 127.0.0.1:8888
this is lisea no.1 openresty app

访问成功,OpenResty已经成功返回内容。

通过浏览器测试[测试虚拟机IP为:192.168.0.254, 端口为配置文件中监听设置的:8888]

测试成功

访问成功,OpenResty已经成功返回内容。