리눅스서버

웹 페이지의 동적처리를 위한 php-fpm 설치와 연동

앞써 설치한 nginx 웹서버만으로는 동적인 페이지 구현이 어렵습니다. 여기서 동적인 페이지라 함은 접속할때마다 변하는 페이지를 의미합니다. 그래서 로그인과 게시글 등록이란 것 할 수 있지요. 로그인이나 게시글 등록을 할때마다 페이지가 변하는... 그런 페이지가 바로 동적인 페이지입니다. 어째거나 웹서버의 역할은 정적인 html 웹문서 파일을 웹브라우저에 전송해주는 역활만 하거든요.


로그인과 게시글 등록을 하기위해서는 동적인 페이지 구현이 필요합니다. 또 동적인 페이지를 구현하기위해서는 웹서버 이외의 외부 프로그램에서 처리하는 방법을 사용합니다. 웹서버에서 요청을 받아 그 요청을 외부 프로그램에 넘겨주면, 외부 프로그램은 프로그램 파일을 읽어 html로 반환하는 단계를 거치게 됩니다. 이것을 CGI 라고 합니다. 우리가 설치해볼 php-fpm도 CGI에 해당됩니다.


php 프로그램, php 언어는 아는데.. php-fpm는 뭔가요? PHP FastCGI Process Manager의 약자입니다. FastCGI는 위에서 말한 CGI보다좀더 빠른 버전이라고 할 수 있습니다. CGI는 요청할때마다 새로운 프로세스 생성하여 구동하게 되는 데.. 이렇게 되면 부하가 심할뿐만 느려지게 되어있습니다. 하지만 FastCGI은 요청할때마다 새로운 프로세스 생성하는 것이 아니라 이미 생성한 프로세스를 재활용하는 방법을 사용합니다. 때문에 처리가 빠르다는 장점이 있습니다.


apache의 경우에는 apache용 php 모듈이 있어서 자체적으로 처리하게 되어있습니다. 하지만 nginx에는 그런 모듈따윈 없습니다. 때문에 php-fpm를 따로 설치해서 nginx와 연동시켜야 합니다.



1. 설치

yum 통해 php-fpm를 설치하면 됩니다. php-fpm는 워낙 유명해서 기본 저장소에 있을 겁니다. 바로 설치해도 되지만 remi 저장소를 설치한다면 최신버전의 php를 설치할 수 있습니다. 우리 최신버전의 php를 설치하도록 합시다. 


remi 저장소 설치

remi 저장소 설치 문서 ( https://conory.com/blog/42596 )를 참조하여 remi 저장소를 설치합니다. 그리고 /etc/yum.repos.d/remi.repo 저장소파일에서 php 버전대의 전용저장소를 활성화시킬 수 있습니다. 


여기서 우린 제일 최신버전대인 5.6버전 저장소를 활성화 시켜봅시다. /etc/yum.repos.d/remi.repo 파일에서 아래와 같은 부분을 찾아 빨간색 enabled 설정 값을 1로 변경하면 됩니다.


# vi /etc/yum.repos.d/remi.repo


[remi-php56]

name=Les RPM de remi de PHP 5.6 pour Enterprise Linux 7 - $basearch

#baseurl=http://rpms.famillecollet.com/enterprise/7/php56/$basearch/

mirrorlist=http://rpms.famillecollet.com/enterprise/7/php56/mirror

# WARNING: If you enable this repository, you must also enable "remi"

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi


php-fpm 설치


# yum install php-fpm php-common


* php 모듈 설치

php 관련 모듈도 같이 설치해줍니다. 추후 php 프로그램에서 요구하면 그때 설치하면 되지만, 설치한 김에 한꺼번에 설치해주는 것이 좋습니다.


# yum install php-pdo php-process php-mysqlnd php-dba php-devel php-gd php-imap php-mbstring php-mcrypt php-pear php-pgsql php-soap

 

php-fpm 서비스 활성화

재부팅시 php가 자동실행될 수 있도록 해당 서비스를 활성화해줍니다.


systemctl enable php-fpm



2. 설정

php 설정파일은 /etc/php.ini 입니다. 여기서 php 동작방법등을 설정할 수 있답니다. 


/etc/php.d 디렉토리에는 추가적인 php설정 파일이 있습니다. 참고로 php 모듈 패키지 설치하면 /etc/php.d 디렉토리에 그 셋팅파일은 생성되고 있답니다.



3. 서비스 시작

서비스를 시작해줍니다.


systemctl start php-fpm



4. Nginx와 연동

php 프로그램을 웹에서 사용하기위해서는 웹서버 nginx와 연동을 시켜야합니다.


server {
	listen       80;
	server_name  127.0.0.1;
	
.......


	# PHP-FPM 연동
	location ~ \.php$ {
		fastcgi_pass    127.0.0.1:9000;
		fastcgi_index   index.php;
		fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_param   PHP_ADMIN_VALUE "open_basedir=$document_root:/tmp/";
		include         fastcgi_params;
		try_files       $uri =404;
	}

}

간단하게 nginx 설정 파일에 php-fpm 연동 코드를 넣으면 됩니다.



?

서버에 요청 중입니다. 잠시만 기다려 주십시오...