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
四、如何查看 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
配置
-
上面我们已经安装启动好
Nginx
与PHP
服务了,现在就需要来到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/
,注意端口号一定要带上,因为我们还没有做别的配置,所以这个端口号还是必须带上的。这样我们打开
index.html
是成功的,然后在测试打开一下index.php
,也是成功的。如果链接打开失败可以重启一下
Nginx
,打开index.php
失败会变成下载了一个index.php
文件,重启之后在打开一下链接。
上一篇: mysql常用的技巧_MySQL
下一篇: 单例模式推荐使用静态内部类的方式实现