我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

书接上文,苏南大叔把apachephp的关系变成了fastcgi的关系后。下一个面临的问题就是:php-fpm不自动开机启动,似乎是个很严重的问题。

苏南大叔:mac 系统,php-fpm 如何加入开机启动项 - mac-php-fpm
mac 系统,php-fpm 如何加入开机启动项(图8-1)

本篇文章中,苏南大叔主要解决的问题就是:如何让php-fpm能够做到开机启动。测试环境:mac,apachephp-fpm

寻找php-fpm的路径

苏南大叔通过find命令就可以得到php-fpm的默认路径是:/usr/sbin/php-fpm。下面的两个命令,任选一个即可。

find / -name php-fpm
whereis php-fpm

修改php-fpm.conf配置文件

测试命令

配置文件的修改,需要使用php-fpm -t来测试配置文件的效果。所以请多多使用下面的命令。

php-fpm -t

初始化配置文件

苏南大叔通过下面的命令,找到php-fpm.conf.default文件,然后复制一份php-fpm.conf出来。

ls -al /private/etc/ | grep php
sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf

log文件路径

如果有log文件路径的错误信息,需要做如下配置:
在配置文件/private/etc/php-fpm.conf中,苏南大叔找到error_log的配置内容。需要创建这个文件,并赋予写权限。在这里,请注意,如果提示没有权限的话,很可能是由于macrootless机制所引起的。

sudo mkdir -p /usr/var/log/
sudo touch /usr/var/log/php-fpm.log
sudo chmod -R 777 /usr/var/log/php-fpm.log

苏南大叔:mac 系统,php-fpm 如何加入开机启动项 - 035
mac 系统,php-fpm 如何加入开机启动项(图8-2)

设置伺服器模式

修改php-fpm的配置文件的项目『daemonize』。路径是/private/etc/php-fpm.conf

daemonize = yes

苏南大叔:mac 系统,php-fpm 如何加入开机启动项 - 037
mac 系统,php-fpm 如何加入开机启动项(图8-3)

错误处理

错误信息:

No pool defined. at least one pool section must be specified in config file

解决方案就是:

sudo cp /private/etc/php-fpm.d/www.conf.default /private/etc/php-fpm.d/www.conf

苏南大叔:mac 系统,php-fpm 如何加入开机启动项 - cp-conf
mac 系统,php-fpm 如何加入开机启动项(图8-4)

编辑plist文件

最后的重点步骤,就是加入启动项了。mac下面加入启动项,挺麻烦的。不如win下面直接了当。
~/Library/LaunchAgents目录,新建 org.php.php-fpm.plist 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>php-fpm</string>
    <key>Program</key>
    <string>/usr/sbin/php-fpm</string>
    <key>KeepAlive</key><true/>
</dict>
</plist>

注意,注意修复xml里面的php-fpm的路径,可能您的路径和苏南大叔给出的范例路径不一样。

苏南大叔:mac 系统,php-fpm 如何加入开机启动项 - 044
mac 系统,php-fpm 如何加入开机启动项(图8-5)

sudo chown root:wheel ~/Library/LaunchAgents/org.php.php-fpm.plist
sudo chmod +x ~/Library/LaunchAgents/org.php.php-fpm.plist
launchctl load -w ~/Library/LaunchAgents/org.php.php-fpm.plist

敲个这个命令,重启完工。话说这个launchctl有点crontab的感觉。

修改权限组

php-fpm.d文件中,默认的用户名和组是nobody。有教程说要修改它为rootwheel。请谨慎更改。除非您能保证您的mac关闭了rootless,否则会导致fpm不能启动。

苏南大叔:mac 系统,php-fpm 如何加入开机启动项 - nobody
mac 系统,php-fpm 如何加入开机启动项(图8-6)

当重启不生效的话,可以用这个调试命令,来看看是否真正加载启动:

launchctl list | grep php

关于上述启动文件的目录,/Library/LaunchAgents,还有个关联位置:/Library/LaunchDaemons/。当没有生效的时候,可以查看一下这个plist文件,不如换个位置试试。mac系统中,有几个类似的位置,功效是不同的。在本例中,建议大家使用~/Library/LaunchAgents/

苏南大叔:mac 系统,php-fpm 如何加入开机启动项 - 047_ok
mac 系统,php-fpm 如何加入开机启动项(图8-7)

苏南大叔:mac 系统,php-fpm 如何加入开机启动项 - 049
mac 系统,php-fpm 如何加入开机启动项(图8-8)

LaunchDaemonsLaunchAgents功能区别对比:

  • LaunchDaemons是用户未登陆前就启动的服务(守护进程)。
  • LaunchAgents是用户登陆后启动的服务(守护进程)。

相关链接

结论

更多苏南大叔带来的php-fpm的相关文章,请点击这里查看:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    fpm