- 전체
- 명
- 오늘 찾아주신 분
- 명
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 필요 패키지 설치
나의 경우에는,
들의 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) 가 제대로 지정되었는 지 확인해야 한다.
[AWS] ECS 에 Docker 연동하기 -6- (커맨드 실행) (0) | 2022.11.23 |
---|---|
[AWS] ECS 에 Docker 연동하기 -5- (ECS-EFS 연동) (0) | 2022.11.22 |
[AWS] ECS 에 Docker 연동하기 -4- (EFS 생성) (0) | 2022.11.22 |
[AWS] ECS 에 Docker 연동하기 -3- (서비스/클러스터 생성) (1) | 2022.11.21 |
[AWS] ECS 에 Docker 연동하기 -2- (ECS Task 정의) (0) | 2022.11.18 |