[NGINX]
-CGI
CGI는 Common Gateway Interface의 약자로 웹서버와 외부 프로그램을 연결해주는 표준화된 프로토콜이다. 웹이 처음 등장했을 때는 HTML과 이미지를 전달해주는 웹서버 밖에 없었다. 하지만 웹에 대한 수요가 증가함에 따라서 정적인 HTML만을 가지고 정보를 제공하는 것에 한계가 생겼고, 이를 극복하기 위해서 등장한 기술이 CGI다. 웹서버로 요청이 들어왔을 때 그것이 웹서버가 처리 할 수 없는 정보일 때 그 정보를 처리 할 수 있는 외부 프로그램을 호출해서 외부 프로그램이 처리한 결과를 웹서버가 받아서 브라우저로 전송하는 것이다. 외부 프로그램은 C, C++, 펄, PHP, Python등 어떤 언어로든 작성될 수 있는데, 이것이 가능한 것은 웹서버와 외부 프로그램 사이에 통용되는 공통의 규칙이 정의되어 있기 때문이다.
-FastCGI
CGI 는 하나의 요청(Request)에 하나의 프로세스를 생성한다. 이것은 프로세스를 생성하고 삭제하는 과정에서 많은 부하가 발생한다. 당연히 느리다. 이를 개선하기 위해서 등장한 것이 FastCGI이다. FastCGI는 요청이 있을 때마다 프로세스가 만들어지는 것이 아니라 만들어진 프로세스가 계속해서 새로운 요청들을 처리한다. 덕분에 프로세스를 생성하고 제거하는데 들어가는 부하가 줄어든다.
-PHP-FPM
PHP-FPM는 PHP FastCGI Process Manager의 약자로 PHP를 FastCGI 모드로 동작하도록 해준다. 즉, 하나의 프로세서로 요청들을 처리한다.
[설정파일] "/etc/nginx/sites-available/default "
...
location ~ \.php$ {..} -> location은 .php 확장자로 끝나는 요청을 처리하기 위한 부분이다.
fastcgi_param SCRIPT_FILENAME -> FASTCGI가 실행될 때, PHP어플리케이션에 전달할 환경변수를 세팅. 중요한 환경변수
PHP가 어떤 파일을 처리해야 하는가를 알려주는 환경변수.
$document_root -> 전역적으로 지정한 root 지시어가 위치하게 됨
사용자가 요청한 파일이 위치하는 디렉토리
$fastcgi_script_name -> 사용자가 요청한 php파일의 이름이 들어감
사용자가 요청한 파일
--> SCRIPT_FILENAME
(php에 처리해야하는 php파일의 위치를 전달함)
[PHP-FPM 설정파일] "/etc/php5/fpm/pool.d/www.conf"
1. listen = /var/run/php5-fpm.sock
2. listen = 127.0.0.1:9000
1-> 유닉스 소켓을 PHP의 접선장소로 사용, 같은 컴퓨터에 FPM과 PHP가 설치 된 경우에 사용. 더 빠름
2.-> TCP 커넥션을 PHP의 접선장소로 사용, PHP-FPM을 NGINX와 다른 서버에 설치하여 독립적인 어플서버를 구축하고 싶다면 사용.
-TCP Connection
"http://opentutorials.org/module/384/4332 3번영상"
*웹서버와 PHP를 독립적인 서버에 구축하게 되면 한대의 컴퓨터에 구축 할 때보다 많은 부하를 견딜 수 있다.
'아카이브 > Linux' 카테고리의 다른 글
리눅스 터미널에서 usb mount(usb 사용) (0) | 2015.01.16 |
---|---|
파일/폴더 복사 (0) | 2015.01.16 |
my.cnf (0) | 2015.01.15 |
[ssh] 원격접속 (0) | 2015.01.11 |
[LEMP]설치방법 (0) | 2015.01.10 |