Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk memasang PHP dengan FastCGI
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.
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)
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.
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.
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.
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.
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.
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
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解析请求;
/usr/local/php/sbin/php-fpm startmula: 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进程启动后,可以通过命令“ps”或者“netstat”查看到相关进程信息,默认监听9000端口;
netstat -antlp | grep 9000ps -ef | grep php-cgi
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后默认生成,这里将它包含进来。
/usr/local/nginx/sbin/nginx
在/usr/local/nginx/html,也就是上面的php动态程序主目录下,创建一个phpinfo.php文件,内容如下:
<?php phpinfo(); ?>
然后通过浏览器访问http://www.ixdba.net/index.html,将会显示Nginx欢迎页;
浏览器访问http://www.ixdba.net/phpinfo.php,会出现php安装及功能列表信息;
添加一些优化指令可以让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!