Amazon Linux 2でlua-nginx-moduleを追加してNginxをビルドする

/usr/local/srcにソースコードの配置、root権限でlua-nginx-moduleを参考にビルドしています。AmazonLinux2で試していますが他のディストリビューションでもビルドできると思います。

準備

最初にビルドするためにCとC++のコンパイラのインストールをします。

yum install -y gcc gcc-c++

LuaJITのビルド

Releases · openresty/luajit2で確認して最新版(v2.1-20200102)をビルドします。

cd /usr/local/src
wget https://github.com/openresty/luajit2/archive/v2.1-20200102.tar.gz
tar -zxvf v2.1-20200102.tar.gz
rm v2.1-20200102.tar.gz
cd luajit2-2.1-20200102
make
make install

ngx_devel_kitのダウンロード

Releases · vision5/ngx_devel_kitから最新安定版(v0.3.1)のリンクをコピーしてwgetでダウンロードします。

cd /usr/local/src
wget https://github.com/vision5/ngx_devel_kit/archive/v0.3.1.tar.gz
tar -zxvf v0.3.1.tar.gz
rm v0.3.1.tar.gz

lua-nginx-moduleのダウンロード

Releases · openresty/lua-nginx-moduleから最新安定版(v0.10.15)のリンクをコピーしてwgetでダウンロードします。

cd /usr/local/src
wget https://github.com/openresty/lua-nginx-module/archive/v0.10.15.tar.gz
tar -zxvf v0.10.15.tar.gz
rm v0.10.15.tar.gz

lua-resty-coreのダウンロード

Releases · openresty/lua-resty-coreから最新安定版(v0.1.17)のリンクをコピーしてwgetでダウンロードします。

cd /usr/lib
wget https://github.com/openresty/lua-resty-core/archive/v0.1.17.tar.gz
tar -zxvf v0.1.17.tar.gz
rm v0.1.17.tar.gz
cd /usr/local/share/lua/5.1
mkdir resty
cd resty
ln -s /usr/lib/lua-resty-core-0.1.17/lib/resty/core core
ln -s /usr/lib/lua-resty-core-0.1.17/lib/resty/core.lua core.lua

lua-resty-lrucacheのダウンロード

Releases · openresty/lua-resty-lrucacheから最新安定版(v0.09)のリンクをコピーしてwgetでダウンロードします。

cd /usr/lib
wget https://github.com/openresty/lua-resty-lrucache/archive/v0.09.tar.gz
tar -zxvf v0.09.tar.gz
rm v0.09.tar.gz
cd /usr/local/share/lua/5.1/resty
ln -s /usr/lib/lua-resty-lrucache-0.09/lib/resty/lrucache lrucache
ln -s /usr/lib/lua-resty-lrucache-0.09/lib/resty/lrucache.lua lrucache.lua

Nginxのビルド

moduleを追加してビルドします。

export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.1
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --with-ld-opt="-Wl,-rpath,/usr/local/lib" --add-module=/usr/local/src/ngx_devel_kit-0.3.1 --add-module=/usr/local/src/lua-nginx-module-0.10.15 --with-pcre=/usr/local/src/pcre-8.43 --with-zlib=/usr/local/src/zlib-1.2.11
make
make install

Nginxの起動

最後に/usr/sbin/nginxとすれば起動できます。エラーが無ければ成功です🎉

luaのロードパス追加

必要に応じてnginx.confのhttpディレクティブに以下の設定を追加することでロードするパスを追加できます。

lua_package_path "/usr/local/src/xxxxx/lib/?.lua;/usr/local/src/xxx/lib/?.lua;;";