在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.conf、nginx.conf 等配置文件中的 用户名 和 用户组 设置为当前登录用户,即 jianbao、staff。

延伸阅读:

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/ 目录。

Mac Pro 开机自启动 PHP-FPM,Nginx,MySql 等软件相关推荐

  1. launch mysql_Mac Pro 开机自启动 PHP-FPM,Nginx,MySql 等软件

    在Mac下安装好了PHP开发环境(PHP-FPM,Nginx,MySql), 想设置成开机自启动,原来以为和一般的Linux系统一样,也是在rc.d这样目录放置启动脚本.在网上查了一些资料,发现苹果应 ...

  2. 【Mac使用笔记】mac 设置开机自启动

    mac 设置开机自启动 在正式进入配置应用开机自启动的时候,我们需要先了解一下Launchctl. Launchctl介绍 Launchctl : 控制OS X系统里的启动进程(launch) 在Ma ...

  3. Mac Redis开机自启动

    安装Redis并设置为开机启动,百度后发现好多文章是新建一个plist,但其实HomeBrew安装后会自动生成该文件 安装Redis,或者重新安装Redis brew install redisbre ...

  4. centos7.x设置nginx开机自启动

    设置nginx开机自启动(centos7.x) 第一步:进入到/lib/systemd/system/目录 [root@iz2z init.d]# cd /lib/systemd/system/ 第二 ...

  5. linux开机启动mysql脚本,ubuntu linux下mysql开机自启动 - 心之所向,无惧无悔! - 博客频道 - CSDN.NET...

    1. 预使mysql开机自启动,首先需要注册mysql为ubuntu下的服务. 直接拷贝MySQL.server文件至/etc/init.d/目录下即可. sudo cp $MYSQL_HOME/su ...

  6. centos7下压缩包手动安装mysql以及设置开机自启动

    1.说明 在Centos7连接Xshell,Xftp 安装mysql-5.5.47 我百度网盘里有 网盘地址:https://pan.baidu.com/s/1W3iU06mGhyhCTd7NxdEw ...

  7. CenOS8-置nginx开机自启动

    1:进入到/lib/systemd/system/目录 cd /usr/lib/systemd/system/ 2:创建nginx.service文件,并编辑 vim nginx.service 内容 ...

  8. linux设置开机自启动的三种方法

    一.rc.local文件中添加自启动命令 1.执行命令: 编辑"/etc/rc.local" vi /ect/rc.local 2.然后在文件最后一行添加要执行程序的全路径. 例如 ...

  9. Windows设置软件开机自启动与关闭

    Windows设置软件开机自启动 有时候我们需要手动为某些软件设置开机自启动权限,或者手动取消软件开机自启动权限. 取消开机自启动权限: 1. Win+R,在打开的运行程序中输入 msconfig,回 ...

最新文章

  1. C#优化字符串操作【月儿原创】
  2. 华为交换机路由器常用命令
  3. 重新想象 Windows 8 Store Apps (4) - 控件之提示控件: ProgressRing; 范围控件: ProgressBar, Slider...
  4. vue 查询框赋值后不可编辑_vue input 赋值无效
  5. 小米商城项目解析(完)
  6. 求二叉树的深度(C++)
  7. (1)数据结构-绪论
  8. Matlab之字体风格修饰
  9. Docker构建harbor+IDEA,一篇文章就够了
  10. java基于SSM的宠物医院信息管理系统-计算机毕业设计
  11. CF1174F Ehab and the Big Finale(交互+剖分)
  12. SQL2000表里仅有几百条数据,查询很慢,可能跟锁有关
  13. 化妆品电商平台数据分析
  14. 0118-深度学习基础及一些代码实例
  15. 音视频传输中时间戳小头处理方式
  16. 设计模式之美-11| 实战一(下):如何利用基于充血模型的DDD开发一个虚拟钱包系统?
  17. 建筑施工技术【17】
  18. 109岁大象的“尬舞”,IBM宣布自我分拆
  19. 地埋式污水处理设备与地下污水处理厂的区别
  20. 计算机组成原理的简单学习

热门文章

  1. 【学术快报】韩世辉课题组在《eLife》发表论文揭示群体冲突中复仇的神经生物学机制...
  2. 从ACT-R探讨认知智能
  3. 突发!ASML断供中芯国际
  4. 详解|清华大学100页PPT:工业机器人技术详解
  5. 20岁的谷歌,和它“最成功”的大败笔
  6. 科大讯飞:让世界听见AI的声音
  7. 为什么掌握 Linux 对程序员这么重要
  8. 拿大厂机器学习岗 offer,吐血整理的面试秘籍!
  9. 抗住 8 亿人买买买!双 11 背后黑科技大曝光
  10. 内存泄露的原因找到了,罪魁祸首居然是 Java TheadLocal