Redis란?
레디스는 Remote Dictionary Server의 약자로서, "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템이다. 2009년 살바토르 산필리포가 처음 개발했다.😉
php-redis는 redis와 통신이 가능한 api를 제공하여, php-redis의 연결을 지원합니다.👨
설치 환경
OS : Rocky Linux 8.7
PHP : 7.2.24 (dnf 패키지 설치)
설치한 php-redis 모듈 소스 파일을 다운로드 합니다.
https://pecl.php.net/package/redis
본문에선 5.3.7 stable 버전으로 설치를 진행하겠습니다.
https://pecl.php.net/get/redis-5.3.7.tgz
준비
설치파일을 저장할 경로를 생성합니다.
[root@guest-1 ~]# cd /root/ [root@guest-1 ~]# mkdir download [root@guest-1 download]# wget https://pecl.php.net/get/redis-5.3.7.tgz
wget 으로 설치파일을 다운로드합니다.(wget 패키지가 없다면, dnf install wget으로 설치합니다.)
[root@guest-1 download]# tar xvf redis-5.3.7.tgz
다운받은 redis소스파일을 압축해제 합니다.
설치
[root@guest-1 download]# cd redis-5.3.7 [root@guest-1 redis-5.3.7]# ls COPYING README.markdown backoff.h cluster_library.h config.w32 library.c redis.c redis_array_impl.c redis_cluster.h redis_sentinel.c redis_session.h sentinel_library.h CREDITS arrays.markdown cluster.markdown common.h crc16.h library.h redis_array.c redis_array_impl.h redis_commands.c redis_sentinel.h sentinel.markdown tests INSTALL.markdown backoff.c cluster_library.c config.m4 liblzf php_redis.h redis_array.h redis_cluster.c redis_commands.h redis_session.c sentinel_library.c [root@guest-1 redis-5.3.7]#
phpize 명령어를 통해, configure파일 생성하여 컴파일 설치가 가능한 환경을 구성합니다.
phpize 파일이 없다면, 👉php-devel패키지를 설치합니다.
[root@guest-1 redis-5.3.7]# dnf install php-devel [root@guest-1 redis-5.3.7]# phpize Configuring for: PHP Api Version: 20170718 Zend Module Api No: 20170718 Zend Extension Api No: 320170718 [root@guest-1 redis-5.3.7]# [root@guest-1 redis-5.3.7]# ls COPYING acinclude.m4 backoff.h common.h config.w32 liblzf mkinstalldirs redis_array_impl.c redis_commands.h run-tests.php CREDITS aclocal.m4 build config.guess configure library.c php_redis.h redis_array_impl.h redis_sentinel.c sentinel.markdown INSTALL.markdown arrays.markdown cluster.markdown config.h.in configure.ac library.h redis.c redis_cluster.c redis_sentinel.h sentinel_library.c Makefile.global autom4te.cache cluster_library.c config.m4 crc16.h ltmain.sh redis_array.c redis_cluster.h redis_session.c sentinel_library.h README.markdown backoff.c cluster_library.h config.sub install-sh missing redis_array.h redis_commands.c redis_session.h tests [root@guest-1 redis-5.3.7]#
컴파일을 통하여, 확장모듈을 생성 및 설치합니다.
👉./configure --enable-redis --with-php-config=/usr/bin/php-config
php-config 파일 경로가 기본 실행파일 경로(/usr/bin/등, 환경변수에 등록된 경로)가 아니라면, --with-php-config 옵셔을 통해, php-config 경로를 지정합니다.
본문에선 패키지 설치를 진행하여, php-config경로가 (/usr/bin/php-config) 입니다.[root@guest-1 redis-5.3.7]# ./configure --enable-redis --with-php-config=/usr/bin/php-config ..생략.. [root@guest-1 redis-5.3.7]# make && make install
그뒤 make && make install을 통해 모듈 설치를 진행합니다.
(make 패키지가 없을 경우, dnf install make 설치합니다.)
설치가 완료되면, 아래와 같이 완료 내역을 확인할 수 있습니다.설치 완료 후
Libraries have been installed in: /root/download/redis-5.3.7/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the '-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the 'LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the 'LD_RUN_PATH' environment variable during linking - use the '-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to '/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Build complete. Don't forget to run 'make test'. Installing shared extensions: /usr/lib64/php/modules/
ini설정
다음 redis모듈을 불러들일 ini파일을 생성하여 redis모듈을 로드합니다.
php를 패키지로 설치할 경우, ini파일들이 모듈별로 생성되며, /etc/php.d/경로 하단에 생성됩니다.[root@guest-1 redis-5.3.7]# cd /etc/php.d/ [root@guest-1 php.d]# ls 20-bz2.ini 20-calendar.ini 20-ctype.ini 20-curl.ini 20-exif.ini 20-fileinfo.ini 20-ftp.ini 20-gettext.ini 20-iconv.ini 20-json.ini 20-phar.ini 20-sockets.ini 20-tokenizer.ini [root@guest-1 php.d]#
/etc/php.d경로에 redis.ini을 생성하여 "extension=redis"를 기입합니다.
[root@guest-1 php.d]# vi redis.ini extension=redis
php명령어를 실행하여, 이상이 없는지 확인합니다.
실행시 다음과 같은 에러가 나온다면, json모듈이 없기때문입니다.⚡undefined symbol: php_json_decode_ex)) in Unknown on line 0
이럴경우, php-json확장모듈도 설치해줍니다.
dnf install php-json ============================================================================================================================================================================================================== 꾸러미 구조 버전 레포지터리 크기 ============================================================================================================================================================================================================== 설치 중: php-json x86_64 7.2.24-1.module+el8.4.0+413+c9202dda appstream 72 k
설치가 완료되었다면, json모듈이 잘 올라왔는지 확인합니다.
[root@guest-1 php.d]# php -m| grep json json
최종 확인
php -m명령어를 통해 redis모듈이 잘 올라왔는지 확인합니다.
php -m [root@guest-1 redis-5.3.7]# php -m| grep redis redis