Mac Nginx 关联 php 详细配置以及常见错误

简介: Mac Nginx 关联 php 详细配置以及常见错误

一、安装 Nginx
二、安装 PHP
  • Mac 电脑一般自带 PHP,通过命令行查看本机 PHP 版本,如果觉得版本太低,可以自行百度安装一下,很简单的。
$ php -v
三、配置文件
  • 配置文件一般开始是没有的,是我们找到官方给与的默认文件以它为基础拷贝新建一个出来的。
  • 创建 PHP 配置文件 php.ini

我们需要找到下面路径,可以文件夹打开或命令行打开,找到文件夹内的 php.ini.default 文件,通过手动拷贝或者命令行拷贝的方式去掉后面的 default 得到新文件 php.ini

$ cd /etc
$ cp php.ini.default php.ini

可以配置一下 php.ini 里面时区,其他的可以不用动,等有需要在去调整。


  • 创建 PHP 服务配置文件 php-fpm.conf
$ cd /etc
$ cp php-fpm.conf.default php-fpm.conf

配置 php-fpm.conf 文件

$ vim php-fpm.conf

找到这行代码打开注释,这个文件是用于保存 php 服务进程号码的,打开注释之后记得保存,保存的命令就不写了。

;pid = run/php-fpm.pid
改成
pid = run/php-fpm.pid
  • 创建 PHP 辅助配置文件 www.conf

操作跟上面两个文件一样,只是目录不同,进入到下面文件夹

$ cd /etc/php-fpm.d
$ cp www.conf.default www.conf
  • 配置并启动 php-fpm

php-fpm 会依赖于 php-fpm.conf 文件的,如果没有这个文件会报错的,上面我们已经建好了。

打开命令行执行下面命令

$ php-fpm

如果报错如下,那是因为 php-fpm.log 文件找不到:

[06-Nov-2020 11:54:54] ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2)
[06-Nov-2020 11:54:54] ERROR: failed to post process the configuration
[06-Nov-2020 11:54:54] ERROR: FPM initialization failed

而且我们通过命令行打开目录的时候,也会发现这个目录根本不存在

$ cd /usr/var/log

甚至连 var 目录都没有,那既然没有,加上为了避免权限问题,我们干脆将这个路径配置到 /usr/local/var/log 目录中

打开 php-fpm.conf 文件

$ vim php-fpm.conf

找到 error_log 跟上面一样打开注释,然后修改一下存放路径,然后保存。

;error_log = log/php-fpm.log
改成
error_log = /usr/local/var/log/php-fpm.log

再次执行

$ php-fpm

如果报错如下,是因为文件权限问题,使用 $ sudo php-fpm 执行命令

[06-Nov-2020 14:54:25] NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root
[06-Nov-2020 14:54:25] NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root

再次执行

$ sudo php-fpm

如果报错如下,是因为没有找到 php-fpm.pid 文件,一般报这个错误是因为文件权限问题

[06-Nov-2020 14:56:56] ERROR: Unable to create the PID file (/usr/var/run/php-fpm.pid).: No such file or directory (2)
[06-Nov-2020 14:56:56] ERROR: FPM initialization failed

我们将上面已经打开的 pid 路径做一下调整,其实他们指向的是一个地方,只是相对路径改成绝对路径

pid = run/php-fpm.pid
改成
pid = /usr/local/var/run/php-fpm.pid

再次执行,我这边 php-fpm 启动就大功告成了!!

$ sudo php-fpm

如果有报错端口被占用,可以看看这篇文章

[10-Nov-2020 17:33:17] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (48)
[10-Nov-2020 17:33:17] ERROR: FPM initialization failed
四、如何查看 PHP 服务启动成功
  • 方式一:可以终端命令的方式查看端口使用情况,也就是 9000 端口是否有没有被使用,被什么程序在使用
$ sudo lsof -i tcp:9000
dengzemiaodeMacBook-Pro:~ dengzemiao$ sudo lsof -i tcp:9000
Password:
COMMAND  PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
php-fpm 2366   root    7u  IPv4 0x900d5fb14fcb74e1      0t0  TCP localhost:cslistener (LISTEN)
php-fpm 2367 nobody    5u  IPv4 0x900d5fb14fcb74e1      0t0  TCP localhost:cslistener (LISTEN)
php-fpm 2368 nobody    5u  IPv4 0x900d5fb14fcb74e1      0t0  TCP localhost:cslistener (LISTEN)
  • 方式二:如果你重复执行上面的启动命令也会报错如下,这里提示是 9000 端口已经被使用了,php 启动之后占用的就是 9000 端口,所以也就不用担心啥了,如果 9000 端口是被别的程序在使用,也可以关闭这个端口的程序在重新启动。


dengzemiaodeMacBook-Pro:~ dengzemiao$ sudo php-fpm
dengzemiaodeMacBook-Pro:~ dengzemiao$ sudo php-fpm
[06-Nov-2020 16:09:03] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (48)
[06-Nov-2020 16:09:03] ERROR: FPM initialization failed


五、Nginx 连接 PHP 配置
  • 上面我们已经安装启动好 NginxPHP 服务了,现在就需要来到 Nginx 进行配置一下
  • 我们来到 nginx.conf 目录
/usr/local/etc/nginx/nginx.conf
  • 在这个目录里面看看有没有 fastcgi.conf 文件,如果没有这个文件的话,还是老办法,将 fastcgi.conf.default 拷贝改成 fastcgi.conf,因为这个文件是 Nginx 与 php 的桥梁文件。


$ cp fastcgi.conf.default fastcgi.conf
  • 有了桥梁文件,就可以来到 Nginx 的配置文件 nginx.conf 中添加一个 虚拟主机 配置支持一下 php 文件使用了,找到配置文件打开进行编辑,添加一个支持 php 解析的虚拟主机。
server {
     # 监听端口
     listen 8081;
     # 主机名称
     server_name www.dzm.com;
     # 根目录 (写到这上面就是下面所有的 location 都共用这个根目录)
     root /usr/local/var/dzm;
     # 匹配协议
     location / {
        index index.html;
     }
     # PHP 脚本请求全部转发到 fastcgi 处理. 使用 fastcgi 协议默认配置.
     # fastcgi 服务器和程序 PHP 沟通的协议.
     location ~ \.php$ {
         # 设置监听端口
         fastcgi_pass   127.0.0.1:9000;
         # 设置 nginx 的默认首页文件
         fastcgi_index  index.php;
         # 引入 fastcgi 的配置文件
         include        fastcgi.conf;
     }
 }

我们这里只是配置了一个运行 php 的虚拟主机,如果需要使用到 php 开发框架的,虚拟主机的 location 可以自行百度,反正都是一个意思,匹配一些文件走不同的处理,配置好主机之后,我们还需要到根目录去建一个 index.php 文件。

index.php 里面内容可以写 php 函数,这样更容易区分测试是否成功:

<?php
  phpinfo();
?>

上面操作都做好之后,我们需要刷新一下 Nginx 的配置文件,如果后面打开链接地址失败可以重启一下关闭重启一下 Nginx

$ nginx -s reload

然后打开配置的主机地址: http://www.dzm.com:8081/,注意端口号一定要带上,因为我们还没有做别的配置,所以这个端口号还是必须带上的。


450bff5e3044b22a363b830fad3dbf4b.png


这样我们打开 index.html 是成功的,然后在测试打开一下 index.php,也是成功的。


8f37fd0c9b78aeea320b695331d700c8.png


如果链接打开失败可以重启一下 Nginx,打开 index.php 失败会变成下载了一个 index.php 文件,重启之后在打开一下链接。

ddb3b1d2f78b47cee09dd66450bec517.png


相关文章
|
1月前
配置MAC地址表
配置MAC地址表
配置MAC地址表
|
27天前
|
应用服务中间件 BI nginx
Nginx的location配置详解
【10月更文挑战第16天】Nginx的location配置详解
|
1月前
|
缓存 负载均衡 安全
Nginx常用基本配置总结:从入门到实战的全方位指南
Nginx常用基本配置总结:从入门到实战的全方位指南
256 0
|
1月前
|
应用服务中间件 Linux nginx
Jetson 环境安装(四):jetson nano配置ffmpeg和nginx(亲测)之编译错误汇总
这篇文章是关于在Jetson Nano上配置FFmpeg和Nginx时遇到的编译错误及其解决方案的汇总。
89 4
|
7天前
|
存储 负载均衡 中间件
Nginx反向代理配置详解,图文全面总结,建议收藏
Nginx 是大型架构必备中间件,也是大厂喜欢考察的内容,必知必会。本篇全面详解 Nginx 反向代理及配置,建议收藏。
Nginx反向代理配置详解,图文全面总结,建议收藏
|
18天前
|
开发工具 git 开发者
「Mac畅玩鸿蒙与硬件3」鸿蒙开发环境配置篇3 - DevEco Studio 插件安装与配置
本篇将专注于如何在 DevEco Studio 中安装和配置必要的插件,以增强开发功能和提升效率。通过正确配置插件,开发流程能够得到简化,开发体验也会更加顺畅。
61 1
「Mac畅玩鸿蒙与硬件3」鸿蒙开发环境配置篇3 - DevEco Studio 插件安装与配置
|
19天前
|
应用服务中间件 API nginx
nginx配置反向代理404问题
【10月更文挑战第18天】本文介绍了使用Nginx进行反向代理的配置方法,解决了404错误、跨域问题和302重定向问题。关键配置包括代理路径、请求头设置、跨域头添加以及端口转发设置。通过调整`proxy_set_header`和添加必要的HTTP头,实现了稳定的服务代理和跨域访问。
nginx配置反向代理404问题
|
1月前
|
Java Shell 应用服务中间件
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
这篇文章介绍了如何在Mac系统下配置Java JDK、Maven和Tomcat的环境变量,包括配置文件的选择、解决环境变量在zsh shell中无效的问题、查看和设置系统环境变量的方法,以及JDK和Maven的下载、配置和测试步骤。
1421 1
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
|
24天前
|
缓存 负载均衡 应用服务中间件
Nginx配置
【10月更文挑战第22天】在实际配置 Nginx 时,需要根据具体的需求和环境进行调整和优化。同时,还需要注意配置文件的语法正确性和安全性。
40 7
|
1月前
|
前端开发 JavaScript 应用服务中间件
终极 Nginx 配置指南
本文介绍了Nginx的基本配置及其优化方法。首先,通过删除注释简化了Nginx的默认配置文件,使其更易于理解。接着,文章将Nginx配置文件分为全局块、events块和http块三部分进行详细解释。此外,还提供了如何快速上线网站、解决前端history模式404问题、配置反向代理、开启gzip压缩、设置维护页面、在同一IP上部署多个网站以及实现动静分离的具体配置示例。最后,附上了Nginx的基础命令,包括安装、启动、重启和关闭等操作。