2019年6月21日 星期五

[野人獻曝] 安裝 OpenResty

OpenResty 這東西基本上就是把 Lua 和 Nginx 結合在一起做成撒尿牛丸!

OpenResty 這東西基本上就是結合 Lua 和 Nginx 各自的優勢,
讓你可以直接用 Lua 寫程式讓 Nginx 直接執行,
從而避免像是要用 proxy_pass 丟到 node 或是 fastcgi_pass 丟到 PHP 執行這種等等等的狀況。

安裝方式說難也不難,只是要注意一下機器上要有這些東西:

  • make / gcc :編譯原始碼時需要的工具,有需要的話在 Ubuntu / Debian 可以下 apt-get install -y make build-essential,這樣就會把需要的編譯工具裝好了。
  • PCRE:Perl 用的正規式函式庫,這東西基本上裝了會比較方便
  • zlib:gzip 功能相關。老實說沒想到不裝的理由。沒有的話要下 apt-get install -y zlib1g-dev
上面的準備完成後,可以直接下載原始碼
用 tar 解壓縮並切換到該目錄後,
就可以直接下 ./configure && make && make install
跑完以後 nginx 和 OpenResty 的相關元件就完成安裝了。

不過要補充一下,
上述的指令是按照預設設定安裝 nginx 及相關模組,
其實也可以根據需求在 ./configure 加相應參數來設定 nginx 主程式路徑 / log 路徑,
這部分可以下 ./configure --help 參考可用的參數。

最後補充,其實可以參照這篇直接安裝 OpenResty 。
但因為我在實驗所以我就直接手動編譯安裝了,顆顆!


2019年4月12日 星期五

[野人獻曝] 動態載入 nginx 模組

因為某些原因想要不重新編譯 nginx ,
又想要用某個模組的功能,
所以就想到 nginx 可以動態載入模組的功能!

首先需要的東西如下:
  • 要使用的 nginx 版本必須為 1.9.11 以上......除非真的太舊否則這應該不是問題
  • 跟你目前使用版本相符的 nginx 原始碼(完整版本列表
  • 你想要使用模組的原始碼,要確保該模組可以使用動態載入功能

操作方法如下:
  • 打開你的 terminal 視窗,輸入 nginx -V ,這會列出當初編譯安裝時使用的參數,內容大概就是:configure arguments: --add-module=xxxx --with-pcre 之類的內容,請把 -- 後面的字串複製下來備用。
  • 將你稍早下載的原始碼解壓縮某目錄下,這裡就假設是 /my/nginx-source
  • 把你下載的模組原始碼解壓縮到某目錄下,這裡就假設是 /my/nginx-modules 
  • 切換到 /my/nginx-source,輸入 ./configure 加上剛才的 nginx -V 內容,最後多加 --add-dynamic-module=/my/nginx-modules 後按下 enter。如此就會根據原本的編譯參數再加上新設定的動態模組參數準備編譯。
  • 接著再輸入 make modules,就會開始編譯模組
  • 編譯完的模組會放在 /my/nginx-source/objs 下,你可以把需要的模組檔複製到其他地方備用。
  • 接下來打開你的 nginx 設定檔(通常在 /etc/nginx/nginx.conf),在最上方加入 load_module 模組檔路徑; 後重新啟動 nginx 就可以生效了。