Heim > Artikel > Betrieb und Instandhaltung > So beheben Sie den Fehler, wenn Nginx PHP-FPM aufruft
Nach der Installation von Nginx und PHP-5.5 und der Konfiguration von Nginx zum Aufrufen von PHP starten Sie PHP-FPM.
Verwenden Sie den folgenden Befehl
Kopieren Sie den Code. Der Code lautet wie folgt:
/usr/local/php/sbin/php-fpm
und Sie können ihn starten.
Erstellen Sie ein PHP-Erkennungsskript index.php im Nginx-Verzeichnis
Das Ergebnis ist, dass beim Öffnen von http://localhost/index.php
Die Tragödie ist, dass es nicht geöffnet werden kann. Überprüfen Sie die Protokolldatei und sehen Sie den Grund für den Fehler.
Kopieren Sie den Code. Der Code lautet wie folgt:
2013/07/01 22:34:26 [error] 3214#0: *64 fastcgi sent in stderr: „ Primäres Skript unbekannt“ beim Lesen des Antwortheaders vom Upstream, Client: 192.168.168.19, Server: localhost, Anfrage: „get /index.php http/1.1“, Upstream: „fastcgi://127.0.0.1:9000“, Host: „192.168.168.140“
Überprüfen Sie den Port. Da der 9000-Port von PHP-FPM geöffnet wurde, bedeutet dies, dass es kein Problem mit PHP-FPM gibt. Das Problem liegt bei Nginx. Möglicherweise stimmt etwas mit meiner Konfigurationsdatei nicht.
Suchen Sie den Teil, in dem Nginx die PHP-Konfiguration lädt. Sehen Sie sich auch online die Nginx-Konfigurationsdatei an.
In Zeile 69 befindet sich ein aufrufender Skriptpfad.
Kopieren Sie den Code. Der Code lautet wie folgt:
fastcgi_param script_filename /scripts$fastcgi_script_name;
Ich habe den Pfad wie folgt geändert.
Kopieren Sie den Code. Der Code lautet wie folgt:
fastcgi_param script_filename $document_root$fastcgi_script_name;
http://localhost/index.php
Die Versionsinformationen von PHP können angezeigt werden.
Sie können sich auch auf die Konfigurationsmethode unten beziehen
php-fpm muss nicht mehr auf andere Fastcgi-Launcher wie spawn-fcgi von lighttpd angewiesen sein.
php-fpm ist sehr bequem zu verwenden.
Der Start und Neustart kann über php/sbin/php-fpm erfolgen.
Bequemer ist, dass Sie PHP direkt ändern können. Die Verwendung von php-fpm zum Laden kann die Änderung und das Laden von php.ini abschließen, ohne den Prozess abzubrechen. Die Ergebnisse zeigen, dass die Verwendung von php-fpm die CPU-Recyclinggeschwindigkeit des von PHP gesteuerten Prozesses erheblich verbessern kann -fpm ist relativ langsam. Der Speicher wird sehr gleichmäßig zugewiesen. Die CPU des von spawn-cgi gesteuerten Prozesses sinkt sehr schnell. Und die Speicherzuweisung ist relativ ungleichmäßig. Es gibt viele Prozesse, die nicht zugewiesen zu sein scheinen, während dies bei anderen der Fall ist sehr beschäftigt.
Es kann an der ungleichmäßigen Verteilung der Aufgaben liegen. Dies führt auch zu einer Verringerung der Gesamtantwortgeschwindigkeit.
Und die angemessene Verteilung von PHP-FPM führt zur Erwähnung der Gesamtantwort und der durchschnittlichen Aufgaben.
Verwendung von PHP -fpm erfordert das Patchen des PHP-Quellcodes. Laden Sie dann php-fpm
wget herunter: 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
Im selben Verzeichnis wie php-5.2.9
gzip - cd php-5.2.8-fpm -0.5.10.diff.gz |. patch -d php-5.2.9 -p1
–enable-fpm aktiviert fpm Unterstützung im Fastcgi-Modus
–mit -fpm-conf php-fpm-Konfigurationsdatei (Standard ist prefix/etc/php-fpm.conf)
–mit-fpm-log php-fpm-Protokolldatei (Standard ist prefix/logs/php- fpm.log)
–with-fpm-pid php-fpms PID-Datei (Standard ist prefix/logs/php-fpm.pid)
./configure --prefix=/ebs/php
--with-config-file- path=/ebs /php/etc
--enable-fastcgi
--enable-fpm
--others
Hinweis: --enable-fastcgi muss vor --enable-fpm stehen, sonst kann fpm nicht kompiliert werden .
2. Ändern Sie nach dem Kompilieren von PHP die Konfigurationsdatei
vi /ebs/php/etc/php-fpm.conf
Sie müssen auf die folgenden Konfigurationen achten
Dies stellt die IP-Adresse und den Port dar, die vom Fastcgi-Prozess von PHP überwacht werden
bedeutet: Unter welchem Benutzer und welcher Benutzergruppe wird der Fastcgi-Prozess von PHP ausgeführt? Diese Zeile ist standardmäßig auskommentiert und muss aktiviert werden
Ob PHP-Fehler angezeigt werden sollen Nachrichten
Maximale Anzahl untergeordneter Prozesse
Run php-fpm:
php-fpm verwendet ein Programm zur Steuerung des Fastcgi-Prozesses. Diese Datei befindet sich in $prefix/sbin /php-fpm
/usr/ local/php/sbin/php-fpm
Dieses Programm hat die folgenden Parameter:
start startet den Fastcgi-Prozess von PHP
Stop beendet zwangsweise den FastCGI-Prozess von PHP
Quit beendet den FastCGI-Prozess von reibungslos php
restart startet den Fastcgi-Prozess von PHP neu.
reload lädt PHPs php.ini neu. fpm reload
Auf diese Weise bleibt die Protokolldatei in PHP erhalten. Während der Fastcgi-Prozess weiter läuft, wird php.ini neu geladen.
Code kopieren Der Code lautet wie folgt:
user www www;
worker_processes 10;
error_log logs/error.log Notice;
pid logs/nginx.pid;
#gibt den Wert für die maximale Dateideskriptorzahl an, die von diesem Prozess geöffnet werden kann.
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 51200;
}
http
{
include mime.types;
default_type application/octet-stream;
charset gb2312;
server_names_hash_bucket_size 128;
# sendfile on;
#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;
{
listen 80;
server_name 192.168.1.2;
index index.html index.htm index.php;
root /ebs/www;
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$ http: //$host/$1$2/ permanent;
}
location ~ .*.php?$
{
include fcgi.conf
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
log_format access '$ remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
access_log logs/access.log access;
}
}
新建配置文件
复制代码 代码如下:
/usr/local/nginx/conf/fcgi.conf
注:nginx自带了一个配置文Hier finden Sie /usr/local/nginx/conf/fastcgi_params文件缺少粗体字体的部分,会造成访问php文件时报404错误.
复制代码 代码如下:
fastcgi_param _interface cgi/1.1;
fastcgi_param server_software nginx;
fastcgi_param query_string $query_string;
fastcgi_param request_method $request_method;
fastcgi_param Content_Type $content_type;
fastcgi_param document_root $document_root;
fastcgi_param server_protocol $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;
# Nur PHP, erforderlich, wenn PHP mit --enable-force-cgi-redirect erstellt wurde
#fastcgi_param weitergeleitet_status 200;
四-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 install
2、计算密码的md5值
echo -n. „password“|md5sum
5f4dcc3b5aa765d61d8327deb882cf99
3、配置xcache
;注:zend_extension, 用来加载zend的扩展,是绝对路径, extension是相对路径,相对于extension_dir的相对路径,非zend扩展
如果你更改路径以后,一Geben Sie „Apachectl Stop“ und „Start“ ein /etc/php.ini
添加:
复制代码 代码如下:
[xcache-common]
zend_extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache.admin]
; Ändern Sie xcache.admin.user in Ihren bevorzugten Anmeldenamen
xcache.admin.user = "admin"
; Ändern Sie xcache.admin.pass in den MD5-Fingerabdruck Ihres Passworts
; Verwenden Sie md5 -s "your_secret_password", um den Fingerabdruck zu finden
xcache.admin.pass = "5f4dcc3b5aa765d61d8327deb882cf99"
[xcache]
; Ändern Sie xcache.size, um die Größe des Opcode-Cache zu optimieren. xcache.size = 24 m. xcache.shm_scheme = "mmap"
; Ändern Sie xcache.var_size, um die Größe des variablen Caches anzupassen. test = 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的内容
6、另外两种加速模块:
在我们的测试中,效果都要好于xcache,这3中加速不能同时存在两种,有冲突。
6.1 apc
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-configmake
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
make
make installvi 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_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress=" 1"
eaccelerator.compress_level="9"
五、使用nginx对应多台facgi服务器
思路:前端一台nginx,用于做为负载均衡和处理静态页面.利用nginx的upstream模块来将php请求分发到后段的php-fpm服务器上.
后端多台php-fpm的服务器, 只起php-fpm服务来处理php。
这样做减少了php-fpm上的nginx服务, 相当于少了一层。
Das obige ist der detaillierte Inhalt vonSo beheben Sie den Fehler, wenn Nginx PHP-FPM aufruft. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!