php php-fpm安装 nginx配置php

centos 6.2 linux下安装php5.6.6源码

PHP在 5.3.3 之后已经把php-fpm并入到php的核心代码中了。 所以php-fpm不需要单独的下载安装。
要想php支持php-fpm,只需要在编译php源码的时候带上 --enable-fpm 就可以了

一:yum安装php的依赖库

yum install -y make cmake gcc gcc-c++ autoconf automake libpng-devel libjpeg-devel zlib libxml2-devel ncurses-devel bison libtool-ltdl-devel libiconv libmcrypt mhash mcrypt pcre-devel openssl-devel freetype-devel libcurl-devel

二:下载 php5.6 源码

wget http://cn2.php.net/distributions/php-5.6.6.tar.gz

tar -zxvf php-5.6.6.tar.gz
cd ./php-5.6.6/

三:php配置安装

# 配置php的编译参数
./configure --prefix=/usr/local/php --with-mysql --with-mysqli --with-pdo_mysql --with-iconv-dir --with-zlib --with-libxml-dir --enable-xml --with-curl --enable-fpm --enable-mbstring --with-gd --with-openssl --with-mhash --enable-sockets --with-xmlrpc --enable-zip --enable-soap --with-freetype-dir=/usr/lib64

# 开始编译安装
make
make install

然后就安装到了 /usr/local/php 目录下

四:配置php-fpm

php-fpm配置

首先启动php-fpm:

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

报错了
[19-Apr-2018 16:02:08] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)
[19-Apr-2018 16:02:08] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
[19-Apr-2018 16:02:08] ERROR: FPM initialization failed

错误信息说是找不到php-fpm.conf

到php的配置目录
cd /usr/local/php/etc
有一个php-fpm.conf.default的文件,cp复制
cp php-fpm.conf.default php-fpm.conf

编辑 php-fpm.conf
找到以下配置项, 配置如下

pid = run/php-fpm.pid

 

再次运行 
/usr/local/php/sbin/php-fpm
报错了:
[19-Apr-2018 16:07:17] ERROR: [pool www] cannot get uid for user 'nginx'
[19-Apr-2018 16:07:17] ERROR: FPM initialization failed

说nginx用户不存在,那么建立nginx用户

useradd nginx

再次启动

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

没有任何报错,说明运行成功了

验证是否成功

ps aux|grep php-fpm

出现了 php-fpm进程:
root 15448 0.0 0.2 210972 4856 ? Ss 16:10 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
www 15449 0.0 0.2 213056 4768 ? S 16:10 0:00 php-fpm: pool www
www 15450 0.0 0.2 213056 4768 ? S 16:10 0:00 php-fpm: pool www
root 15492 0.0 0.0 112648 964 pts/0 R+ 16:11 0:00 grep --color=auto php-fpm

五:加入开机启动

开机启动的配置文件是:/etc/rc.local
# vi /etc/rc.local

/usr/local/php/sbin/php-fpm  # 添加进来

六:php-fpm的一些命令

我们在新安装扩展后,是需要重新php-fpm的,已使扩展生效。
最简单粗暴的重新php-fpm的方式是:
先找到php-fpm的进程号,kill 掉,再用/usr/local/php/sbin/php-fpm 这样启动。
其实还有更多温和的方法,就是使用信号。
INT, TERM 立刻终止
QUIT 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块

示例:

php-fpm 关闭:
kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm 重启:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

七:nginx配置解析php

nginx的配置安装见前面文章:http://www.cnblogs.com/starlion/p/8875982.html

1、进入nginx目录
cd /usr/local/nginx

2、编辑配置文件
vi ./conf/nginx.conf

在 server 下找到

location / {
    root html;
    index index.html index.htm index.php; # 加上 index.php
}

去掉前面注释 #

复制代码
location ~ \.php$ {
    root /usr/local/nginx/html; # 绝对路径配置到html下
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; #验证时候解析php出错,/scripts需要换成$document_root, 下面有解释
include fastcgi_params;
}
复制代码

 

3、然后平滑重启nginx
./sbin/nginx -s reload
没有报错,说明重启成功

八:验证php是否配置成功

在 /usr/local/nginx/html 目录下编辑 vi index.php

<?php
echo phpinfo();
?>

 

在浏览器上输入 http://ip:80/index.php 然后出现了错误
File not found

查看nginx的日志,配置日志在 ./logs 目录下
首先查看access.log 日志,出现了如下错误信息
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: ***.107.***.138, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "1**.24.**.115"

在看 error.log 日志信息出现了下面信息
[error] 16403#0: *42 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: ***.107.***.138, server: localhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "1**.24.**.115"

根据上面的 FastCGI sent in stderr: "Primary script unknown"
这是在配置nginx解析php脚本时候出现了错误

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

修改成如下方式($document_root):

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

$document_root 代表当前请求在root指令中指定的值:

修改之后重启nginx
./sbin/nginx -s reload
重新刷新浏览器,出现如下图所示,说明配置成功了

 

转载自  https://www.cnblogs.com/starlion/p/8884465.html

<think>好的,我现在需要处理用户关于安装配置PHP-FPMNginx的查询。首先,用户希望得到教程或指南,所以应该分步骤说明安装配置过程,同时确保引用提供的三个参考资料中的信息。 首先,我需要回顾用户提供的三个引用内容。引用[1]提到了克隆一个GitHub项目,修改Nginx配置并启动服务。引用[2]讨论了php.ini和php-fpm.conf的配置文件。引用[3]涉及使用systemctl启动NginxPHP-FPM服务,以及配置文件的介绍。这些信息需要整合到回答中。 接下来,用户的问题是关于安装配置的教程,所以步骤应该包括安装配置、启动服务以及验证。需要检查每个步骤是否在引用中有支持,比如安装命令、配置文件的位置、启动服务的命令等。 可能需要注意不同操作系统的差异,比如Ubuntu和CentOS的包管理器不同,但用户提供的引用中没有明确提到系统类型,所以可能需要保持一般性,或者假设使用常见的系统如Ubuntu。例如,安装NginxPHP-FPM可能使用apt-get或yum,但引用中没有具体说明,可能需要用通用命令,或参考引用中的信息。 引用[1]提到克隆项目到本地,并进入目录修改配置,这部分可能需要详细说明,比如用户是否需要使用这个特定的GitHub项目,或者是否需要手动配置。需要判断用户是否需要从零开始配置还是使用现有项目。可能两种方法都要提到,但根据引用中的信息,可能需要建议用户克隆项目作为示例,但也要说明手动配置的步骤。 配置部分,Nginx配置文件需要指向PHP-FPM的socket或TCP端口。引用[2]提到php.ini和php-fpm.conf的配置,可能需要调整这些文件中的设置,比如listen = 127.0.0.1:9000或者使用Unix socket。引用[3]提到Nginx配置文件的位置,可能需要指导用户修改server块,添加处理PHP脚本的部分。 启动服务方面,引用[3]提到了使用systemctl启动nginxphp-fpm,所以需要包括这些命令。同时,可能需要提醒用户启用服务以便开机启动,比如systemctl enable。 验证部分,可能需要创建一个phpinfo文件并通过浏览器访问,确保Nginx正确处理PHP请求。此外,权限问题也是常见的,比如PHP-FPM的用户和组是否与Nginx一致,可能需要检查www-data用户或类似。 最后,生成相关问题需要考虑用户可能的后续疑问,比如性能优化、常见错误处理、多站点配置等,基于安装配置的步骤,提出相关的问题。 现在需要将上述思考整理成结构化的步骤,确保每个部分都有引用支持,并正确标注引用来源。同时,注意使用中文,行内公式正确,独立公式单独成段,但当前问题不涉及数学公式,所以可能不需要处理这部分。但需要遵守用户给出的系统级指令,比如使用正确的LaTeX格式,不过在这个问题中可能用不上,但需要确保其他格式正确,如代码块和引用标识。 总结步骤: 1. 安装NginxPHP-FPM:根据引用[2]和[3],使用包管理器安装,可能涉及apt或yum命令。 2. 配置PHP-FPM:编辑php.ini和php-fpm.conf(引用[2]),确保监听方式正确。 3. 配置Nginx:修改nginx.conf或sites-available中的server块,处理PHP请求(引用[1]和[3])。 4. 启动服务:使用systemctl启动并启用服务(引用[3])。 5. 验证配置:创建测试PHP文件,检查是否解析正确。 6. 权限和优化:调整用户/组,日志配置等(引用[2]可能涉及)。 需要确保每个步骤中的具体命令和文件路径正确,并正确标注引用来源。例如,启动服务的命令来自引用[3],配置文件的修改来自引用[1]和[2]。 可能需要注意用户是否需要详细代码示例,比如具体的Nginx配置块,PHP-FPM配置参数。例如,在Nginx的server块中添加location ~ \.php$部分,指定fastcgi_pass的参数,这需要根据PHP-FPM的监听方式(如127.0.0.1:9000或unix socket)。 此外,用户提供的引用中有GitHub项目,可能需要建议用户参考该项目,如引用[1]中的项目,以便获取示例配置,但也要说明手动配置的方法。 最后,生成相关问题要考虑用户可能的后续需求,比如如何配置多个站点、HTTPS设置、性能调优、日志管理等。</think>### 分步安装配置PHP-FPMNginx教程 以下是安装配置PHP-FPMNginx的核心步骤: --- #### **1. 安装NginxPHP-FPM** - **Ubuntu/Debian系统** ```bash sudo apt update sudo apt install nginx php-fpm php-cli ``` - **CentOS/RHEL系统** ```bash sudo yum install epel-release sudo yum install nginx php-fpm php-cli ``` 安装完成后,验证PHP-FPM版本: ```bash php-fpm -v ``` --- #### **2. 配置PHP-FPM** - **修改PHP配置文件** 编辑`php.ini`(路径通常为`/etc/php/<版本>/fpm/php.ini`)[^2]: ```ini cgi.fix_pathinfo=0 # 提升安全性 ``` - **调整PHP-FPM监听方式** 修改`php-fpm.conf`或池配置文件(如`www.conf`)[^2],确保监听地址与Nginx匹配: ```ini listen = /run/php/php-fpm.sock # 使用Unix Socket(推荐) ; 或 listen = 127.0.0.1:9000 # 使用TCP端口 ``` 设置用户和组与Nginx一致(例如`www-data`)。 --- #### **3. 配置Nginx** - **修改Nginx虚拟主机配置** 编辑站点配置文件(如`/etc/nginx/sites-available/default`),添加PHP支持[^1][^3]: ```nginx server { listen 80; server_name example.com; root /var/www/html; location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php-fpm.sock; # 与PHP-FPM监听方式一致 # 或 fastcgi_pass 127.0.0.1:9000; } } ``` - **检查配置语法并重载服务** ```bash sudo nginx -t sudo systemctl reload nginx ``` --- #### **4. 启动与验证服务** - **启动并启用服务** ```bash sudo systemctl start nginx php-fpm sudo systemctl enable nginx php-fpm ``` - **创建测试文件** 在网站根目录(如`/var/www/html`)创建`info.php`: ```php <?php phpinfo(); ?> ``` 访问`http://服务器IP/info.php`,若显示PHP信息页面则配置成功。 --- #### **5. 权限与日志管理** - **确保文件权限正确** Nginx用户(如`www-data`)需有网站目录的读取权限: ```bash sudo chown -R www-data:www-data /var/www/html ``` - **查看日志排查问题** - Nginx错误日志:`/var/log/nginx/error.log` - PHP-FPM日志:`/var/log/php-fpm.log` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值