Mac Pro 开机自启动 PHP-FPM,Nginx,MySql 等软件
在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 编译安装 PHP 5.6.21 及 问题汇总
参考:
https://www.nginx.com/resources/wiki/start/topics/examples/osxlaunchd/
https://sexywp.com/use-launchd-to-start-shadowsocks.htm
注意:
个人用户 开机自启动 数据保持在 /Library/LaunchDaemons/ 目录,而系统级别的 保存在 /system/Library/LaunchDaemons/ 目录。
相关文章
- 【Mysql 学习】mysqld_safe:MySQL服务器启动脚本
- 摄像头拍照,PHP输入流php://input的使用分析
- PHP定时备份MySQL,mysqldump语法大全
- MySql: show databases/tables use database desc table
- Centos中安装PHP的PDO MySQL扩展的教程
- mysql分享一:运维角度浅谈MySQL数据库优化
- php分享十三:mysql事物
- 一天一个mysql函数(一) cast && convert
- PHP mysql_num_rows() 函数 返回结果集中行的数目。
- 【高并发简单解决方案】redis缓存队列+mysql 批量入库+php离线整合
- Nginx 1.5.2 + PHP 5.5.1 + MySQL 5.6.10 在 CentOS 下的编译安装
- MYSQL随机抽取查询 MySQL Order By Rand()效率问题
- MYSQL错误解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- Coreseek + Sphinx + Mysql + PHP构建中文检索引擎
- 【问题解决方案】MySQL安装后无法启动-net start mysql服务名无效
- php数据库连接mysql与mysqli的区别与用法
- PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)
- MySql中json类型的使用___mybatis存取mysql中的json
- Mysql 如果有多个可选条件怎么加索引_MySQL|mysql-索引
- Atitit 前端测试最简化内嵌web服务器 php 与node.js 目录 1.1. php内置Web Server1 1.2. Node的2 Node的比较麻烦些。。Php更加简单
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
- MySQL Study之--Mysql无法启动“mysql.host”
- 配置apache、php、mysql之间的关系
- 【整理】Linux下中文检索引擎coreseek4安装,以及PHP使用sphinx的三种方式(sphinxapi,sphinx的php扩展,SphinxSe作为mysql存储引擎)
- MySql查询的生命周期和性能优化思路
- Mysql proxy实现读写分离