PHP-fpm
Apache를 쓸 때는 php모듈이 그냥 쓰면 되지만 Nginx에는 PHP-fpm(PHP-FastCGI Process Manager)라는 서버가 받은 요청에 따라 클라이언트에게 응답(CGI: Common Gateway Interface)을 주는 과정을 처리하는 프로그램이 필요하다.
CGI, fastCGI
CGI는 데이터 처리 요청이 있을 때마다 매번 프로세서를 실행해야만 한다. fastCGI라는건 이미 생성된 프로세스와 데이터를 주고 받음으로서, 매번 프로세스를 만들지 않으며 CGI보다 더 효율적이고 빠르게 동작한다.
php-fpm 설치 및 ngnix와 연동
apt-get install -y php-fpm
위의 명령으로 container에 php-fpm을 설치하자.
nginx의 설정이 있는 매번 수정하는 /etc/nginx/sites-enabled/default를 수정한다. 알고보니 sites-enabled에는 symlink고 설정파일들은 sites-available에 있다.
before after이렇게 php블럭의 주석을 해제해주고 after의 강조한 php 버전이 우리가 설치한 부분과 맞는 지 확인해 줘야한다.
php -v다행히 버전은 잘 맞다. default 파일의 주석 중에 PHP를 쓰려면 index.php를 추가하라는 지시가 있다.
붉은색의 밑줄 부분아래의 코드처럼 index.php를 추가한다. 맨 앞에 추가하면 에러가 난다고 한다. index 자체가 지시어다. index 뒤의 파일들을 index로 사용하겠다는 뜻!
index index.html index.htm index.nginx-debian.html index.php;
index를 찾아 본 김에 nginx 설정파일에서 쓰이는 지시어를 좀 더 찾아봤다. nginx는 지금까지 본 것처럼 블럭으로 계층적 구조로 작동한다. 서버에 요청이 있을 시 해당 요청을 처리할 블록을 결정한다. 다음 두 블록이 main이다.
server block
server 블록은 가상 서버의 부분 집합들이다. 도메인 이름, IP 주소, 포트를 기반으로 요청을 처리 할 블록을 결정할 수 있는 여러 서버 블록이 있을 수 있다.
location block
location 블록은 서버 블록에 위치한다. 서로 다른 URI들과 자원에 따라 요청을 처리할 방법을 정의한다.
잠깐 삼천포로 빠졌는데 지시어 이야기는 여기서 끊고 다시 본제로 돌아오자. 이제 nginx를 service로 실행한 것처럼 php7.3-fpm을 service로 실행한다.
service php7.3-fpm start
별다른 출려이 뜨지 않는다. 상태를 확인해보자.
service php7.3-fpm status
정상작동하고 있다.