본문 바로가기
미들웨어/환경설정

【Nginx】Amazon Linux 2 AMI에서 Nginx + PHP연동설정

by 코이킹 2022. 4. 1.
반응형

안녕하세요. 코이킹입니다. 

이번 포스트에서는 PHP를 설치후 Nginx와 연동하는 과정에 대해서 정리하려합니다. 


※ 실습 환경의 버젼정보  

서버 : AWS-EC2

OS  :  Amazon Linux 2 AMI

Nginx : nginx/1.20.0 (amazon-linux-extras를 통해 설치) https://koiking.tistory.com/54

php : 5.4.16 (yum통해 설치)

php-fpm : 5.4.16 (yum통해 설치)

 

 

※ 포스트의 목적 

이 포스트에서 설명하고자하는 Nginx - PHP연동 설정은 php를 활용한 테스트 웹 페이지를 만들어 사용하고자 하는게 목적이므로 PHP언어를 사용한 본격적인 개발환경 구축과는 거리가 멀다고 생각합니다.    

 

1. PHP설치 

$ which php # php가 이미 설치되어 있는지 확인 
$ sudo yum -y install php # php 설치 
$ php --version

 

PHP버젼이 출력되면 제대로 설치된 것입니다. 

 

2. php-fpm설치 

Apache웹서버의 경우 설치하는것만으로 PHP를 동작시킬 수 있지만, 
Nginx는 설치하는 것만으로는 PHP를동작시킬 수 없으므로, PHP를 동작시키기 위한 프로그램을 추가로 설치해주어야합니다. 
이때 추가로 설치해주어야하는 프로그램이 php-fpm입니다. 

$ which php-fpm # 이미 설치되어 있는지 확인 
$ sudo yum -y install php-fpm # 설치

3. 설정수정하기 

Nginx + PHP의 연동방식은 ①포트를 사용하는 방식, ②유닉스 소켓을 사용하는 방식이 있습니다. 

이 포스트에선 ①포트를 사용하는 방식으로 연동하려 합니다. 

 

1) php-fpm의 설정수정하기 

php-fpm의 설정파일에서 user와 group의 기본값(apache)을 nginx로 변경합니다. 

※ 제 경우 기존 설정을 주석처리하고 user와 group부분을 추가했습니다. 

$ sudo vi /etc/php-fpm.d/www.conf

위 커맨드로 설정파일을 열어서 아래의 화면과 같이 설정해주시면 됩니다. 

 

2) nginx의 설정추가

Nginx와 PHP를 연동하기위한 설정파일을 추가해 줍니다. 

원래의 Nginx의 설정파일인 "/etc/nginx/nginx.conf"에서 추가된 설정파일을 읽어와서 설정을 반영하므로 

기존의 설정을 건드릴 필요는 없습니다.

 

$ sudo vi /etc/nginx/default.d/nginx-php.conf

위 커맨드로 설정파일을 생성후 아래의 내용을 기재합니다.

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    # fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

 

4. php연동 확인 

1) 동작 확인용 PHP파일 작성

$ sudo vi /usr/share/nginx/html/index.php

2) Nginx와 php-fpm을 실행 

$ sudo systemctl restart nginx
$ sudo systemctl restart php-fpm
$ ps -ef | grep "nginx\|php-fpm" # 프로세스가 존재하면 제대로 실행된 것

 

3) 웹 브라우저를 통해 서버에 접속해서 PHP 연동확인 

${IP주소}/index.php 를 웹 브라우저의 주소창에 입력하신후 페이지를 이동하시면 작성한 PHP파일의 내용이 출력되는 것을 확인할 수 있습니다. 

 

 

 

※ 실습을 완료한 후엔 AWS콘솔에 접속해 보안그룹을 수정하여 80번 포트를 막아둡니다. 

서비스 운영을 하신다면 당연히 포트를 열어두셔야 겠지만 공부목적이시라면 제 생각엔 보안상 굳이 포트를 열어둘 필요가 없을 것 같습니다. 

반응형

'미들웨어 > 환경설정' 카테고리의 다른 글

【Nginx】Amazon Linux 2 AMI에서 Nginx설치하기  (0) 2021.10.29

댓글