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

  • 相关阅读:
    call apply bind的区别
    Js的继承方法
    JS回调函数 回调地狱问题 以及解决方法
    Js闭包
    Js中的this指向问题
    ES6 Class继承
    面向对象
    Vue
    JavaScript数组 字符串的方法
    28.mysql练习
  • 原文地址:https://www.cnblogs.com/52php/p/5684348.html
Copyright © 2020-2023  润新知