书接上文,苏南大叔把apachephp的关系变成了fastcgi的关系后。下一个面临的问题就是:php-fpm不自动开机启动,似乎是个很严重的问题。本篇文章中,苏南大叔主要解决的问题就是:如何让php-fpm能够做到开机启动。

寻找php-fpm的路径

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

find / -name php-fpm
whereis php-fpm

mac 系统,php-fpm 如何加入开机启动项 - 030
mac 系统,php-fpm 如何加入开机启动项(图13-1)

mac 系统,php-fpm 如何加入开机启动项 - php-fpm-02
mac 系统,php-fpm 如何加入开机启动项(图13-2)

修改php-fpm.conf配置文件

测试命令

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

php-fpm -t

mac 系统,php-fpm 如何加入开机启动项 - 032
mac 系统,php-fpm 如何加入开机启动项(图13-3)

初始化配置文件

苏南大叔通过下面的命令,找到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

mac 系统,php-fpm 如何加入开机启动项 - 033
mac 系统,php-fpm 如何加入开机启动项(图13-4)

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 如何加入开机启动项(图13-5)

mac 系统,php-fpm 如何加入开机启动项 - 036
mac 系统,php-fpm 如何加入开机启动项(图13-6)

设置伺服器模式

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

daemonize = yes

mac 系统,php-fpm 如何加入开机启动项 - 037
mac 系统,php-fpm 如何加入开机启动项(图13-7)

错误处理

错误信息“No pool defined. at least one pool section must be specified in config file”,如何处理呢?

mac 系统,php-fpm 如何加入开机启动项 - 039
mac 系统,php-fpm 如何加入开机启动项(图13-8)

解决方案就是:

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

mac 系统,php-fpm 如何加入开机启动项 - 041
mac 系统,php-fpm 如何加入开机启动项(图13-9)

编辑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 如何加入开机启动项(图13-10)

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 如何加入开机启动项(图13-11)

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

launchctl list | grep php

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

mac 系统,php-fpm 如何加入开机启动项 - 047_ok
mac 系统,php-fpm 如何加入开机启动项(图13-12)

mac 系统,php-fpm 如何加入开机启动项 - 049
mac 系统,php-fpm 如何加入开机启动项(图13-13)

LaunchDaemonsLaunchAgents功能区别对比:

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

相关链接

结论

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

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接作者。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

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

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

本站的忠实读者小伙伴,正在阅读下面这些文章: