Nginx + Lua + Redis 설정
16016 단어 nginx
이상 은 후속 적 으로 완성 해 야 할 목표 입 니 다. 인터넷 자 료 를 보 았 습 니 다. 현재 이 분야 의 유사 모듈 이 있 습 니 다. 바로 Nginx + HttpLua Module + Redis 의 실현 방식 입 니 다. Nginx 는 서버 라 고 할 필요 가 없습니다. HttpLua Module 은 타 오 바 오의 엔지니어 청 무 (왕 효 철) 와 춘 래 (장 이춘) 가 개발 한 nginx 제3자 모듈 입 니 다. lua 언어 를 nginx 설정 에 삽입 할 수 있 습 니 다.그래서 lua 를 사용 하면 nginx 의 능력 을 크게 향상 시 켰 다.Redis 는 ANSI C 언어 를 사용 하여 네트워크 를 작성 하고 지원 하 며 메모리 기반 으로 지속 가능 한 로그 형, Key - Value 데이터 베 이 스 를 제공 하 며 다양한 언어 를 제공 하 는 API 입 니 다. 쉽게 말 하면 메모리 데이터 베이스 로 효율 이 높 습 니 다.이 세 모듈 을 조합 하 는 기본 절 차 는 url 이 nginx 서버 를 요청 한 다음 에 lua 가 redis 를 조회 하고 데 이 터 를 되 돌려 주 는 방식 으로 높 은 병행 을 유지 합 니 다.쓸데없는 말 은 그만 하고 배치 방식 을 중간 에 여러 구 덩이 를 만 났 지만 다행히 모두 성공 적 으로 해결 되 었 다.
방식 1:
OpenResty 를 직접 설치 하고 OpenResty 는 Nginx 로 각종 모듈 을 포장 했다. Lua 등 을 포함한다.구체 적 으로 공식 홈 페이지 를 볼 수 있다.
홈 페이지: http://openresty.org/
하지만 저 는 이런 바 보 를 선택 하지 않 았 습 니 다. 어려움 없 이 어려움 을 만들어 도 올 라 가 야 합 니 다. 다음은 Nginx + Lua + Redis 절 차 를 수 동 으로 설정 하 는 것 입 니 다.
방식 2:
1. Nginx 원본 다운로드
http://nginx.org/en/download.html
다운로드 와 압축 해 제 는 모두 디 렉 터 리 / home / zjf / 에서 진행 되 었 습 니 다.
cd /home/zjf
tar -zxvf nginx-1.6.2
압축 해제 후 다음 디 렉 터 리 가 나타 납 니 다.
/home/zjf/nginx-1.6.2
Nginx 를 컴 파일 하지 않 고 필요 한 모듈 을 다운로드 합 니 다.
2. HttpLuaModule 모듈 설정
2.1 다운로드 및 컴 파일 설치 LuaJIT 2.0
HttpLuaModule 모듈 은 LuaJIT 2.0 (LuaJIT - 2.1 추천) 또는 Lua 5.1 (Lua 5.2 지원 하지 않 음) 이 필요 합 니 다.
다운로드 링크: http://luajit.org/download.html
파일 다운로드: LuaJIT - 2.0.3. tar. gz
압축 풀기: / home / zjf / luajit - 2.0.3 /
컴 파일 및 설치: cd / home / zjf / luajit - 2.0.3 /
make
sudo make install
2.2 다운로드 ngxdevel_kit
다운로드 링크: https://github.com/simpl/ngx_devel_kit/tags
파일 다운로드: ngxdevel_kit-0.2.19.tar.gz
압축 풀기: / home / zjf / ngxdevel_kit-0.2.19
2.3 다운로드 ngxlua
다운로드 링크: https://github.com/openresty/lua-nginx-module/tags
파일 다운로드: lua-nginx-module-0.9.13rc1.tar.gz
압축 풀기: / home / zjf / lu - nginx - module - 0.9.13rc 1
2.4 위의 모듈 을 Nginx 와 함께 컴 파일 합 니 다.
처음 컴 파일 할 때 error 가 나 타 났 습 니 다:
error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
http://blog.csdn.net/vboy1010/article/details/7868645 의 해결 방법 을 참 고 했 습 니 다. 저 는 컴 파일 하기 전에 환경 변 수 를 가 져 오 는 방법 을 사 용 했 습 니 다.
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
컴 파일 할 때 옵션 을 추가 하거나 --with - ld - opt = "- wl, - rpath, $LUAJIT LIB" 는 다음 과 같 습 니 다.
# tell nginx's build system where to find LuaJIT 2.0:
export LUAJIT_LIB=/usr/local/include/luajit-2.0/
export LUAJIT_INC=/usr/local/lib/
#configure Nginx
./configure --with-ld-opt="-Wl,-rpath,$LUAJIT_LIB" --prefix=/usr/local/nginx/ --add-module=/home/zjf/ngx_devel_kit-0.2.19/ --add-module=/home/zjf/lua-nginx-module-0.9.13rc1/
make -j2
make install
2.5 테스트 Nginx + HttpLuaModule 모듈
위의 절 차 를 거 쳐 Nginx 의 HttpLuaModule 모듈 이 설정 되 었 습 니 다. 브 라 우 저 에 localhost 주 소 를 입력 하면 Nginx 서버 의 환영 인터페이스 가 나타 나 고 Nginx 가 정상적으로 작 동 하지 않 으 면 설 치 된 다른 서버 가 포트 를 차지 하 는 지 고려 합 니 다.
/ usr / local / nginx / conf / nginx. conf 파일 을 편집 하면 server {...} 에 다음 과 같은 기본 설정 이 있 습 니 다. 이것 은 웹 페이지 를 환영 하 는 url 설정 입 니 다.
location / {
root html;
index index.html index.htm;
}
우 리 는 다음 설정 을 추가 합 니 다:
location /lua {
default_type 'text/plain';
content_by_lua 'ngx.say("hello, lua")';
}
그리고 localhose / lua 를 방문 하여 문자 hello, lua 를 되 돌려 줍 니 다. Lua 모듈 설정 이 성공 적 이 었 음 을 증명 합 니 다. Nginx 는 Lua 를 사용 하여 문자열 hello, lua 를 성공 적 으로 출력 했 습 니 다.
3. Redis 데이터베이스 설치
redis 설 치 는 간단 합 니 다. 다운로드 - 압축 풀기 - 설치 하면 됩 니 다. 다운로드 주소. http://www.redis.io/download
tar -zxvf redis-2.8.6.tar.gz
cd /home/zjf/redis-2.8.6
make
sudo make install
4. lua - resty - redis - master 설치
lua - resty - redis - masters 는 Lua 입 니 다. client driver for the ngx_lua based on the cosocket API, 즉 Nginx 가 Lua 를 통 해 Redis 데이터 베 이 스 를 조작 하 는 구동 모듈 입 니 다.
다운로드 주소: https://github.com/openresty/lua-resty-redis
압축 해제 후 디 렉 터 리: / home / zjf / lu - resty - redis - master
nginx. conf 파일 설정
http {...} 세그먼트 에 다음 경 로 를 추가 하여 nginx 가 방금 압축 해제 디 렉 터 리 에 따라 redis. lua 모듈 드라이버 파일 을 찾 을 수 있 도록 합 니 다. 디 렉 터 리 에 따라 상황 에 따라 수정 할 수 있 습 니 다. redis. lua 만 찾 으 면 됩 니 다.
lua_package_path "/home/zjf/lua-resty-redis-master/lib/resty/redis.lua;;";
그리고 새 location 을 추가 하여 / test URL 로 이 모듈 이 설정 되 었 는 지 확인 합 니 다.
location /test {
default_type 'text/plain';
content_by_lua '
local redis = require "resty.redis"
local red = redis:new()
red:set_timeout(1000) -- 1 sec
-- or connect to a unix domain socket file listened
-- by a redis server:
-- local ok, err = red:connect("unix:/path/to/redis.sock")
local ok, err = red:connect("127.0.0.1", 6379)
if not ok then
ngx.say("failed to connect: ", err)
return
end
ok, err = red:set("dog", "an animal")
if not ok then
ngx.say("failed to set dog: ", err)
return
end
ngx.say("set result: ", ok)
local res, err = red:get("dog")
if not res then
ngx.say("failed to get dog: ", err)
return
end
if res == ngx.null then
ngx.say("dog not found.")
return
end
ngx.say("dog: ", res)
red:init_pipeline()
red:set("cat", "Marry")
red:set("horse", "Bob")
red:get("cat")
red:get("horse")
local results, err = red:commit_pipeline()
if not results then
ngx.say("failed to commit the pipelined requests: ", err)
return
end
for i, res in ipairs(results) do
if type(res) == "table" then
if not res[1] then
ngx.say("failed to run command ", i, ": ", res[2])
else
-- process the table value
end
else
-- process the scalar value
end
end
-- put it into the connection pool of size 100,
-- with 10 seconds max idle time
local ok, err = red:set_keepalive(10000, 100)
if not ok then
ngx.say("failed to set keepalive: ", err)
return
end
-- or just close the connection right away:
-- local ok, err = red:close()
-- if not ok then
-- ngx.say("failed to close: ", err)
-- return
-- end
';
}
localhost / test 에 접근 하면 설정 이 성공 하면 표 시 됩 니 다.
set result: OK
dog: an animal
Redis 데이터베이스 서 비 스 를 시작 해 야 합 니 다. 그렇지 않 으 면 failed to connect 가 표 시 됩 니 다: connection refused
5. 위의 절 차 를 거 쳐 Nginx + Lua + Redis 의 모든 설정 이 완료 되 었 고 Nginx 가 Url 에 따라 Redis 를 조회 하여 해당 내용 을 되 돌려 주 는 기능 을 실현 하여 해당 하 는 2 차 개발 이 가능 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.