しがないインフラエンジニアLOG

インフラエンジニアとしての諸々

CentOS7.4でOpenRestyをインストールしてLuaでHelloWorldする方法

今回したこと

Vagrant環境にCentOS7.4を構築して、
OpenRestyインストールしてLuaでHallo Worldを出力してみました。

https://avatars2.githubusercontent.com/u/7390180?s=200&v=4

なぜやろうとおもったか

OpenRestyを過去にインストールしてLuaでいろいろやっていたのですが、
やりかたを忘れてしまったのでせっかくなので備忘録がてらに記載しました。

OpenRestyはnginxにngx_luaなどを全部入りにしたnginxでluaを実行する環境全部盛りなパッケージになってます。

nginxでLuaをやろうと思うと自分でビルドオプション書いて必要なパッケージ入れたり結構面倒くさい作業があるので、OpenRestyを入れて楽をしてしまいましょう。

OpenResty公式

前提 / 準備

1. OpenRestyのリポジトリ登録

■ 以下のコマンドでOpenRestyのリポジトリを登録します。

# yum install yum-utils
# yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

2. OpenRestyインストール

■ 以下のコマンドでOpenRestyをインストールします。

# yum install openresty

■ 以下のパッケージがインストールされます。

(1/4): openresty
(2/4): openresty-pcre
(3/4): openresty-zlib
(4/4): openresty-openssl-1.1

3. OpenResty起動確認

■ OpenRestyは昔ながらのinitファイルで記載されていますので以下ファイルを作成してsystemdで操作しましょう。

# vi /etc/systemd/system/openresty.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/openresty/nginx/logs/nginx.pid
ExecStartPre=/usr/local/openresty/nginx/sbin/nginx -t
ExecStart=/usr/local/openresty/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

参照

■ 以下のコマンドでOpenRestyの設定読み込み及び起動

# systemctl daemon-reload
# systemctl enable openresty.service
# systemctl restart openresty
# chkconfig openresty off

■ 以下のコマンドでOpenRestyのnginxが起動していることを確認

# ps aux | grep openresty

4. luaファイルの準備

■ とりあえずHello World用のLuaスクリプトを準備します。

# vi /usr/local/openresty/nginx/html/hello.lua
(以下を記載)
ngx.print("Hello, world!")

■ 以下を実行して「Hello, world!」と出力されればOK。

# lua /usr/local/openresty/nginx/html/hello.lua

5. OpenResty-Nginx設定

■ nginxの設定を実施。

# vi /usr/local/openresty/nginx/conf/nginx.conf
(serverセクションに追記)
location /hello {
    default_type text/html;
    content_by_lua_file /usr/local/openresty/nginx/html/hello.lua;
}

helloディレクトリに来たアクセスをすべてhello.luaで処理するかように設定しました。

*OpenRestyのディレクトリにnginxのファイル一式があります。迷子注意。

5. OpenResty-Nginx再起動

■ nginxの再起動

# systemctl restart openresty

6. 動作確認

■ 以下のコマンドで正常にluaの実行結果がレスポンスとして帰ってきていることを確認。

# cd ~
# wget http://localhost/hello/hello.html
# cat hello.html
Hello, world!

できた!!

最後に

nginxにluaモジュールを導入するときに色々やらないといけない作業をOpenRestyを入れることでサクッと環境を構築することができました。

ミドルウェア側で制御したいところを、luaで拡張できるのでインフラエンジニアにとっては強い味方ではないでしょうか。

引き続きLuaでごにょごにょしていきたいと思います。