Amazon Linux 2 에 PHP zip extension 설치
오늘 수행한 "야크 털 깍기" 라서 기록해 둡니다.
개요
이유는 모르겠지만 Amazon linux 2 에 있는 PHP 는 zip 모듈이 포함되어 있지 않습니다.
이때문에 laravel installer 나 기타 zip 을 사용하는 PHP 코드가 동작하지 않습니다.
Amazon Linux 2가 나온지 얼마되지 않아서 인지 구글링을 해도 별다른 정보가 없어서 직접 소스를 가져다가 컴파일하기로 했습니다.
먼저 php 개발 환경을 구성하기 위해 다음 패키지를 설치합니다.
yum install php-devel zlib-devel
설치가 끝났으면 PHP zip module 의 소스를 다운 받고 압축을 해제합니다.
wget https://pecl.php.net/get/zip-1.15.2.tgz tar zxvf zip-1.15.2.tgz
libzip 컴파일
zip 모듈은 libzip 0.11 이상을 필요로 하나 배포판에 포함된 건 0.10 이므로 컴파일이 되지 않으므로 libzip 로 소스를 가져다가 컴파일해야 합니다.
wget https://libzip.org/download/libzip-1.4.0.tar.gz tar zxvf libzip* cd libzip-1.4.0
이제 libzip을 컴파일하려고 보니 cmake 가 필요해서 설치했는데 libzip 은 CMake 3.0 이상을 필요로 하는데 배포판에 포함된 건 2.8 이라 CMake 부터 설치해야 합니다.
CMake 설치
배포판에 낮은 버전이 있으므로 제조사에서 사전에 빌드한 바이너리를 다운받아서 설치합니다.
wget https://cmake.org/files/v3.9/cmake-3.9.6-Linux-x86_64.tar.gz
이제 압축을 풀고 심볼릭 링크를 걸어줍니다.
tar zxvf cmake* -C /usr/local ln -s /usr/local/cmake-3.9.6-Linux-x86_64/ /usr/local/cmake ln -s /usr/local/cmake/bin/cmake /usr/local/bin/cmake
다시 libzip 컴파일
이제 cmake 를 설치했으니 libzip 을 컴파일합니다.
다음 명령어를 실행하면 설치가 완료됩니다.
mkdir build cd build cmake .. make make test make install
zip module 설치
libzip 설치까지 완료되었으면 이제 zip 모듈을 컴파일할 순서입니다.
zip 모듈 소스 디렉터리로 이동합니다.
cd zip-1.15.2
PHP extension 컴파일을 위한 스크립트를 생성합니다.
phpize
configure 로 Makefile 을 생성하고 컴파일합니다.
./configure && make && make test
컴파일한 모듈을 설치합니다.
make install
moduel 설정 ini 를 생성합니다.
echo "extension=zip" > /etc/php.d/20-zip.ini
php-fpm 을 재구동합니다.
systemctl restart php-fpm
모듈 설치가 끝났으면 이제 다시 laravel installer 를 설치하여 정상 동작 여부를 확인합니다.
composer global require "laravel/installer"