블로그로 돌아가기

Ubuntu 20.04에서 PHP용 세션 핸들러로 Redis 서버 설정하기

Ubuntu 20.04에서 PHP용 세션 핸들러로 Redis 서버 설정하기

Redis은 오픈 소스 인메모리 캐시 및 스토리지 시스템입니다, 데이터 구조 서버라고도 합니다. 해시, 리스트, 세트, 비트맵 등 여러 데이터 유형에 대한 고급 지원을 제공합니다. 뛰어난 성능 덕분에 Redis는 주요 산업 및 최고의 다국적 기업(MNC)에서 인기를 얻고 있습니다.

Redis의 장점

속도에 있어서는 Redis 서버를 따라올 자가 없습니다. NoSQL 데이터베이스 서버로서 데이터 저장 및 검색에 놀라운 속도를 제공합니다. 게다가 Redis는 복잡한 데이터를 포함하여 다양한 데이터로 원활하게 작업할 수 있는 뛰어난 기능을 갖추고 있습니다. Redis의 사용 편의성과 정교한 기능은 Redis를 돋보이게 할 뿐만 아니라 기업 및 개인 사용자를 위한 주류 데이터베이스로서 표준화가 점점 더 확대되도록 했습니다.

아래에서는 Ubuntu 20.04 소프트웨어에 Redis를 설치하는 데 도움이 되는 단계를 자세히 설명합니다. 이 튜토리얼에서는 설치부터 Ubuntu 20.04에서 실행되는 PHP 애플리케이션의 세션 핸들러로 사용할 외부 Redis 서버 구성까지 필요한 모든 정보를 얻을 수 있습니다..

시작하기

단계를 진행하려면 사설 네트워크가 활성화된 동일한 데이터 센터에 위치한 두 개의 서로 다른 데이터베이스 서버(droplet)가 필요합니다. 여기에는 다음이 포함됩니다.

  • 다음을 실행하는 PHP 웹 서버: LAMPLEMP on Ubuntu 20.04 – 이 서버의 이름은 web.

  • 입니다. Redis가 설치될 깨끗한 상태의 두 번째 Ubuntu 20.04 서버 – 이 서버의 이름은 redis.

1단계 — Redis 서버 설치

첫 번째 단계는 Ubuntu 20.04에 Redis 서버를 설치하는 것입니다. 설치가 완료되면 서버가 당사의 redis Droplet에서 정상적으로 실행 중인지 확인합니다.

이 튜토리얼에서는 PPA(Personal Package Archives)를 사용합니다. 보안상의 이유로 PPA를 사용하는 것을 적극 권장합니다. 다른 타사 리포지토리에 비해 PPA는 안정적이고 설치가 쉬우며, 무엇보다도 Ubuntu 사용자를 위해 설계된 리포지토리입니다. PPA를 사용하면 공식 Ubuntu 리포지토리에서 찾을 수 없는 소프트웨어라도 사용 가능한 최신 소프트웨어 버전을 얻을 수 있습니다.

승인되지 않은 소스의 PPA를 사용하는 것은 절대 금물입니다. 신뢰할 수 있고 검증된 소스에서만 PPA를 가져와야 합니다. 다음 명령어를 사용하여 PPA 리포지토리를 추가할 수 있습니다.

확인하려면 Enter 키를 누르세요. 확인 후 다음 명령어를 사용하여 패키지 관리자 캐시를 업데이트합니다.

다음으로, 아래 명령어를 사용하여 Redis를 설치합니다.

명령어를 실행하면 서버에 Redis가 설치됩니다. 다음 명령어를 사용하여 설치를 테스트해 보겠습니다.

명령어를 실행하면 localhost의 포트에서 실행 중인 Redis 인스턴스를 볼 수 있습니다6379. 또한, PONG이라는 응답이 표시됩니다. 이것이 보인다면 첫 번째 단계를 성공적으로 완료한 것입니다. Redis 설치 및 보안에 대한 자세한 가이드는 다음 튜토리얼을 참조하세요: Ubuntu 18.04에서 Redis를 설치하고 보안을 설정하는 방법.

다음으로, 다음 단계인 Redis 구성으로 넘어가겠습니다.

2단계 — 외부 연결을 허용하도록 Redis 구성

Redis를 구성하는 주요 목적은 외부에서 들어오는 연결을 허용하는 것입니다. 왜일까요? 기본적으로 Redis는 localhost에만 연결을 허용하며, 다른 곳에서의 연결은 제한되어 있기 때문입니다. 더 간단히 말해, Redis를 설치한 서버 내부에서만 액세스할 수 있습니다.

먼저, 다음 ifconfig 명령어를 사용하여 네트워크 인터페이스에 대한 자세한 정보를 확인하세요:

아래와 같은 출력이 표시됩니다:

At the eth1 인터페이스에서 다음을 찾을 수 있습니다: inet_addr. 여기에는 10.133.14.9이(가) 있습니다. 다음 단계에서 이 IP 주소를 사용하여 redis 서버에 web 서버에서 연결할 것입니다.

3단계— 로컬호스트 바인딩

원하는 코드 편집기를 자유롭게 사용할 수 있습니다 (Atom과 Visual Studio Code가 가장 인기 있습니다).

이제 다음 파일을 엽니다. /etc/redis/redis.conf 그리고 다음이 포함된 줄을 찾습니다. bind 정의. 여기에 귀하의 사설 네트워크 IP 주소를 추가해야 합니다:

You may see localhost 대신 127.0.0.1가 보일 수 있습니다. 걱정하지 마세요. 사설 IP 주소를 추가하기만 하면 됩니다. 다음으로, 변경 사항을 적용하기 위해 Redis 서비스를 재시작합니다. 다음 명령어를 사용하여 redis 서버를 재시작하십시오:

원클릭 애플리케이션을 사용하여 Redis를 설치한 사용자의 경우, 아래 언급된 명령에 따라 서버를 재시작합니다:

Once you restart the redis 서버를 재시작하면, 동일한 사설 네트워크에 있는 모든 서버가 개별적으로 설정할 필요 없이 이 Redis 인스턴스에 자동으로 연결됩니다.

4단계— Redis 서버 비밀번호 설정

연습이나 교육 목적으로 Redis를 설치하여 사용하는 경우 이 단계를 건너뛸 수 있습니다. 하지만 redis 서버에 추가적인 보안 계층을 더하려면 비밀번호를 설정하는 것이 좋습니다. 이전 단계에서 했던 것과 동일한 설정 파일을 수정해 보겠습니다. 다음 편집 명령어를 사용하십시오:

다음이 포함된 줄의 주석을 해제하고 requirepass, 강력한 비밀번호를 설정하십시오:

변경 사항을 반영하려면 Redis 서비스를 재시작하십시오. 재시작하려면 다음 명령어를 사용하십시오:

5단계 — Redis 연결 및 인증 테스트

이 단계에서는 다음의 내부에서 Redis 서비스에 연결합니다. redis 머신에서 모든 변경 사항이 예상대로 원활하게 작동하는지 확인합니다. 연결하려면 아래 명령어를 사용하십시오:

여기서 호스트 이름을 생략하더라도 여전히 실행됩니다. 우리의 주된 목적은 Redis 서비스가 연결을 원활하게 수락하는지 확인하는 것입니다:

정의된 비밀번호로 데이터에 액세스하려고 할 때 AUTH 오류가 발생할 수 있습니다:

출력은 다음과 유사할 것입니다:

인증하려면 AUTH 명령어를 /etc/redis/redis.conf 파일에 정의한 것과 동일한 비밀번호와 함께 실행하십시오:

다음으로, 명령어를 다시 실행하십시오:

이번에는 오류 대신 OK 응답을 받게 됩니다. 출력은 아래와 같습니다:

출력 empty list 또는 set 은 Redis 서버가 비어 있음을 의미합니다. 이는 아직 웹 서버를 세션 핸들러로 구성하지 않았기 때문입니다.

참고: 계속 진행하기 전에 SSH 세션이 열려 있고 redis-cli에 연결되어 있는지 확인하십시오. 다음 단계에서는 web 서버를 필요한 대로 변경한 후 세션 데이터가 올바르게 저장되었는지 확인하기 위해 redis-cli 프롬프트로 돌아갈 것입니다.

6단계 — 웹 서버에 Redis 확장 설치

다음 단계는 web 서버에서 실행해야 합니다. PHP가 Redis 서버에 연결할 수 있도록 PHP Redis 확장을 설치해야 합니다.

먼저, 다음 명령어를 실행하여 패키지 관리자 캐시를 업데이트하십시오:

다음으로, php5-redis 패키지를 설치하십시오:

이제 Redis에 연결할 준비가 모두 끝났습니다.

7단계 — 웹 서버에서 Redis를 기본 세션 핸들러로 설정

PHP에는 기본 세션 핸들러가 있습니다. 이 단계에서는 php.ini 파일을 web 서버에서 편집하여 기본 설정을 변경합니다. php.ini 파일 위치는 현재 스택에 따라 다릅니다:

  • Ubuntu 20.04의 LAMP 스택의 경우 다음을 사용하십시오: /etc/php5/apache2/php.ini.

  • Ubuntu 20.04의 LEMP 스택의 경우 경로는 일반적으로 다음과 같습니다: /etc/php5/fpm/php.ini.

메인 php.ini 파일의 위치를 잘 모르는 경우, phpinfo() 함수의 도움을 받으십시오. 웹 루트 디렉터리 내에 info.php라는 이름의 파일을 만들고 다음 코드를 넣으십시오:

브라우저에서 스크립트에 액세스할 때 "Loaded Configuration File"이 포함된 행을 검색하십시오. 로드된 메인 php.ini 파일의 정확한 위치를 찾을 수 있습니다. 환경의 모든 민감한 정보가 포함되어 있으므로 info.php 파일은 반드시 제거하십시오.

그 후, php.ini 파일을 열고 session.save_handler이 포함된 줄을 찾으십시오. 기본값은 files이며, 이를 반드시 redis.

로 변경하십시오. LAMP 환경의 경우:

On LEMP 환경의 경우:

다음으로, session.save_path의 주석을 해제하고 Redis 연결 문자열을 포함하도록 값을 수정하십시오. 내용은 아래 형식을 따라야 합니다:

다음에서 설정한 비밀번호를 사용하십시오: Step- 4.. 설정된 비밀번호를 사용하지 않는 경우, Redis를 구성할 때 auth 매개변수를 제공하십시오. 이제 파일을 저장하고 php를 재시작하십시오. 두 환경 모두에서 서비스.

다음 LAMP 환경:

다음 LEMP 환경:

8단계 — Redis 세션 처리 테스트

마지막 단계에서는 세션이 이제 Redis에 의해 처리되는지 확인하기 위해 PHP 스크립트나 애플리케이션이 필요합니다. 페이지를 새로고침할 때마다 출력되는 숫자가 증가하는 카운터를 구현하는 간단한 스크립트를 사용할 것입니다. – 페이지를 새로고침할 때마다 출력되는 숫자가 증가합니다.

다음 이름의 파일을 생성합니다: demo.php (대상: web 서버) 그리고 이를 문서 루트 폴더 안에 보관합니다:

그런 다음, /usr/share/nginx/html 부분을 문서 루트 경로를 반영하도록 변경합니다:

다음으로, 브라우저에서 http://web/demo.php에 접속하여 스크립트에 액세스해야 합니다. 페이지를 새로고침할 때마다 프로그램이 숫자를 증가시킵니다.

이제 세션 정보가 Redis 서버에 저장됩니다. 이를 확인하려면 redis 머신의 SSH 세션으로 돌아가서 redis-cli를 사용해야 합니다. 다음 명령어로 콘텐츠를 다시 한 번 가져옵니다: keys *:

아래와 같은 출력이 표시됩니다:

이 출력은 모든 정보가 redis 서버에 안전하게 저장되었음을 확인해 줍니다. 추가 web 서버를 연결하려면 동일한 방식으로 진행하면 됩니다.

결론

Redis는 수많은 비정형 데이터를 저장할 수 있는 NoSQL 데이터베이스입니다. redis 서버의 기능과 단순함에 필적할 수 있는 데이터베이스는 거의 없습니다. 점점 더 높아지는 인기로 인해 광범위한 기능에 비해 대체재가 거의 없는 필수 아이템이 되고 있습니다.

PHP 애플리케이션과 그 사용법에 대한 지식을 더 깊이 넓히려면 저희 블로그의 다음 튜토리얼을 살펴보세요:

즐거운 컴퓨팅 되세요!

author

Shreyas Patil

작성자 · CloudSigma

Preslav Dobrev는 CloudSigma의 크리에이티브 디자이너로서, 전통적이고 혁신적인 마케팅 채널을 활용하여 일관된 비즈니스 정체성을 구축하는 데 중점을 두고 있습니다. 그는 영향력 있는 브랜드 내러티브를 창출하기 위해 예술적 비전과 전략적 마케팅을 결합하는 데 능숙합니다.

댓글

아직 댓글이 없습니다. 첫 번째로 작성해 보세요.