PHP-REDIS 모듈 소스 설치

Yeeees, I can!·2023년 1월 30일
0
post-thumbnail

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

이로써, php-redis 모듈 설치가 완료됩니다.

다음엔, redis 구성하여, 실제 php-redis모듈을 이용하여, 연결을 해보도록 하겠습니다.

profile
그동안 경험 및 공부하면서 얻은 지식을 써놓은 블로그입니다~

0개의 댓글