컴퓨터/노트북/인터넷
IT 컴퓨터 기기를 좋아하는 사람들의 모임방
전제 조건
이 자습서에서는 두 개의 서버를 사용하여 세션 처리를 구성합니다. 따라하려면 다음이 필요합니다.
- Ubuntu 16.04 에서 LAMP 또는 LEMP 를 실행하는 PHP 웹 서버 . 이 서버를 웹이라고 합니다.
- Redis가 설치 될 두 번째 깨끗한 Ubuntu 16.04 서버. 이 서버를 redis라고 합니다.
sudo
이러한 각 서버에 구성된 권한이있는 루트가 아닌 사용자가 있어야 합니다. 또한 각 서버에 기본 방화벽이 실행되고 있다고 가정합니다. 두 서버에서 Ubuntu 16.04 초기 서버 설정 가이드 에 따라 이러한 요구 사항을 모두 설정할 수 있습니다 .
1 단계 : Redis 서버 및 클라이언트 소프트웨어 설치
첫 번째 단계는 두 컴퓨터 모두에 필요한 소프트웨어를 설치하는 것입니다. 우리의 redis 머신에는 Redis 서버가 필요합니다. 우리에 웹 기계, 우리는 세션 처리 및 테스트하기위한 레디 스 명령 행 클라이언트에 대한 레디 스 PHP 확장을 설치합니다.
Redis 서버 설치
가장 먼저해야 할 일은 Redis 시스템 에서 Redis 서버를 실행하는 것 입니다.
Chris Lea가 제공하는 신뢰할 수있는 PPA 저장소와 함께 일반 Ubuntu 패키지 관리자를 사용할 것입니다. 이것은 Redis의 최신 안정 버전을 확보하는 데 필요합니다.
참고 : 일반적인 보안 조언으로 신뢰할 수있는 소스의 PPA 만 사용해야합니다.
먼저 다음을 실행하여 PPA 저장소를 추가합니다.
ENTER
확인하려면 누릅니다 .
다음으로 패키지 색인을 업데이트하고 다음을 입력하여 Redis 서버를 설치합니다.
이제 Redis가 서버에 설치되고 실행되어야합니다. 다음을 입력하여 서비스가 실행 중이고 연결을 수락하는지 테스트합니다.
Redis server output
PONG
포트 6379의 localhost 에서 실행중인 Redis 인스턴스에 연결됩니다 . 응답으로 PONG 을 받아야합니다 .
Redis 클라이언트 및 PHP 확장 설치
그런 다음 웹 서버 에 Redis 명령 줄 클라이언트와 Redis PHP 확장을 설치 합니다. 연결 및 인증을 쉽게 테스트하기 위해 명령 줄 클라이언트를 사용할 것입니다. 세션 데이터를 저장하기 위해 PHP 확장을 사용할 것입니다.
다음을 입력하여 로컬 패키지 색인을 업데이트하고 웹 서버에 소프트웨어를 설치합니다 .
이제 redis-cli
테스트 할 서버에 대한 액세스 권한이 아직 없지만 도구에 대한 액세스 권한이 있어야합니다.
2 단계 : 외부 연결을 허용하도록 Redis 구성
기본적으로 Redis는에서의 연결 만 허용하므로 localhost
기본적으로 Redis가 설치된 서버 내부에서만 액세스 할 수 있습니다. 다른 서버에서 오는 연결을 허용하려면이 구성을 변경해야합니다.
Redis는 기본 암호화 옵션을 제공하지 않으며 신뢰할 수있는 피어의 격리 된 네트워크에 배포되었다고 가정합니다. 즉, 외부 연결을 안전하게 허용하려면 두 서버가 모두 격리 된 네트워크에 있어야하거나 다른 방식으로 두 서버 간의 트래픽을 보호해야합니다.
Redis가 격리 된 네트워크에 배포 된 경우…
서버가 격리 된 네트워크에서 작동하는 경우 격리 된 네트워크 IP 주소에 바인딩하도록 Redis의 구성 파일을 조정하기 만하면됩니다.
는에 레디 스 서버, 백업을하고, 레디 스 구성 파일을 엽니 다
bind
줄을 찾아 Redis 서버의 격리 된 네트워크 IP 주소를 추가합니다.
파일을 저장하고 닫습니다. 다음을 입력하여 서비스를 다시 시작합니다.
Redis 포트에 대한 액세스를 엽니 다.
이제 Redis는 격리 된 네트워크에서 연결을 수락 할 수 있습니다.
Redis가 격리 된 네트워크에 배포되지 않은 경우…
격리되지 않았거나 제어 할 수없는 네트워크의 경우 다른 수단을 통해 트래픽을 보호해야합니다. 다음을 포함하여 Redis 서버에 대한 트래픽을 보호하는 많은 옵션이 있습니다.
- stunnel을 사용한 터널링 : redis 서버 에 들어오는 터널을 설정 하고 웹 서버 에 나가는 터널을 설정해야 합니다. 웹 서버는 원격 Redis 서비스와 통신하기 위해 로컬 포트에 연결됩니다.
- 스 파이핑 된 터널링 : 웹 서버가
spiped
클라이언트 시스템으로 작동해야합니다 . 각 서버에 systemd 단위 파일을 만들어야합니다. 웹 서버는 원격 Redis 서비스와 통신하기 위해 로컬 포트에 연결됩니다. - PeerVPN으로 VPN 설정 : 두 서버 모두 VPN에서 액세스 할 수 있어야합니다. 웹 서버에 액세스 할 수 레디 스의 의 VPN IP 주소를 사용하여 서버를.
위의 방법 중 하나를 사용하여 웹 서버에서 redis 서버 로의 보안 액세스를 구성 하십시오 . 웹 머신이 원격 머신의 Redis 서비스에 연결하는 데 사용할 IP 주소와 포트를 알아야합니다 .
이 시점에서 웹 서버에서 Redis 서버에 안전하게 액세스 할 수 있어야합니다.
3 단계 : Redis 서버에 대한 암호 설정
Redis 설치에 추가 보안 계층을 추가하려면 서버 데이터에 액세스하기위한 암호를 설정하는 것이 좋습니다. Redis 구성 파일은 /etc/redis/redis.conf
다음 위치 에서 편집합니다 .
requirepass
지시문을 찾아 강력한 암호로 설정하십시오. Redis 트래픽은 외부 당사자로부터 안전해야하지만 이는 Redis 자체에 대한 인증을 제공합니다. Redis는 빠르고 암호 시도를 제한하지 않으므로 무차별 대입 시도로부터 보호하기 위해 강력하고 복잡한 암호를 선택합니다.
완료되면 파일을 저장하고 닫습니다.
Redis 서비스를 다시 시작하여 변경 사항을 구현합니다.
이제 Redis 서버가 인증되지 않은 요청을 거부해야합니다.
4 단계 : Redis 연결 및 인증 테스트
변경 사항이 예상대로 작동하는지 테스트하려면 웹 머신 에서 Redis 서비스에 연결하십시오 .
기본적으로 Redis 서버는 로컬 인터페이스에서 6379를 수신하지만 위에서 다룬 각 네트워크 보안 옵션은 외부 당사자를 위해 어떤 방식 으로든 기본값을 수정합니다. IP 주소 를 지정하는 옵션 과 원격 서비스에 연결하는 데 필요한 포트를 지정하는 옵션 과 redis-cli
함께 클라이언트를 사용할 수 있습니다 . 기본 옵션 (각각 127.0.0.1 및 6379)을 사용하는 경우 둘 중 하나를 생략 할 수 있습니다.-h
-p
사용하는 값은 네트워크 트래픽을 보호하는 데 사용한 방법에 따라 다릅니다.
- 격리 된 네트워크 : Redis 서버의 격리 된 네트워크 IP 주소를 사용합니다. 기본 Redis 포트 (6379)가 사용되므로 언급 할 필요가 없습니다.
redis-cli -h redis_isolated_IP
- stunnel 또는 spiped : 원격 Redis 서비스로 터널링하는 로컬 포트를 사용합니다.
redis-cli -p 8000
- PeerVPN : Redis 서버의 VPN IP 주소 사용 :
redis-cli -h 10.8.0.1
일반적인 형식은 다음과 같습니다.
웹 서버 에서 원격 Redis 인스턴스에 연결할 수 있어야 합니다.
암호를 정의하고 이제 데이터에 액세스하려고하면 AUTH 오류가 발생해야합니다.
(error) NOAUTH Authentication required.
Web server output
(error) NOAUTH Authentication required.
인증하려면 파일에 AUTH
정의한 것과 동일한 비밀번호를 제공하여 명령 을 실행하기 만하면 /etc/redis/redis.conf
됩니다.
자격 증명이 수락되었다는 응답 으로 OK 를 받아야합니다 .
Web server output OK
Web server output
OK
다음으로 Redis에 설정된 키를 나열합니다.
이것이 새로운 Redis 서버 인 경우 출력은 다음과 유사해야합니다.
(empty list or set)
Web server output
(empty list or set)
이 출력은 Redis 서버가 비어 있음을 의미합니다. 웹 서버는 아직 세션 핸들러로이 레디 스 서버를 사용하도록 구성되어 있지 않습니다.
다음을 입력하여 명령 셸로 돌아갑니다.
인증으로 성공적으로 연결할 수 있는지 확인 했으므로 이제 Redis를 기본 세션 처리기로 만들 수 있습니다.
5 단계 : 웹 서버에서 Redis를 기본 세션 처리기로 설정
이제 웹 서버 의 php.ini
파일 을 편집하여 PHP의 기본 세션 핸들러를 변경해야합니다. 이 파일의 위치는 현재 스택에 따라 다릅니다.
기본 리포지토리에서 설치된 Ubuntu 16.04 의 LAMP 스택의 경우 일반적으로 /etc/php/7.0/apache2/php.ini
. Ubuntu 16.04 의 LEMP 스택의 경우 경로는 일반적으로 /etc/php/7.0/fpm/php.ini
. 이러한 위치 중 하나가 올바른지 확인한 경우 다음 섹션을 건너 뛰어도됩니다.
(선택 사항) 올바른 php.ini 파일 찾기
주 php.ini
파일 의 위치가 확실하지 않은 경우 phpinfo()
기능 을 사용하여 찾을 수 있습니다 . 문서 루트에서 라는 웹 서버 에서 파일을 엽니 다.이 파일은 info.php
기본적으로 /var/www/html
LAMP 및 LEMP 용입니다.
파일에 다음 코드를 넣으십시오.
브라우저에서 웹 서버의 도메인 이름 또는 IP 주소를 방문한 후 다음을 수행하십시오 /info.php
.
http://web_server_domain_or_IP/info.php
“Loaded Configuration File”이 포함 된 행을 찾으면 php.ini
로드 된 메인의 정확한 위치를 찾아야합니다 .
작업이 끝나면 파일을 제거합니다. 그러면 환경에 대한 중요한 정보가 표시됩니다.
이제 파일의 위치를 알았으므로 편집으로 이동할 수 있습니다.
구성 수정
php.ini
편집 할 파일을 엽니 다 .
기본 구성에서 LAMP 스택을 사용하는 경우 필요한 명령은 다음과 같습니다.
기본 구성에서 LEMP 스택을 사용하는 경우 필요한 명령은 다음과 같습니다.
phpinfo()
위에 설명 된 방법을 사용하여 다른 경로를 찾은 경우 대신 여기에서 해당 경로로 대체하십시오.
php.ini
파일 내에서 session.save_handler
. 기본값은 files
입니다. redis
Redis PHP 확장을 사용하려면 이를로 변경하십시오 .
다음으로 session.save_path
. 주석 처리를 제거하고 Redis 연결 문자열을 포함하도록 값을 변경해야합니다.
연결 문자열은 다음 형식을 사용하여 모두 한 줄로 구성 할 수 있습니다.
tcp://IP_address:port?auth=redis_password
다시 말하지만, 적절한 값은 선택한 보안 네트워킹 전략에 따라 달라집니다. redis-cli
이전 에 명령에 제공 한 것과 동일한 값을 사용하십시오 . 사용 된 예를 들어, stunnel
또는 spiped
의는 session.save_path
것 같이 보일 것입니다 :
완료되면 파일을 저장하고 닫습니다. 다음으로 PHP 서비스를 다시 시작하여 변경 사항을 구현하십시오.
에서 램프 환경, 입력 :
에서 LEMP의 환경, 입력 :
이제 세션 핸들러로 Redis를 사용하도록 PHP를 구성해야합니다.
6 단계 : Redis 세션 처리 테스트
세션이 이제 Redis에서 처리되는지 확인하려면 세션에 정보를 저장하는 PHP 스크립트 또는 애플리케이션이 필요합니다. 카운터를 구현하는 간단한 스크립트를 사용할 것입니다. 페이지를 다시로드 할 때마다 인쇄 된 번호가 증가합니다.
문서 루트 폴더 내에 웹 서버 test.php
에 이름이 지정된 파일을 만듭니다 .
내부에 다음 코드를 붙여 넣습니다.
파일을 저장하고 닫습니다.
스크립트에 액세스하려면 브라우저에 웹 서버의 공용 IP 주소를 지정 /test.php
하십시오.
http://web_server_public_IP/test.php
페이지를 다시로드 할 때마다 표시되는 숫자가 증가해야합니다.
이제 redis 컴퓨터 에서을 사용 redis-cli
하여 세션을 엽니 다. 로컬 인스턴스에 연결하므로 IP 주소 나 포트를 제공 할 필요가 없습니다.
Redis 비밀번호를 사용하여 인증 :
Redis server output
OK
이제 기존 키를 확인하십시오.
PHP 세션에 대한 새 항목이 표시되어야합니다.
"PHPREDIS_SESSION:2ofnvhhr6gdvp88u0c4e7kb800"
Redis server output
1) "PHPREDIS_SESSION:2ofnvhhr6gdvp88u0c4e7kb800"
키 값을 요청하면 현재 카운터 값을 볼 수 있습니다.
Redis server output
"count|i:6;"
이것은 세션 정보가 Redis 서버에 저장되고 있음을 나타냅니다. 중앙 집중식 세션 관리를 위해 추가 웹 서버를 Redis 서버에 연결할 수 있습니다.
결론
Redis는 PHP 용 세션 핸들러로도 사용할 수있는 강력하고 빠른 키-값 저장소 서비스로, 세션 저장소를위한 분산 시스템을 제공하여 확장 가능한 PHP 환경을 구현합니다. PHP 애플리케이션 확장에 대한 자세한 내용은 PHP 애플리케이션 수평 확장 문서를 참조하세요 .
컴퓨터/노트북/인터넷
IT 컴퓨터 기기를 좋아하는 사람들의 모임방
-
구글 최신 뉴스
날짜2024.12.12 카테고리뉴스 읽음1388 -
아 진짜 요새 SKT 해킹 뭐시기 때문에 신경 쓰여 죽겠어 ㅠㅠ
날짜2025.05.20 카테고리일반 읽음237 -
🚨(뉴비필독) 전체공지 & 포인트안내
날짜2024.11.04 카테고리 읽음25862 -
URL만 붙여넣으면 끝! 임베드 기능
날짜2025.01.21 카테고리 읽음20435 -
아 진짜 요새 SKT 해킹 뭐시기 때문에 신경 쓰여 죽겠어 ㅠㅠ
날짜2025.05.20 카테고리일반 조회수237 -
저렴한 중국산 외장 SSD의 실체
날짜2025.05.17 카테고리일반 조회수515 -
인텔 애로우레이크의 CPU 내부 다이 모습
날짜2025.05.10 카테고리일반 조회수600 -
스카이프, 오늘 서비스 종료
날짜2025.05.10 카테고리일반 조회수602 -
SKT "보상 시 고객도 입증책임"
날짜2025.05.10 카테고리일반 조회수630 -
KISA, 신규 악성코드 위협 공지...SKT 내부 서버에서 ‘BPF도어’ 악성코드 변종 8종 추가 발견
날짜2025.05.10 카테고리정보 조회수578 -
“SK하이닉스 내부자에 뚫렸다” 中이직 앞두고 1만여건 기술 유출
날짜2025.05.10 카테고리일반 조회수572 -
기가바이트, 12년만에 메인보드에 새로운 기능을 추가
날짜2025.05.10 카테고리일반 조회수589 -
SKT “위약금 면제 시 수백만명 해지… 분위기 휩쓸려 시장 대혼란”
날짜2025.05.10 카테고리일반 조회수594 -
CUDA 툴킷, 맥스웰, 파스칼, 볼타 지원 중단
날짜2025.05.10 카테고리일반 조회수596 -
그래픽카드를 활용한 암호 해독 벤치마크
날짜2025.05.10 카테고리일반 조회수598 -
애즈락 X870 스틸 레전드 메인보드에서 라이젠 9 9950X CPU가 사망
날짜2025.05.10 카테고리일반 조회수584 -
코어 울트라 200 메인보드, PCIe 5.0 M.2 성능 제한이 있음
날짜2025.05.10 카테고리일반 조회수562 -
시게이트, 2030년까지 100TB 하드디스크 출시
날짜2025.05.10 카테고리일반 조회수582 -
MS가 인텔 18A 공정 계약을 체결?
날짜2025.05.10 카테고리정보 조회수596 -
블루투스 6.1 발표. 전력 효율과 보안 향상
날짜2025.05.10 카테고리정보 조회수615 -
중국 Hygon, 128코어 512스레드의 서버 프로세서 로드맵 공개
날짜2025.05.10 카테고리정보 조회수577 -
인텔, 컴퓨텍스에서 아크 프로 B60 24GB를 발표?
날짜2025.05.10 카테고리정보 조회수617 -
지포스 RTX 5060의 리뷰용 드라이버가 없음
날짜2025.05.10 카테고리일반 조회수625 -
젠슨황이 사인한 리바 TNT 엔지니어링 프로토타입 키트, 도시락 상자
날짜2025.05.10 카테고리일반 조회수565 -
SSD랑 HDD 가격 요즘 진짜 헬이다… 업체들 때문에 미쳐버릴 듯
날짜2025.04.18 카테고리일반 조회수4657 -
컴퓨터 메인보드용 ddr6 메모리는 언제나올지 찾아봤는데
날짜2025.04.08 카테고리일반 조회수597 -
갤럭시탭 S10 FE 4월 3일 출시했습니다. 혜택 나쁘지 않네요
날짜2025.04.05 카테고리일반 조회수842 -
절대 공개하지 않는 메인보드 AS센터의 전설의 기술
날짜2025.03.30 카테고리수리/AS 조회수926 -
메인보드 수리방법 가감없이 공유합니다! #shorts
날짜2025.03.30 카테고리수리/AS 조회수864 -
라이카와 협업한 샤오미 15 울트라 실버 크롬 언박싱
날짜2025.03.29 카테고리일반 조회수971 -
어도비 비정품 알림 Adobe 앱 라이선스 관련 알림창 없애기
날짜2025.03.28 카테고리일반 조회수617 -
윈도우 12, 과연 등장할까? (예상 및 루머 정리)
날짜2025.03.21 카테고리일반 조회수899 -
메인보드중에 고장률이 가장 낮은 회사
날짜2025.03.19 카테고리일반 조회수682 -
벽 콘센트 꼽는거 구멍 위치가 정해져있었네
날짜2025.03.14 카테고리일반 조회수1440