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 编译安装 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

时间: 2024-12-14 21:22:31

Mac Pro 开机自启动 PHP-FPM,Nginx,MySql 等软件的相关文章

mac redis 开机自启动

为了让Redis在启动时自动启动,我使用的是launchd. 在/ Library / LaunchDaemons中创建一个简单的xml文档 sudo vim /Library/LaunchDaemons/redis-server.plist 在redis-server.plist中放这个 注意: 先执行which redis 查看redis的安装位置 再执行sudo find / -name redis.conf 查看reids.conf的位置 然后正确填写以下代码 <!DOCTYPE pli

开机自启动nginx,php-fpm

开机自启动nginx,php-fpm(其他服务类似) centos 7以上是用Systemd进行系统初始化的,Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服 sysvinit 固有的缺点,提高系统的启动速度. Systemd服务文件以.service结尾,比如现在要建立nginx为开机启动,如果用yum install命令安装的,yum命令会自动创建nginx.service文件,直接用命令systemcel enable nginx.service设

centos7.x设置nginx开机自启动

设置nginx开机自启动(centos7.x) 第一步:进入到/lib/systemd/system/目录 [[email protected] init.d]# cd /lib/systemd/system/ 第二步:创建nginx.service文件,并编辑 # vim nginx.service 内如如下: [Unit] Description=nginx service After=network.target [Service] Type=forking ExecStart=/usr/

Mac 10.12通过Launchd创建自定义服务(基于MySQL 5.7.15的开机自启动)

在上一篇文章http://www.cnblogs.com/EasonJim/p/6275863.html中安装MySQL时采用的时DMG包的安装步骤页面进行安装的,如果这样安装的MySQL是会开机自启动,并且在系统设置中有MySQL关于服务方面的快速操作界面. 那么如果是基于二进制包安装的,如果要实现开机自启动,那么需要使用到Launchd进行服务的管理. 实现步骤: 1.在/Library/LaunchDaemons下新建com.oracle.oss.mysql.mysqld.plist的文件

mac 安装 php nginx mysql

mac下面安装php nginx mysql根linux下面差不多,建议大家使用brew管理工具包安装. 1,安装homebrew http://brew.sh/index_zh-cn.html 安装方法会改变的,所以安装官方上面的方法来装.安装 homebrew-cask $ brew tap caskroom/cask homebrew-cask安装的东西,更多. 2,换源或者加代理 brew管理工具包,默认是从github上面下载,github经常被墙.并且龟速. 查看复制打印? $ br

2分钟-实现开机nginx开机自启动脚本(shell篇)

如何快速写个启动脚本,主要通过如下几部 1,逻辑捋顺 可以在txt文件中,已伪代码的方式,形成体系,罗列顺序,然后在一点点补充代码 通过PID 进程文件,判断程序是否运行 设置3个模块(开启,关闭,重新加载) 然后在用case语句 去调用这个3个模块 实现启动脚本功能 restart看进程号变化,reload看配置文件是否生效 2,脚本主体内容 [[email protected]]# cat /etc/init.d/nginx #!/bin/bash # chkconfig: 2345 32 

mac设置shell脚本开机自启动

最近需要做分布式架构的网站,目前一直在调试阶段,每次开机的时候都要启动一大堆工具,比如zookeeper.activemq.redis.nginx等等,不厌其烦. 在网上搜了下mac如何设置shell脚本开机自启动,记录一下,方便自己也方便大家. 1.首先写一个sh脚本,比如: 1 cd ~/Documents 2 mkdir haha 代码很简单,进入Documents文件夹,建立haha目录,保存为run.sh 2.修改run.sh权限 sudo chmod 777 run.sh 3.右键点

mysql开机自启动设置

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/44086909 设置mysql开机自启动 [[email protected] local]# chkconfig –list [[email protected] local]# chkconfig mysqld on [[email protected] local]#

Linux(CentOS)系统下设置nginx开机自启动

Nginx 是一个很强大的高性能Web和反向代理服务器.下面介绍在linux下安装后,如何设置开机自启动.首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令:vi /etc/init.d/nginx 在脚本中添加如下命令:*************************************************************************************************************************