개발 꿀팁/PHP

php-fpm 설치 및 작동

Jammie 2022. 9. 14. 16:59
반응형

php-fpm 설치
제 기계는 센토스입니다 6.2 이전부터 php 5.4.11이 설치되었고, php는 5.3.3 이후 php-fpm에 php 소스 코어를 기입하였다.그래서 더 이상 따로 다운받을 필요가 없다.저는 5.4.11이기 때문에 바로 사용할 수 있습니다.

나는 php가 이미 설치되었다.이전에 컴파일할 때 fpm 모드를 가져오지 않았기 때문에, 나는 소스를 찾아서 다시 컴파일해야 한다.

php가 php-fpm을 지원하려면 컴파일할 때 --enable-fpm만 가져오면 된다

그래서 나는 이전의 컴파일 파라미터를 찾아야 하고, 뒤에 --enable-fpm을 붙여서 다시 컴파일하면 된다.앞서 말씀드렸지만, 두 가지 방식으로 이전 컴파일 파라미터를 찾을 수 있습니다

자, 시작하겠습니다. 이전 컴파일 파라미터를 찾습니다

[root@localhost /]# cd /lamp/php-5.4.11 & vi config.nice
'./configure' \
'--prefix=/usr/local/php' \
'--with-config-file-path=/usr/local/php/etc/' \
'--with-apxs2=/usr/local/apache/bin/apxs' \
'--with-mysql=/usr/local/mysql/' \
'--with-libxml-dir=/usr/local/libxml2/' \
'--with-png-dir=/usr/local/libpng/' \
'--with-jpeg-dir=/usr/local/jpeg8/' \
'--with-freetype-dir=/usr/local/freetype/' \
'--with-gd=/usr/local/gd/' \
'--with-zlib-dir=/usr/local/zlib/' \
'--with-mcrypt=/usr/local/libmcrypt/' \
'--with-mysqli=/usr/local/mysql/bin/mysql_config' \
'--enable-soap' \
'--enable-mbstring=all' \
'--enable-sockets' \

--enable-fpm을 추가한 후 다시 컴파일합니다:

[root@localhost /]# cd /lamp/php-5.4.11
[root@localhost php-5.4.11]# './configure' \
    '--prefix=/usr/local/php' \
    '--with-config-file-path=/usr/local/php/etc/' \
    '--with-apxs2=/usr/local/apache/bin/apxs' \
    '--with-mysql=/usr/local/mysql/' \
    '--with-libxml-dir=/usr/local/libxml2/' \
    '--with-png-dir=/usr/local/libpng/' \
    '--with-jpeg-dir=/usr/local/jpeg8/' \
    '--with-freetype-dir=/usr/local/freetype/' \
    '--with-gd=/usr/local/gd/' \
    '--with-zlib-dir=/usr/local/zlib/' \
    '--with-mcrypt=/usr/local/libmcrypt/' \
    '--with-mysqli=/usr/local/mysql/bin/mysql_config' \
    '--enable-soap' \
    '--enable-mbstring=all' \
    '--enable-sockets' \
    '--enable-fpm'
[root@localhost php-5.4.11] make && make install

php-fpm 시작
설치가 완료되면 시도합니다.시작:

시작 명령은 다음과 같습니다

/usr/local/php/sbin/php-fpm

잘못된 정보입니다.

[26-Feb-2015 15:39:55] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)
[26-Feb-2015 15:39:55] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
[26-Feb-2015 15:39:55] ERROR: FPM initialization failed

php-fpm.conf를 찾을 수 없다는 오류 메시지

오, 알고보니 php-fpm.conf는 아직, 나는/usr/local/php/etc 디렉터리에 있는 php-fpm.conf.default도 php-fpm.conf로 복사하세요

cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf

이 프로필을 편집하십시오:

vim php-fpm.conf
pid = run/php-fpm.pid
user = www
group = www

다시 시작 시도:

/usr/local/php/sbin/php-fpm

다시 오류가 발생했습니다www 사용자가 존재하지 않습니다:

[26-Feb-2015 15:57:38] ERROR: [pool www] cannot get uid for user 'www'
[26-Feb-2015 15:57:38] ERROR: FPM initialization failed

자, 그럼 새로운 www 사용자 그룹을 만들겠습니다

groupadd www
useradd -g www www

다시 시작:

/usr/local/php/sbin/php-fpm

아무런 출력도 없이 성공했음을 나타냅니다!!!

php-fpm은 9000 포트를 차지한다, 다음 프로세스를 살펴봅니다:

[root@localhost php-5.4.11]# ps -ef|grep php-fpm
root      1377  1231  0 11:19 pts/1    00:00:00 grep php-fpm
root     29249     1  0 06:22 ?        00:00:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www      29250 29249  0 06:22 ?        00:00:00 php-fpm: pool www
www      29251 29249  0 06:22 ?        00:00:00 php-fpm: pool www
root     32132  6158  0 08:25 pts/2    00:00:00 vi php-fpm.conf
[root@localhost php-5.4.11]# netstat -tnl | grep 9000
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      
[root@localhost php-5.4.11]#

자, 설치와 작동 모두 OK입니다.

컴퓨터를 켜고 php-fpm을 작동시키다
아까 php-fpm은웹 서버와 php 독립형이전 계층 서버, 따라서 전원을 켜고 부팅해야 합니다.

전원을 켜고 시작하는 설정 파일은 다음과 같습니다:/etc/rc.local, 더하기/usr/local/php/sbin/php-fpm에 입력하시면 됩니다

[root@localhost init]# vi /etc/rc.local
      1 #!/bin/sh
      2 #
      3 # This script will be executed *after* all the other init scripts.
      4 # You can put your own initialization stuff in here if you don't
      5 # want to do the full Sys V style init stuff.
      6 
      7 touch /var/lock/subsys/local
      8 /usr/local/apache/bin/apachectl start
      9 /usr/local/bin/redis-server /etc/redis.conf
     10 /usr/local/php/sbin/php-fpm

php-fpm만 잘 설치해도 소용없으니 web서버에 맞춰서 사용해야지, 다음 절에서는 nginx의 설치와 nginx의 php-fpm 접속을 공부해서 php를 사용하겠다.

php-fpm 다시 시작
우리는 확장을 새로 설치한 후, 다시 php-fpm을 필요로 하여 이미 확장이 효력을 갖게 되었다.

가장 단순하고 거칠게 다시 php-fpm하는 방식은 다음과 같다.

php-fpm의 프로세스 번호를 찾고 kill을 떨어뜨린 후 /usr/local/php/sbin/php-fpm으로 부팅합니다.

신호를 사용하는 온화한 방법이 더 많다

INT, TERM 바로 종료
QUIT 스무딩 종료
USR1 로그 파일 다시 열기
USR2 모든 work를 부드럽게 다시 로드하기er프로세스하고 다시 불러오기배열 및 이진 모듈

예:

php-fpm 닫기:

kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm 다시 시작:

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
반응형