nginx가 php-fpm을 호출할 때 오류를 해결하는 방법

WBOY
풀어 주다: 2023-05-14 10:25:05
앞으로
979명이 탐색했습니다.

nginx와 php-5.5를 설치하고 nginx에서 php를 호출하도록 구성한 후 php-fpm을 시작합니다.

다음 명령을 사용하세요

코드 복사 코드는 다음과 같습니다:

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

시작하시면 됩니다.

nginx 디렉토리에 index.php PHP 감지 스크립트를 생성하세요

결과적으로 http://localhost/index.php

를 열 때 열 수 없다는 비극이 발생합니다. 로그 파일을 확인하고 오류 원인을 확인하세요

코드 복사 코드는 다음과 같습니다:

2013/07/01 22:34:26 [error] 3214#0: *64 fastcgi sent in stderr: " 업스트림에서 응답 헤더를 읽는 동안 "주 스크립트 알 수 없음", 클라이언트: 192.168.168.19, 서버: localhost, 요청: "get /index.php http/1.1", 업스트림: "fastcgi://127.0.0.1:9000", 호스트: "192.168.168.140"

포트를 확인하세요. php-fpm의 9000 포트가 오픈된 것을 보면 php-fpm에는 문제가 없다는 뜻입니다. 문제는 nginx에 있습니다. 내 구성 파일에 문제가 있을 수 있습니다.

nginx가 PHP 구성을 로드하는 부분을 찾으세요. 또한 온라인에서 nginx 구성 파일을 참조하세요.

69행에 호출 스크립트 경로가 있습니다

코드 복사 코드는 다음과 같습니다.

fastcgi_param script_filename /scripts$fastcgi_script_name;

경로를 다음과 같이 변경했습니다.

코드 복사 코드는 다음과 같습니다.

fastcgi_param script_filename $document_root$fastcgi_script_name;

http://localhost/index.php

php의 버전 정보가 나타날 수 있습니다.
아래 구성 방법을 참조할 수도 있습니다.

php-fpm은 더 이상 lighttpd의 generate-fcgi와 같은 다른 fastcgi 실행 프로그램에 의존할 필요가 없습니다.
php-fpm은 php-fpm.ini 파일에 구성되어 있어 사용하기가 매우 편리합니다.
시작 및 재시작은 php/sbin/php-fpm에서 수행할 수 있습니다.
php를 직접 수정할 수 있다는 점이 더 편리합니다. php-fpm reload를 사용하면 프로세스를 종료하지 않고 php.ini의 수정 및 로딩을 완료할 수 있습니다. 결과는 php-fpm을 사용하면 PHP로 제어되는 프로세스의 CPU 재활용 속도가 크게 향상될 수 있음을 보여줍니다. -fpm이 상대적으로 느립니다. .메모리가 매우 균등하게 할당됩니다.
spawn-cgi로 제어되는 프로세스의 CPU가 매우 빠르게 저하되고 메모리 할당도 상대적으로 고르지 않습니다.
할당되지 않은 것처럼 보이는 프로세스가 많이 있습니다. 매우 혼잡합니다.
프로세스 때문일 수도 있습니다. 작업의 불균등한 분배로 인해 전체 응답 속도도 감소합니다
그리고 php-fpm의 합리적인 분배는 전체 응답 및 평균 작업에 대한 언급으로 이어집니다
php 사용 -fpm은 PHP 소스 코드를 패치해야 합니다. 그런 다음 php

1을 다시 컴파일하세요. php-fpm

wget http://cn.php.net/get/php-5.2.8.tar.gz/from/www.php를 다운로드하세요. net/mirror

wget http:/ /php-fpm.anight.org/downloads/head/php-5.2.8-fpm-0.5.10.diff.gz
php-5.2.9
gzip과 동일한 디렉토리에 - cd php-5.2.8-fpm -0.5.10.diff.gz | patch -d php-5.2.9 -p1
패치 적용 후 PHP 컴파일 시 다음 매개변수가 추가됩니다.
–enable-fpm은 fpm을 활성화합니다. fastcgi 모드 지원
– -fpm-conf php-fpm 구성 파일 포함(기본값은 prefix/etc/php-fpm.conf)
– with-fpm-log php-fpm 로그 파일(기본값은 prefix/logs/php- fpm.log)
–with-fpm-pid php-fpm의 pid 파일(기본값은 prefix/logs/php-fpm.pid)
./configure --prefix=/ebs/php
--with-config-file- path=/ebs /php/etc
--enable-fastcgi
--enable-fpm
--others
참고: --enable-fastcgi는 --enable-fpm 앞에 와야 합니다. 그렇지 않으면 fpm을 컴파일할 수 없습니다. .

2.php를 컴파일한 후 구성 파일을 수정합니다.

vi /ebs/php/etc/php-fpm.conf

다음 구성에 주의해야 합니다
127.0.0.1 :9000
PHP의 fastcgi 프로세스에서 모니터링하는 IP 주소와 포트를 나타냅니다.
nobody
nobody> ;
PHP의 fastcgi 프로세스는 어떤 사용자 및 사용자 그룹으로 실행됩니까? 이 줄은 기본적으로 주석 처리되어 있으며 활성화해야 합니다.
0
PHP 오류를 표시할지 여부 message
5
최대 하위 프로세스 수
Run php-fpm:
php-fpm은 fastcgi 프로세스를 제어하는 ​​프로그램을 사용합니다. 이 파일은 $prefix/sbin에 있습니다. /php-fpm
/usr/ local/php/sbin/php-fpm
이 프로그램에는 다음 매개변수가 있습니다:
start는 php의 fastcgi 프로세스를 시작합니다
stop은 php의 fastcgi 프로세스를 강제로 종료합니다
quit는 php의 fastcgi 프로세스를 원활하게 종료합니다. php
restart는 php
reload의 fastcgi 프로세스를 다시 시작합니다. php의 php.ini
logrotate는 로그 파일을 다시 활성화합니다.
즉, php.ini를 수정한 후
/usr/local/php/sbin/php-를 사용할 수 있습니다. fpm reload
이렇게 하면 php의 로그 파일이 유지됩니다. fastcgi 프로세스가 계속 실행되는 동안 php.ini가 다시 로드됩니다.

코드 복사 코드는 다음과 같습니다.

user www www;
worker_processes 10;
error_loglogs/error.log attention;
pidlogs/nginx.pid;
#은 이 프로세스에서 열 수 있는 최대 파일 설명자의 값을 지정합니다.
worker_rlimit_nofile 51200;
events
{# ;
   #tcp_nopush on;
   keepalive_timeout 60 ;
   tcp_nodelay on;
   gzip on;
   gzip_min_length 1k;
   gzip_buffers 4 8k;
   gzip_http_version 1.1;
   gzip_types text/plain application/x-javascript text/css text/html application/xml;
   {
  들어봐 80;
   server_name 192.168.1.2;
   index index.html index.htm index.php;
   root /ebs/www;
   if (-d $request_filename)
   {
   다시 쓰기 ^/(.*)([^/])$ http: //$host/$1$2/ 영구;
   }
   위치 ~ .*.php?$
   {
   include fcgi.conf

   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   }
   log_format 액세스 '$ 원격_주소 - $remote_user [$time_local] "$request" '
   '$status $body_bytes_sent "$http_referer" '
   '"$http_user_agent" $http_x_forwarded_for';
   access_log 로그/access.log 액세스;
   }
}


새로운 버전:

/usr/local/nginx/conf/fcgi.conf

注:nginx自带了一个配置文件,/usr/local/nginx/conf/fastcgi_ 매개변수, 该配置文件缺少粗体字体的part分,会造成访问php文件时报404错误。

复代码 代码如下:

fastcgi_param Gateway_interface cgi/1.1;

fastcgi_param server_soft ware nginx;

fastcgi_param query_string $query_string;
fastcgi_param request_method $request_method;

fastcgi_param content_type $content_type;

fastcgi_param content_length $content_length;

fastcgi_param script_filename $document_root$fastcgi_script_name;

fastcgi_param script_name $fastcgi_script_name;

fastcgi_param request_uri $request_uri;

fastcgi_param document_uri $document_uri;

fastcgi_param document_root $document_root;

fastcgi_param 서버_프로토콜 $server_protocol;

fastcgi_param remote_addr $remote_addr;

fastcgi_param remote_port $remote_port;
fastcgi_param server_addr $server_addr;
fastcgi_param server_port $server_port;
fastcgi_param server_name $server_name;
# php 전용, php가 --enable-force-cgi-redirect로 빌드된 경우 필수
에디토리얼 -1.2.2.tar.gz
cd xcache-1.2.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-xcache --enable-xcache-optimizer
make
make install
2、计算密码的md5值
echo -n "password"|md5sum
5f4dcc3b5aa765d61d8327deb882cf99
3、配置xcache
; 참고:zend_extension,사용来加载zend의 확장, 是绝对路径, 확장 기능은 是是상对路径, 上对于extension_dir적의상对路径, 비zend扩展
如果你更改路径以后, 一定要apachectl stop后再start, 而不要要.
vi /usr/local/php /etc/php.ini

添加:

复代码 代码如下:

[xcache-common]
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache.admin]
; xcache.admin.user를 원하는 로그인 이름으로 변경하세요
xcache.admin.user = "admin"
; xcache.admin.pass를 비밀번호의 md5 지문으로 변경하세요
; 지문을 찾으려면 md5 -s "your_secret_password"를 사용하세요
xcache.admin.pass = "5f4dcc3b5aa765d61d8327deb882cf99"
[xcache]
; xcache.size를 변경하여 opcode 캐시의 크기를 조정하세요
xcache.size = 24m
xcache.shm_scheme = "mmap"
xcache.count = 2
xcache.slots = 8k
xcache.ttl = 0
xcache.gc_interval = 0
; 변수 캐시의 크기를 조정하려면 xcache.var_size를 변경하세요
xcache.var_size = 8m
xcache.var_count = 1
xcache.var_slots = 8k
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache. 테스트 = off
xcache.readonly_protection = on
xcache.mmap_path = "/tmp/xcache"
xcache.coredump_directory = ""
xcache.cacher = on
xcache.stat = on
xcache.optimizer = off
[xcache.coverager ]
xcache.coverager = on
xcache.coveragedump_directory = ""

5、중고php模块
수정常load 지,
재phpinfo显는 다음과 같이 표시됩니다.
zend这快应该会加上xcache的内容
nginx가 php-fpm을 호출할 때 오류를 해결하는 방법

6、另外两种加速模块:
我们的测试中,效果都要好于xcache,这3中加速不能同时存在两种,有冲突。
6.1 apc

复system代码 代码如下:

wget http: //pecl.php.net/get/apc-3.0.19.tgz
cd apc-3.0.19
/usr/local/php/bin/phpize
./configure --enable-apc --enable-apc- mmap --with-apxs=/ebs/apache/bin/apxs --with-php-config=/ebs/php/bin/php-config
make
make install
6.2 eaccelerator
wget http://bart.eaccelerator .net/source/0.9.5.3/eaccelerator-0.9.5.3.zip
cd eaccelerator-0.9.5.3
/usr/local/php/bin/phpize
./configure --enable-eaccelerator=shared --with-php -config=/ebs/php/bin/php-config
make
make install
vi php.ini
zend_extension="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator. debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_기간="0"
eaccelerator.shm_only="0"
eaccelerator.compress=" 1"
eaccelerator.compress_level="9"

五、使用nginx对应多台facgi服务器
思路:前端一台nginx,용于做为负载均衡와处리静态页면。利사용 nginx의 업스트림은 php请求php-fpm을 공유하는 php-fpm은 더 많은 php-fpm을 사용하고 있으며, 只起php-fpm은 php-fpm을 사용하고 있습니다.当于少了一层。

위 내용은 nginx가 php-fpm을 호출할 때 오류를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!