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`
'개발 꿀팁 > PHP' 카테고리의 다른 글
아직 등록된 글이 없습니다.새 글 쓰기 (0) | 2022.09.15 |
---|---|
php가 클라이언트가 pc인지 핸드폰인지 판단하는 방법 (0) | 2022.09.15 |
PHP 시간 초과 처리 요약 (1) | 2022.09.14 |
빠른 정렬을 위한 PHP (0) | 2022.09.14 |
php 인용 & 변수 인용, 함수 인용, 객체 인용 (0) | 2022.09.14 |