• 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 未正确填写。

  • 相关阅读:
    halcon机器视觉工程开发思路
    创建子窗口新线程-线程间操作无效:从不是创建控件的线程访问它
    c#多个按钮执行同一类事件-按钮按下和弹起
    winform子窗口与父窗口的交互-使用委托与事件
    winform子窗口调用父窗口的控件及方法-一般调用
    Lambda表达式的用法
    c#WinForm中TeeChart控件的注册和使用
    c#实现串口通信
    [Revit]开始:编写一个简单外部命令
    [Revit]Autodesk Revit 二次开发整理(资料、准备工作和环境搭建)
  • 原文地址:https://www.cnblogs.com/makejeffer/p/7400539.html
Copyright © 2020-2023  润新知