Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk memasang PHP dengan FastCGI

Bagaimana untuk memasang PHP dengan FastCGI

藏色散人
藏色散人asal
2022-01-21 11:41:212714semak imbas

Cara memasang PHP dengan FastCGI: 1. Muat turun pakej php dan php-fpm 2. Konfigurasikan persekitaran pemasangan; php/sbin /php-fpm mula" untuk memulakan proses FastCGI.

Bagaimana untuk memasang PHP dengan FastCGI

Persekitaran pengendalian artikel ini: sistem Windows 7, PHP versi 7.1, komputer DELL G3

Bagaimana untuk memasang PHP dengan FastCGI? Pemasangan, konfigurasi dan pengoptimuman Nginx dan PHP (FastCGI)

Apakah itu FastCGI

FastCGI ialah Antara muka berkelajuan tinggi berskala untuk komunikasi antara pelayan HTTP dan bahasa skrip dinamik. FastCGI juga disokong oleh banyak bahasa skrip, termasuk PHP.

FastCGI dibangunkan daripada CGI. Antara muka FastCGI menggunakan struktur C/S, yang boleh memisahkan pelayan HTTP dan pelayan parsing skrip, dan memulakan satu atau lebih daemon parsing skrip pada pelayan parsing skrip.

Apabila pelayan HTTP menemui kawasan bandar yang dinamik, ia dihantar terus ke proses FastCGI untuk dilaksanakan, dan kemudian mengembalikan hasilnya kepada penyemak imbas, yang meningkatkan prestasi keseluruhan sistem.


Prinsip operasi Nginx FastCGI

Nginx tidak menyokong panggilan terus atau menghurai program luaran Semua program luaran mesti dipanggil melalui antara muka FastCGI. Untuk memanggil program CGI, pembalut FastCGI juga diperlukan, yang boleh difahami sebagai program yang digunakan untuk memulakan program lain.

Pembungkus ini diikat pada soket tetap, seperti port atau soket fail. Apabila Nginx menghantar permintaan CGI ke soket, melalui antara muka FastCGI, pembungkus menerima permintaan dan menghasilkan utas baharu ini memanggil jurubahasa atau program luaran untuk memproses skrip dan membaca data pemulangan data melalui antara muka FastCGI kepada Nginx, dan akhirnya Nginx mengembalikannya kepada pelanggan.


spawn-fcgi dan PHP-FPM

Antara muka FastCGI memulakan satu atau lebih daemon pada pelayan parsing skrip untuk menghuraikan skrip secara dinamik, yang juga menjadi pengurus proses FastCGI, spawn-fcgi dan PHP-FPM ialah dua pengurus proses.

spawn-fcgi: Ia adalah sebahagian daripada pelayan HTTP lighttpd Ia kini merupakan projek bebas dan biasanya digunakan bersama lighttpd untuk menyokong PHP. Walau bagaimanapun, spawn-fcgi akan menyebabkan kebocoran memori dan juga secara automatik memulakan semula FastCGI apabila konkurensi tinggi.

PHP-FPM: Pengurus proses FastCGI pihak ketiga, yang dibangunkan sebagai tampung untuk PHP. Semasa proses pemasangan, ia juga perlu dikompilasi bersama kod sumber PHP, yang bermaksud PHP-FPM dikompilasi ke dalam kernel PHP, supaya prestasinya lebih baik. Pada masa yang sama, keupayaannya untuk mengendalikan konkurensi tinggi juga jauh lebih baik.

Oleh kerana kelebihan FastCGI adalah untuk memisahkan bahasa dinamik daripada pelayan HTTP, Nginx dan PHP/PHP-FPM sering digunakan pada pelayan yang berbeza untuk berkongsi tekanan pada bahagian hadapan Nginx dan membolehkan Nginx memfokus pada memproses permintaan statik , PHP/PHP-FPM menghuraikan permintaan dinamik PHP.


Pemasangan dan pengoptimuman PHP dan PHP-FPM

Muat turun pakej pemasangan

Muat turun pakej php: www.php.net, php-5.2.13 ialah digunakan di sini. tar.gz

Muat turun pakej php-fpm: php-fpm.org, php-5.2.13-fpm-0.5.13.diff.gz

Nota : Kebanyakan Sebaik-baiknya versi php dan php-fpm adalah konsisten, jika tidak, isu keserasian mungkin berlaku.

Konfigurasikan persekitaran pemasangan

Pakej pergantungan yang diperlukan termasuk:

gcc gcc-c libxml2 libxml2-devel autoconf libjpeg libjpeg-devel libpng libpng-devel devel freetype freetype-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel, dsb.

Bergantung pada versi sistem, pakej yang mungkin bergantung padanya juga berbeza.

Kompilasi dan pasang php dan php-fpm

Nyahzip pakej kod sumber php dan masukkan php-fpm sebagai tampalan ke dalam kod sumber php.

tar zxf php-5.2.13.tar.gzgzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1

Kompil dan pasang, dan pada masa yang sama dayakan sokongan untuk FastCGI dan aktifkan sokongan untuk fpm dalam mod FastCGI.

cd php-5.2.13./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpmmake && make install
cp php-ini-dist /usr/local/php/lib/php.ini

Konfigurasi dan pengoptimuman php-fpm

Fail konfigurasi utama php ialah php.ini; fpm.conf , terletak di bawah /usr/local/php/etc/, ialah fail dalam format xml Berikut ialah beberapa teg yang biasa digunakan:

Urus proses FastCGI
<value name="listen_address">127.0.0.1:9000</value>:表示配置FastCGI进程监听的IP地址和端口,默认为本地的9000;
<value name="display_errors">0</value>:表示是否显示php错误信息,默认为0表示不显示,设置为1表示显示错误信息;
<value name="user">nobody</value>:表示设置运行FastCGI进程的用户,需要和nginx配置文件中的用户一致;
<value name="group">nobody</value>:表示设置运行FastCGI进程的用户组,需要和nginx配置文件中的用户组一致;
<value name="max_children">5</value>:设置FastCGI的进程数,官方建议小于2G内存,可以只开启64个进程;4G以上可以开启200个进程;
<value name="request_terminate_timeout">0s</value>:设置FastCGI执行脚本的时间,默认0s,意味着无限执行下去;
<value name="rlimit_files">1024</value>:设置php-fpm打开文件描述符的限制,默认1024,这个值最好要和内核打开的文件数一致;
<value name="max_requests">500</value>:设置每一个进程最多处理多少个请求后会被关闭,默认500;
<value name="allowed_clients">127.0.0.1</value>:设置允许访问FastCGI进程解析器的IP地址,如果不设置IP地址,则无法接受nginx传来的php解析请求;

Mulakan FastCGI. proses Kaedahnya adalah seperti berikut:

Maksud parameter adalah seperti berikut:
/usr/local/php/sbin/php-fpm start

mula: mulakan proses fastcgi php;
berhenti: paksa berhenti proses fastcgi php;

berhenti : Tamatkan proses fastcgi php dengan lancar
mulakan semula: Mulakan semula proses fastcgi php
Muat semula proses fastcgi php supaya proses memuatkan fail konfigurasi; tanpa gangguan;
logrotate: Dayakan semula fail log;

查看FastCGI进程

FastCGI进程启动后,可以通过命令“ps”或者“netstat”查看到相关进程信息,默认监听9000端口;

netstat -antlp | grep 9000ps -ef | grep php-cgi

配置Nginx来支持PHP

Nginx本身不会对PHP进行解析,要想让Nginx解析PHP请求,需要将PHP页面的请求交给FastCGI进程监听的IP地址和端口。Nginx通过反向代理的功能实现对PHP的解析。下面对Nginx解析PHP进行配置实例。

配置实例

      server {
        server_name www.ixdba.net ixdba.net;

        location / {
            index index.html index.php;
            root /web/www/www.ixdba.net;
        }

        location ~ \.php$ {
            root                html;
            fastcgi_pass        127.0.0.1:9000;
            fastcgi_index       index.php;
            fastcgi_param       SCRIPT_FILENAME  html$fastcgi_script_name;
            include             fastcgi_params;
        }
      }

location指令,将以“.php”结尾的文件都交给“127.0.0.1:9000”来处理,这里的IP和端口就是FastCGI进程监听的IP和端口。

fastcgi_param指令,指定放置php动态程序的主目录,也就是$fastcgi_script_name前的路径,这里是/usr/local/nginx/html。

fastcgi_params文件是FastCGI进程的一个参数配置文件,安装Nginx后默认生成,这里将它包含进来。

启动nginx

/usr/local/nginx/sbin/nginx

测试Nginx对PHP的解析功能

在/usr/local/nginx/html,也就是上面的php动态程序主目录下,创建一个phpinfo.php文件,内容如下:

<?php phpinfo(); ?>

然后通过浏览器访问http://www.ixdba.net/index.html,将会显示Nginx欢迎页;
浏览器访问http://www.ixdba.net/phpinfo.php,会出现php安装及功能列表信息;


优化Nginx中FastCGI

添加一些优化指令可以让php环境高效稳定的运行,下面给出一些实例,添加到nginx配置文件的http层级:

为fastcgi缓存指定文件路径,目录结构等级、关键字区域存储时间和非活动删除时间;

fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=Test:10m inactive=5m;

连接到后端fastcgi的超时时间;

fastcgi_connect_timeout 300;

向fastcgi传送请求的超时时间,是已经完成两次握手后向fastcgi传送请求的超时时间;

fastcgi_send_timeout 300;

接收fastcgi应答的超时时间,是已经完成两次握手后接收fastcgi应答的超时时间;

fastcgi_read_timeout 300;

读取fastcgi应答第一部分需要缓冲区的大小;

fastcgi_buffer_size 64k;

本地需要多少和多大的缓冲区来缓冲fastcgi的应答请求;

fastcgi_buffers 4 64k;

默认值为fastcgi_buffers的两倍;

fastcgi_busy_buffers_size 128k;

写入缓存文件时使用多大的数据块,默认为fastcgi_buffers的两倍;

fastcgi_temp_file_write_size 128k;

开启fastcgi缓存并为其指定一个名称,可以有效降低cpu负载,防止502错误。

fastcgi_cache TEST;

fastcgi_cache_valid指定应答代码的缓存时间。
将200, 302的应答时间缓存1小时;

fastcgi_cache_valid 200 302 1h;

将301应答缓存一天;

fastcgi_cache_valid 301 1d;

其余应答缓存1分钟;

fastcgi_cache_valid any 1m;

   

Atas ialah kandungan terperinci Bagaimana untuk memasang PHP dengan FastCGI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn