PHP笔记网

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2017-10-26 14:03:52  修改时间:2024-12-25 19:05:26  分类:Linux软件安装/参数优化  编辑

在Mac下安装好了PHP开发环境(PHP-FPM,Nginx,MySql), 想设置成开机自启动,原来以为和一般的Linux系统一样,也是在rc.d这样目录放置启动脚本。在网上查了一些资料,发现苹果应该是把它完全封闭了,只能利用Mac系统里的Launchctl来做这个事。

Launchctl 其实就是写一个 *.plist 的文件,它的作用和 Linux 里的 Crontab 的作用是一样的。下面以自启动 MySql 为例

1、新建文件 com.mysql.plist,但这个文件需要放到 /Library/LaunchDaemons 目录下

sudo vim /Library/LaunchDaemons/com.mysql.plist

其内容如下:

<!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>com.mysql</string>  
        <key>ProgramArguments</key>  
        <array>  
                <string>/usr/local/mysql/bin/mysqld_safe</string>  
        </array>  
        <key>RunAtLoad</key>  
        <true/>  
        <key>KeepAlive</key>  
        <true/>
</dict>  
</plist>

2、注册这个 plist 文件到系统服务。

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.plist  

注意:卸载命令为

sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.plist 

3、修改执行权限

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.plist
sudo chmod +x /Library/LaunchDaemons/com.mysql.plist

 

4、其他开发软件(nginx、php-fpm)同理配置

/Library/LaunchDaemons/com.nginx.plist

<!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>com.nginx</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/local/nginx/sbin/nginx</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
</dict>
</plist>

/Library/LaunchDaemons/com.php-fpm.plist

<!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>com.php-fpm</string>
        <key>ProgramArguments</key>
        <array>
                <string>/usr/local/php/sbin/php-fpm -D</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
</dict>
</plist>

 

 

可能的【报错

1、执行 launchctl 的时候,出现 Dubious ownership on file (skipping) 这个错误

原因是:这个plist文件必须是属于 root 用户,wheel 组,用 chown 修改即可。

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.plist

 

2、执行 launchctl 的时候,出现 launchctl: no plist was returned 这个错误

原因是:plist文件内容可能有格式错误。

用下面这个命令可以查看文件格式是否有问题,我就是用这个查看到 有一个 <true> 标记没有闭合。

sudo plutil -lint /Library/LaunchDaemons/com.mysql.plist

 

注意:php-fpm.confnginx.conf 等配置文件中的 用户名 和 用户组 设置为当前登录用户,即 jianbaostaff

 

延伸阅读:

Mac 用户组:staff、 wheel、admin 的区别

Mac Pro 解压安装MySQL二进制分发版 mysql-5.6.30-osx10.11-x86_64.tar.gz(不是dmg的)

Mac Pro 编译安装 Nginx 1.8.1

Mac Pro 编译安装 PHP 5.6.21 及 问题汇总

 

 

参考:

https://www.nginx.com/resources/wiki/start/topics/examples/osxlaunchd/

https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html

https://sexywp.com/use-launchd-to-start-shadowsocks.htm

 


  

注意:

个人用户 开机自启动 数据保持在 /Library/LaunchDaemons/ 目录,而系统级别的 保存在 /system/Library/LaunchDaemons/ 目录。