部署了两台虚拟机
模拟的场景是什么,假设这两台虚拟机分别在不同的机房中,每个机房里都有一台机器,所以按照我们之前讲解的那套双机房的四级缓存架构

期望

  • 部署nginx,虚拟机,每台机器上,部署两个nginx,一个是分发层nginx,一个是应用层nginx

部署nginx

前置准备

mkdir -p /usr/servers
cd /usr/servers/ yum install -y readline-devel pcre-devel openssl-devel gcc

下载解压

wget https://openresty.org/download/openresty-1.15.8.2.tar.gz tar -xzvf openresty-1.15.8.2.tar.gz cd openresty-1.15.8.2


bundle 模块安装

  • **cd bundle**

    安装 luaJIT

    LuaJIT is enabled by default since OpenResty 1.5.8.1

~~cd LuaJIT-2.1-20190507/ ~~ ~~make clean && make && make install ~~

  • 这一步有用么

ln -sf luajit-2.1.0-alpha /usr/local/bin/luajit

  • 如果不使用默认的安装地址, 可以配置到别的地方
    • 修改 makefile 里面的安装路径 ~~`export PREFIX= /usr/local/luajit~~`
    • 只是在下面 openretry 安装的时候,需要指定下 luajit 的目录

      export~~ LUAJIT_LIB~~=/usr/local/luajit/lib ~~ ~~export~~ LUAJIT_INC~~=/usr/local/luajit/include/luajit-2.0~~ ~~


下载ngx_cache_purge模块,该模块用于清理nginx缓存

wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz

tar -xvf 2.3.tar.gz

下载nginx_upstream_check_module模块,该模块用于ustream健康检查

wget https://github.com/yaoweibin/nginx_upstream_check_module/archive/v0.3.0.tar.gz

tar -xvf v0.3.0.tar.gz

根据将上面的模块进行安装

cd /usr/servers//openresty-1.15.8.2

./configure —prefix=/usr/servers —with-http_realip_module —with-pcre —with-luajit —add-module=./bundle/ngx_cache_purge-2.3/ —add-module=./bundle/nginx_upstream_check_module-0.3.0/ -j2

make && make install

  • /usr/servers/openresty-1.15.8.2 同级目录下会生成

    1. /usr/servers/luajit
    2. /usr/servers/lualib
    3. /usr/servers/nginx
  • 查看是否安装成功

    /usr/servers/nginx/sbin/nginx -V

  • 查看异常日志

    tail -f /usr/servers/nginx/logs/error.log

工程化的nginx+lua项目结构

  • 自定义存放目录,下面存放在 /usr/hello 目录下
  • 项目工程结构
    1. hello
    2. hello.conf
    3. lua
    4. hello.lua
    5. lualib # 直接拷贝 /usr/servers/lualib下的内容
    6. *.lua
    7. *.so

使用 hello 项目

  • /usr/servers/nginx/conf
    1. worker_processes 2;
    2. error_log logs/error.log;
    3. events {
    4. worker_connections 1024;
    5. }
    6. http {
    7. include mime.types;
    8. default_type text/html;
    9. # 使用第三方
    10. lua_package_path "/usr/hello/lualib/?.lua;;";
    11. lua_package_cpath "/usr/hello/lualib/?.so;;";
    12. # 使用其他配置文件
    13. include /usr/hello/hello.conf;
    14. }

配置 hello项目

/usr/hello/lua/hello.lua;

  1. ngx.say("hello")

/usr/hello/hello.conf

  1. server {
  2. listen 80;
  3. server_name _;
  4. location /lua {
  5. default_type 'text/html';
  6. lua_code_cache off;
  7. content_by_lua_file /usr/hello/lua/hello.lua;
  8. }
  9. }

检查和运行

  • 启动

    /usr/servers/nginx/sbin/nginx

  • 检查配置是否正确

    /usr/servers/nginx/sbin/nginx -t

  • 重新加载

    /usr/servers/nginx/sbin/nginx -s reload

  • 停止

    /usr/servers/nginx/sbin/nginx -s stop

访问下

image.png