新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 程序开发 > 语言 > php

nginx运行php的终极方法,可避免许多不必要的坑

时间:2020-03-06 13:25:15  来源:  作者:

说明

php有许多开源项目比较好像,在自己的机器上用Docker搭建了很多。

每个docker都是跑了个Apache,每个docker里面都有apache。

这样好像有点浪费资源,而平时都是用Nginx,所以研究了用nginx运行php

中间竟然碰到许多坑,而回过头来看,其实都很简单。

nginx运行php的原理

nginx不能解析php,要和php-fpm配置使用。nginx负责将php的请求转给php-fpm解析处理,然后返回响应结果

nginx运行php会遇到哪些坑

错误的提示有很多,最基本有"File not found"、"403"、"404"、"nginx no input file specified"等等

总之能试出许多错误。**而归结到底,只有一个根本原因“权限”**

而最好的方法是,直接把nginx和php-fpm设置为root用户运行

测试环境

|对象|版本|

|--|--|

| 操作系统 | fedora27 |

| nginx | 1.12.1 |

| php-fpm | php7 |

配置方法

* 安装nginx

yum install nginx

* 安装php-fpm

yum install php-fpm

经过上面两步, php-fpm会自动将nginx配置好,只要将php放到/usr/share/nginx/html目录就可以运行。但是我不想放在这个目录。

* 设置php-fpm以root用户运行

1.打开文件 /usr/lib/systemd/system/php-fpm.service


2.在ExecStart 最后面加上参数-R标识可以用root身份运行(php-fpm默认不能用root运行)
(有可能改了php-fpm.server文件不能运行,请运行systemctl reload重新加载)


[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target

[Service]
Type=notify
ExecStart=/usr/sbin/php-fpm --nodaemonize -R
ExecReload=/bin/kill -USR2 $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target


3.打开文件/etc/php-fpm.d/www.conf

4.将修改user和group为root
user=root
group=root

* 设置nginx以root身份运行

1.打开/etc/nginx/nginx.conf

2.将user改为root

* 配置自己的php项目

将下面内容放到/etc/nginx/conf.d/目录下
server {
        listen 8080;
        server_name  localhost;

        root  /home/xxxxx;      #改成自己的地址
        index  /_h5ai/public/index.php;   #改成自己的php首页
        include /etc/nginx/default.d/*.conf;    #使用已经配置好的location

        location / {
        }
}

排错方法

如果在配置过程中,遇到了错误。用什么方法调试呢?

* nginx调试方法

nginx的任务是把php的路径调对。可以先把php-fpm注释掉,专门调nginx,当能从浏览器下载php文件,说明配置正确。

* php-fpm调试方法

用命令运行php-fpm会有清晰的输出

/usr/sbin/php-fpm --nodaemonize -R

总结

nginx运行php总的说来很简单,由于权限问题,会导致遇到许多的坑。

实际很多情况下,都是给内部用,直接用root就可以。当然这样方法在正式环境不安全。

 

nginx运行php的终极方法,可避免许多不必要的坑

 

 



Tags:nginx php   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
说明php有许多开源项目比较好像,在自己的机器上用docker搭建了很多。每个docker都是跑了个apache,每个docker里面都有apache。这样好像有点浪费资源,而平时都是用nginx,所以研究...【详细内容】
2020-03-06   nginx php  点击:(3)  评论:(0)  加入收藏
1.编辑php配置文件vim /usr/local/php-7.1.3/etc/php-fpm.d/www.conf[global]pid = /usr/local/php-7.1.3/var/run/php-fpm.piderror_log = /usr/local/php-7.1.3/var/log/p...【详细内容】
2019-10-24   nginx php  点击:(128)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条