Linux에 OpenResty 소스 빌드하여 설치하기

Posted by Geuni's Blog on February 3, 2022

아래 설치방법은 nginx설치때도 똑같이 사용가능하다. ./configure 단계에서 --with-luajit옵션만 뺴면 된다. 일반적으로 nginx아닌 OpenResty를 선택하는 이유는 LuaJIT사용하기 위하여서다.

필수패키지 사전설치

OpenResty는 Nginx기반으로 만들어져있어 설치전 Nginx가 필요로 하는 패키지를 사전설치 해야한다.

  • PCRE - 정규표현식 library,Nginx Core 및 Rewrite모듈에서 사용.

  • zlib - 데이터 압축 library,Gzip 모듈에서 사용.

  • OpenSSL - SSL기능지원

  • GCC - GNU 프로젝트의 오픈 소스 컴파일러 컬렉션

CentOS, RHEL,Rocky, and Fedora
1
sudo yum install gcc make pcre pcre-devel zlib zlib-devel openssl openssl-devel
Debian기반의 Linux
1
sudo apt-get install make openssl-devel liblz-dev libpcre3
소스 빌드 및 설치
소스 다운로드

최신버전은 공식홈페이지에서 확인:https://openresty.org/en/download.html

1
2
3
4
5
6
7
8
#openresty 소스 다운로드하여 압축 풀어줌
wget https://openresty.org/download/openresty-1.19.9.1.tar.gz
tar -zxvf openresty-1.19.9.1.tar.gz

#필요한 모듈 다운로드 (필요한 제3방 모듈 없으면 skip)
wget https://hg.nginx.org/njs/archive/9578cc729205.tar.gz
tar -zxvf 9578cc729205.tar.gz
mv njs-9578cc729205/ njs && mv njs openresty-1.19.9.1/bundle/
OpenResty및 제3방모듈 빌드

이 단계에서 표준 Nginx configure파일 옵션들은 전부 사용가능함. --add-module=PATH 혹은 --add-dynamic-module=PATH 옵션으로 제3방모듈 설치가능.

1
2
3
4
5
6
7
8
9
10
#Makefile생성
./configure --prefix=/app/openresty \
--with-luajit \
--with-http_ssl_module \
--with-http_auth_request_module \
--add-dynamic-module=./bundle/njs/nginx \
--modules-path=/app/openresty/nginx/modules

#소스 빌드 및 설치
sudo make && make install
systemd 유닛 파일 생성
1
sudo vim /lib/systemd/system/nginx.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

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

[Install]
WantedBy=multi-user.target

1
2
3
4
#서비스 시작 및 활성화 
systemctl --now enable nginx
#서비스 상태 확인
systemctl status nginx