mac 系统,php-fpm 如何加入开机启动项
发布于 作者:苏南大叔 来源:程序如此灵动~书接上文,苏南大叔把apache
和php
的关系变成了fastcgi
的关系后。下一个面临的问题就是:php-fpm
不自动开机启动,似乎是个很严重的问题。
本篇文章中,苏南大叔主要解决的问题就是:如何让php-fpm
能够做到开机启动。测试环境:mac
,apache
,php-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
的配置内容。需要创建这个文件,并赋予写权限。在这里,请注意,如果提示没有权限的话,很可能是由于mac
的rootless
机制所引起的。
sudo mkdir -p /usr/var/log/
sudo touch /usr/var/log/php-fpm.log
sudo chmod -R 777 /usr/var/log/php-fpm.log
设置伺服器模式
修改php-fpm
的配置文件的项目『daemonize
』。路径是/private/etc/php-fpm.conf
。
daemonize = yes
错误处理
错误信息:
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
编辑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
的路径,可能您的路径和苏南大叔给出的范例路径不一样。
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
。有教程说要修改它为root
和wheel
。请谨慎更改。除非您能保证您的mac
关闭了rootless
,否则会导致fpm
不能启动。
当重启不生效的话,可以用这个调试命令,来看看是否真正加载启动:
launchctl list | grep php
关于上述启动文件的目录,/Library/LaunchAgents
,还有个关联位置:/Library/LaunchDaemons/
。当没有生效的时候,可以查看一下这个plist
文件,不如换个位置试试。mac
系统中,有几个类似的位置,功效是不同的。在本例中,建议大家使用~/Library/LaunchAgents/
。
LaunchDaemons
和LaunchAgents
功能区别对比:
LaunchDaemons
是用户未登陆前就启动的服务(守护进程)。LaunchAgents
是用户登陆后启动的服务(守护进程)。
相关链接
结论
更多苏南大叔带来的php-fpm
的相关文章,请点击这里查看:
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
launchctl list | grep php-fpm返回状态码70,应该表示失败了是吗?
你好,我弄了好久还是自启动失败。我在想我以非root账户xxx登录,而那个.plist配置文件所属root:wheel,和这个是否有关系;另外和你不同的是我的error_log目录在/private/var下面,2019macbook自带php-fpm,我就放到这里了