Linux 配置 nginx + php
Posted prop_jeff
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 配置 nginx + php相关的知识,希望对你有一定的参考价值。
为什么!!!我配过的服务器已经有5、6个了吧,为什么每一次配置都能要了我的老命??这次写清楚过程,以后再要被配服务器坑,我特么要砍人了。
提示:测试网站能否访问的时候,最好关掉浏览器的缓存功能或者勤清浏览器的缓存,以避免被缓存坑!
1. nginx
mac上通过brew安装nginx,万事开头容易,配置难。
找到nginx.conf,保持其所在文件夹常年打开不要关闭,因为后面还会经常来这个文件夹找东西。
nginx.conf 内容参照 https://github.com/daylerees/laravel-website-configs/blob/master/nginx.conf
注意上面只给出了server块里的内容,不过server块以外的内容基本不用动。
还请注意 ‘location /’ 块内的内容,这里不推荐上文的配置,还请改成这个:
try_files $uri /index.php?$query_string;
删去了 “$uri/”。如果不删去这一条,并且没有开启autoindex的话,直接访问一个目录会导致HTTP 403,这在前期配置的时候会造成不必要的困扰。
除此之外最好启用error.log,相应配置应该在文件的开头。
同时也请常年打开nginx的 error.log 所在文件夹,判断问题的时候也会经常用到。
2. php-fpm
这玩意相当于运行php的服务器,总之如果你的站点想运行php文件的话,php-fpm 和 nginx 都得保持在后台运行。
安装不多说,根据平台查找自己合适的方案。
也请找到这玩意的配置文件并常年打开。
修改user及group。
这玩意本身没什么坑的配置之处,主要还是得看nginx调用这玩意的那部分配置是否正确。
回到nginx.conf。
找到 location ~* php 啥啥啥的块。
这里有几个配置非常重要
1 fastcgi_pass unix:/var/run/php5-fpm.sock; 2 fastcgi_index index.php; 3 fastcgi_split_path_info ^(.+\.php)(.*)$; 4 include /etc/nginx/fastcgi_params; 5 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
第1行,告诉nginx去哪里找php-fpm服务。这个得看你的php-fpm 是什么样的,有的通过如上所示的sock进行通信,有的通过127.0.0.1:9000(一般情况下)进行通信,请搞清楚你的php-fpm用的那种方案并修改这一行。
第4行,这里需要include 一个叫 fastcgi_params 的文件,应该和 nginx.conf 在一个文件夹下,路径填正确就行。
配置完后重启各个服务,再试试应该可以正常使用了。
下面贴出访问网站时可能遇到的问题及解决思路
1. 500 Internal Server Error
一般是php部分执行的时候出错了,翻看php-fpm 的error log以定位错误。
2. 403 Forbidden
可能是访问了一个文件夹,但是又没有开启autoindex(自动列出文件夹下的所有内容),于是被nginx禁止。
有可能在访问网站根目录时出现这个情况,请检查 ‘location /’ 块内的tryfiles又没有删去 "$uri/"。
3. 502 Gateway Error
nginx找不到php-fpm 服务,可能是php-fpm没开或者 ‘location php’ 块内的 fastcgi_pass 未正确填写。
以上是关于Linux 配置 nginx + php的主要内容,如果未能解决你的问题,请参考以下文章
Linux配置Nginx,MySql,php-fpm开机启动的方法
Linux (centos )下Nginx+PHP+MySQL配置——自己的lnmp配置
linux+nginx+php问题。我在linux上装了nginx+php,可是能打开网页却打不开.php文件,这是哪里问题呢??