본문 바로가기

서버/AWS EC2

AWS EC2에 PHP-fpm 설치

PHP ? 

 

 - PHP(PHP: Hypertext Preprocessor PHP)는 프로그래밍 언어의 일종이다.

 - PHP는 인터프리터 언어이며 스크립트 언어이다.

 - 인터프리터는 고급 언어로 작성된 원시코드 명령어들을 한번에 한 줄씩 읽어들여서 실행하는 프로그램이다. 

 - 동적 웹 페이지를 만들기 위해 설계되었으며 이를 구현하기 위해 PHP로 작성된 코드를 HTML 소스 문서 안에 넣으면 PHP 처리 기능이 있는 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성한다.

 - 근래에는 PHP 코드와 HTML을 별도 파일로 분리하여 작성하는 경우가 일반적이며, PHP 또한 웹서버가 아닌 php-fpm(PHP FastCGI Process Manager)을 통해 실행하는 경우가 늘어나고 있다.

 

 

PHP-fpm ?

 - PHP FastCGI Process Manager FastCGI

 - 빠른 버전의 CGI

 

 

CGI ?

 - COMMON GATEWAY INTERFACE

 - 동적인 웹사이트를 구현하기 위해 만든 인터페이스, 표준

 - 우리가 앞서 설치한 Nginx는 웹서버로써 정적인 html파일 등 만 처리해준다. 동적인 웹 사이트를 구동하기 위해서는 정적인 데이터를 처리하는 웹서버가 다른 프로그램을 호출하여 그 처리 결과를 클라이언트에 반환한다.

이 때 웹 서버와 외부 프로그램의 연계 표준을 정한 것이 CGI이고 이 표준을 구현한 대표적인 기술이 PHP이다.

 - CGI는 요청이 있을 때 마다 새로운 프로세스를 생성하여 구동한다. 이는 부하를 유발하고 느리게한다. 이런 단점을 보완하기 위해 FastCGI를 만들었으며 이는 생성한 프로세스를 재활용하는 방식을 사용한다.

 

 

 

동적인 웹페이지를 구현하는 방법으로는 WAS를 사용하는 방식과 CGI를 사용하는 방식을 들 수 있다.

 

WAS는 대표적으로 톰캣을 들 수있다.

 

--> PHP는 톰캣을 필요로 하지 않는다.

 

 

 

 

 

 

1. PHP-fpm 설치

$ sudo apt-get update
$ sudo apt-get install php7.2
$ sudo apt-get install php7.2-fpm

apt-get을 update하지 않으면 'unable to locate package php-fpm' 에러를 보게 될 것이다 ..

 

 

 

2. 설정파일 수정

nginx를 설치할 때 기억해둔 /etc/nginx/sites-available/default 파일을 수정한다.

$ vim /etc/nginx/sites-available/default

아래처럼 php블록을 찾아 주석을 해제한다.

location ~ \.php$ {
  include snippets/fastcgi-php.conf;
#
#	# With php-fpm (or other unix sockets):
  fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
#	# With php-cgi (or other tcp sockets):
#	fastcgi_pass 127.0.0.1:9000;
}

 

 

 

3. phpinfo 코드 작성

 /var/www/html 위치로 이동하고 phpinfo 코드를 작성한다.

<?php
phpinfo();
?>

phpinfo.php이름으로 저장.

 

 

 

 

4. 테스트

 

웹 브라우저에서 http://localhost/phpinfo.php로 접속해서 phpinfo가 뜨는지 확인하자.