先交代一下背景:PHP-FPM,全称是PHP FastCGI进程管理器,专门为PHP服务而生。它最早其实是PHP源代码的一个补丁包,目的是把FastCGI进程管理功能直接整合进PHP内部。也就是说,你需要把它patch到PHP源码里,再编译安装,才能用上。
不过到了新版本,事情简单多了——PHP官方已经把php-fpm直接集成进了核心包,不再是第三方组件。推荐大家直接用这个方式。PHP-FPM在进程管理上确实更胜一筹,能有效控制内存和进程,连重载PHP配置都能做到平滑过渡,远比spawn-fcgi来得顺手。这也是它被官方收录的原因。编译时只要带上 `--enable-fpm` 参数,就能开启PHP-FPM,其他参数照常配置即可。
再说说nginx和PHP的关系。nginx本身只负责处理静态资源,它就是个web
服务器。一旦收到PHP请求,它会把请求转发给PHP解释器,等解释器处理完,再把结果返回给客户端。具体流程是:nginx把请求发给FastCGI进程管理进程,管理进程再挑选一个CGI子进程来处理,最终结果原路返回。下面就来详细说说,怎么让nginx支持PHP。
1.2 安装
1.2.1 安装前准备
先把依赖环境搞定。执行以下命令,安装编译PHP所需的各类库和工具:
```bash
yum -y install gcc automake autoconf libtool make
yum -y install gcc gcc-c++ glibc
yum -y install libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel sqlite-devel sqlite
```
接着下载oniguruma库(如果从GitHub获取速度较慢,可以自行寻找其他源):
```bash
cd /home
wget https://github.com/kkos/oniguruma/archive/v6.9.4.tar.gz -O oniguruma6.9.4.tar.gz
tar -xvf oniguruma-6.9.4.tar.gz
cd oniguruma-6.9.4/
./autogen.sh
./configure --prefix=/usr --libdir=/lib64
make
make install
```
1.2.2 安装php-fpm
依赖就绪,接下来正式安装php-fpm:
```bash
cd /home
wget https://mirrors.sohu.com/php/php-7.4.16.tar.gz
tar -zxvf php-7.4.16.tar.gz
cd php-7.4.16
./configure --prefix=/usr/local/php --enable-fpm --with-mcrypt --enable-mbstring --disable-pdo --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-mysqli --with-gd --with-jpeg-dir
make
make install
```
安装完成后,还需要生成php-fpm的配置文件:
```bash
cd /usr/local/php
cp etc/php-fpm.conf.default etc/php-fpm.conf
cd /usr/local/php/etc/php-fpm.d
cp www.conf.default www.conf
```
接下来配置nginx,让nginx能够把PHP动态请求转发给PHP解释器。在nginx的server段中,添加如下配置,否则会出现“No input file specified”的错误:
```bash
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
```
最后做个测试。在 `/usr/local/nginx/html` 目录下创建 `index.php` 文件,写入以下内容:
```php
```
启动php-fpm:
```bash
/usr/local/php/sbin/php-fpm
```
然后打开浏览器访问,看看配置是否生效。如果一切正常,你应该能看到PHP的配置信息页面。
本文转载于:https://blog.csdn.net/mossil/article/details/115617396 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。