IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Mac OS X 10.9自带php-fpm的配置使用和扩展安装

    聂文龙发表于 2016-07-14 16:03:00
    love 0

    Mac OS X 10.9已经自带有php-fpm,对于有干净系统强迫症的人,或者原装控来说,用brewhome重装一遍总感觉心里会有小兔子,下面把原装的php-fpm配置起来。


    直接运行,有报错找不到配置文件。

    $ php-fpm

    [11-Jan-2014 16:03:03] ERROR: failed to open configuration file '/private/etc/php-fpm.conf': No such file or directory (2)

    [11-Jan-2014 16:03:03] ERROR: failed to load configuration file '/private/etc/php-fpm.conf'

    [11-Jan-2014 16:03:03] ERROR: FPM initialization failed

    可以在/private/etc/ 目录下生成配置文件,需要root权限(sudo)

    或者在普通用户有权限的目录里放置配置文件,通过--fpm-config参数指定配置文件的位置,如下:

    # cp /private/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf


    $ php-fpm --fpm-config /usr/local/etc/php-fpm.conf

    [11-Jan-2014 16:10:49] ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory (2)

    [11-Jan-2014 16:10:49] ERROR: failed to post process the configuration

    [11-Jan-2014 16:10:49] ERROR: FPM initialization failed

    错误信息显示:不能正确的打开”日志“文件,原因是默认在/usr/var目录下工作,可以修改配置文件指定正确的日志文件路径


    $ vim /usr/local/etc/php-fpm.conf

    修改php-fpm.conf文件中的error_log项,默认前缀是/usr/var ,但并没有这个路径

    error_log = /usr/local/var/log/php-fpm.log

    pid = /usr/local/var/run/php-fpm.pid

    或者不修改配置文件中配置项的路径,在php-fpm的运行参数中(-p)指定放置运行时文件的相对路径前缀


    $ php-fpm --fpm-config /usr/local/etc/php-fpm.conf  --prefix /usr/local/var

    到此,php-fpm守护进程已经基本可以正确的启动了。


    下面我们看下php.ini配置文件及扩展的安装。

    首先看下编译参数,有些值是编译进执行程序的,无法更改。

    $ php -i|grep config

    找到配置文件(php.ini)、目录的位置,下面两项的值指定

    '--with-config-file-path=/etc'

    '--with-config-file-scan-dir=/Library/Server/Web/Config/php'

    所以我们需要在/etc目录下创建php.ini,Mac在/private/etc,/etc下均提供了样例文件php.ini.default,通过查验,两个文件完全相同,所以复制哪一个都无所谓,Mac有提供md5而不是Linux下的md5sum:

    $ md5 /private/etc/php.ini.default /etc/php.ini.default

    MD5 (/private/etc/php.ini.default) = 1c47241665ea5efdc55fd5809f675449

    MD5 (/etc/php.ini.default) = 1c47241665ea5efdc55fd5809f675449


    /etc目录权限root:wheel,需要root权限或使用sudo,关于如何设置Mac的sudo命令需要的密码,请查看

    http://support.apple.com/kb/HT4103?viewlocale=zh_CN&locale=zh_CN

    http://support.apple.com/kb/PH6515?viewlocale=zh_CN


    # cp /etc/php.ini.default  /etc/php.ini

    变更own,以后修改不用老是切换root,生产环境最好不要改

    # chown <你的用户名> /etc/php.ini

    # chmod u+w /etc/php.ini


    安装PHP扩展

    /Library/Server/Web/Config/php 这个目录并不存在,或者Mac OS X Server版本有吧,不知道,手动创建他,以root权限

    # mkdir -p /Library/Server/Web/Config/php


    编译扩展,brewhome是另起炉灶,brew方式安装扩展需要依赖php,如php54-redis会依赖php54,至于编译出来的扩展是否可以配置到自带的,没有实验过。下面以php_discuz扩展(https://github.com/potterhe/php_discuz下载)为例。

    假如扩展源码在/Users/apple/php_discuz目录

    $ ./configure

    $ make

    扩展编译后,默认会存储在 /Users/apple/php_discuz/modules/discuz.so

    将扩展在配置文件中打开

    $ echo "extension=/Users/apple/php_discuz/modules/discuz.so" > /Library/Server/Web/Config/php/discuz.ini


    测试验证

    $ php -i|grep discuz

    discuz support => enabled


    运行用例测试

    $ php -f /Users/apple/php_discuz/discuz.php



    #测试php-fpm配置
    php-fpm -t
    php-fpm -c /usr/local/etc/php/5.5/php.ini -y /usr/local/etc/php/5.5/php-fpm.conf -t
    #启动php-fpm
    php-fpm -D
    php-fpm -c /usr/local/etc/php/5.5/php.ini -y /usr/local/etc/php/5.5/php-fpm.conf -D
    #关闭php-fpm
    kill -INT `cat /usr/local/var/run/php-fpm.pid`
    #重启php-fpm
    kill -USR2 `cat /usr/local/var/run/php-fpm.pid`
    #也可以用上文提到的brew命令来重启php-fpm,不过他官方不推荐用这个命令了
    brew services restart php55
    #还可以用这个命令来启动php-fpm
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.php55.plist
    

    启动php-fpm之后,确保它正常运行监听9000端口:

    lsof -Pni4 | grep LISTEN | grep php
    php-fpm   30907 calvin    9u  IPv4 0xf11f9e8e8033a2a7      0t0  TCP 127.0.0.1:9000 (LISTEN)
    php-fpm   30917 calvin    0u  IPv4 0xf11f9e8e8033a2a7      0t0  TCP 127.0.0.1:9000 (LISTEN)
    php-fpm   30918 calvin    0u  IPv4 0xf11f9e8e8033a2a7      0t0  TCP 127.0.0.1:9000 (LISTEN)
    php-fpm   30919 calvin    0u  IPv4 0xf11f9e8e8033a2a7      0t0  TCP 127.0.0.1:9000 (LISTEN)
    #正常情况,会看到上面这些进程
    

    PHP-FPM开机启动:

    ln -sfv /usr/local/opt/php55/*.plist ~/Library/LaunchAgents
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php55.plist
    

    安装php composer

    brew install composer
    #检查一下情况
    composer --version
    Composer version 1.0.0-alpha8 2014-01-06 18:39:59
    

    redis memcached这些软件brew 已经自动依赖安装上,如果想开机自动启动,或者查看使用说明 brew info redis即可。另外,composer的中文文档:猛戳这里

    安装Nginx

    brew install nginx --with-http_geoip_module
    

    Nginx启动关闭命令:

    #测试配置是否有语法错误
    nginx -t
    #打开 nginx
    sudo nginx
    #重新加载配置|重启|停止|退出 nginx
    nginx -s reload|reopen|stop|quit
    #也可以使用Mac的launchctl来启动|停止
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
    

    Nginx开机启动

    ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
    

    Nginx监听80端口需要root权限执行,因此:

    sudo chown root:wheel /usr/local/Cellar/nginx/1.6.0_1/bin/nginx
    sudo chmod u+s /usr/local/Cellar/nginx/1.6.0_1/bin/nginx


    聂文龙 2016-07-15 00:03 发表评论


沪ICP备19023445号-2号
友情链接