Tempo Di Valse

[AWS/PHP] EC2 Amazon Linux 에 PHP 8.1 버전 설치하기 본문

개발/AWS

[AWS/PHP] EC2 Amazon Linux 에 PHP 8.1 버전 설치하기

TempoDiValse 2022. 11. 23. 17:27

 Amazon Linux 를 사용하는 EC2 인스턴스 인 경우에는 yum 을 통해 설치를 하게 되면 PHP 5.4 버전인가로 설치 되게 되어있다. 그리고 amazon-linux-extras 로 설치하는 경우에는 php7.4 나 php 8.0 둘 중 하나를 설치할 수 있도록 되어있다.

 하지만 내가 원하는 버전은 8.1.7 버전이라 8.0 을 설치할 수 없었다. 그래서 어떻게 해야 하는가 싶었지만 할 수 있는 방법은 컴파일 설치 뿐이었다.

 

1. 패키지 다운로드

 

wget 이 설치되어있다면 wget 을 이용하여 PHP 소스를 다운받는다.

mkdir pkg
wget https://www.php.net/distributions/php-8.1.7.tar.gz ./pkg/php-8.1.7.tar.gz
tar zxvf ./pkg/php-8.1.7.tar.gz && rm -rf ./pkg/php-8.1.7.tar.gz

pkg 라는 폴더 안에서 작업할 수 있도록 커맨드를 작성했기 때문에 환경에 맞게 바꾸면 된다.

 

그리고 평범하게 configure 를 통해 컴파일을 시도한다. 그러나...

C컴파일러가 EC2 인스턴스에 존재하지 않았다. 그래서 yum 으로 gcc 를 설치해보고자 했지만, yum 안에도 존재하지 않았다.

 

그래서 할 수 있는 방법은,

 

2. Developer Tools 설치

AWS 에서는 소스컴파일 하는 사람들을 위해 Developer Tools 라는 것을 다운 받을 수 있도록 해주었다. 커맨드는 다음의 커맨드를 사용한다.

sudo yum groupinstall "Development Tools"

 설치를 완료하고서 다시 configure 를 돌리게 되면 이제는 주루룩 잘 돌아가게 되는데, enable 옵션으로 extension 을 설치한 경우에는 devel 패키지를 설치해야 한다.

 

3. extension 필요 패키지 설치

 

나의 경우에는, 

  • libxml2
  • libcurl
  • libsodium
  • oniguruma
  • openssl
  • libpng
  • sqlite

들의 extension 에 필요한 라이브러리 파일들을 설치했다. 이 중에서 libsodium 을 제외한 나머지 패키지들은 끝에 -devel 을 붙여서 설치하면 된다.

sudo yum install -y libxml2-devel libcurl-devel oniguruma-devel openssl-devel libpng-devel sqlite-devel

그러나 libsodium 은 yum 패키지에서 바로 설치 할 수는 없고, epel 패키지를 설치한 후에 가능했다. epel 패키지는 yum 이 아닌 amazon-linux-extras 를 이용하여 설치할 수 있다.

sudo amazon-linux-extras install -y epel
sudo yum install -y libsodium-devel

그러고서 다시 configure 를 돌려본다.

4. 메모리 부족 해결

configure 도 완료 했으니, make && make install 만 하는 일만 남았다.

sudo make && sudo make install

터미널 창은 컴파일 성공 메세지들로 도배가 되며 계속 기다리면 된다. 그러나 중간에 컴파일 하는 도중에 에러를 밷으며 멈추는 것이 있다. 대부분은 PHP 를 설치하는데 메모리가 부족하게 되면 에러를 뱉으며 멈추게 된다. 아마 fileinfo 를 컴파일을 할 때 멈추는게 대부분 일 것이다.

 

기본 t2.micro 인스턴스를 사용하는 경우에는 어쩔 수 없이 메모리가 부족할 수 밖에 없어서 메모리 스왑 을 이용하여 메모리를 설정해주어야 한다.

# 128 * 32 = 4GB 메모리 스왑 파일 생성
sudo dd if=/dev/zero of=/swapfile bs=128M count=32
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
sudo vi /etc/fstab
.. 마지막 줄에 다음 항목 작성
/swapfile swap swap defaults 0 0

차례대로 모두 입력을 한 후에 다시 make && make install 을 돌려보도록 하자

 

5. 설치 완료

 

6. Fix

- php -v 가 없다고 나오는 경우

php 를 임의의 폴더에 설치 한 경우에는 환경변수를 잡아주어야 한다.

 

- php -v 는 되는데 sudo php -v 는 안되는 경우

visudo 에디터로 들어간 후 secure_path 에 php 가 설치된 폴더(bin, sbin) 가 제대로 지정되었는 지 확인해야 한다.

반응형
Comments