MacOSX搭建PHP开发环境(一)

我们的目标是星辰大海!

决定前往全栈开发的道路,后端熟悉并达到中级水平,使用php开发,熟练使用Yii框架搭建项目;前端能到达中级水平,熟练使用Vue开发,熟练使用React;熟练小程序开发,wepy和Vue;iOS达到高级水平,搭建组件化开发框架、使用ReactNative混合开发、熟练开发H5;数据领域,熟练python语言和爬虫技术,熟悉各种运营指标和数据分析方法;机器学习领域,正在学习TensorFlow。

此处为配置MacOSX+PHP+Nginx+MySql开发环境。

参考文档
  1. 安装文档:http://www.jb51.net/article/76759.htm
使用brew安装nginx
$ brew search nginx 
$ brew install nginx 

Nginx安装路径
$ cd /usr/local/etc/nginx
$ ls -a
.         koi-utf         scgi_params
..            koi-win         scgi_params.default
fastcgi.conf      mime.types      uwsgi_params
fastcgi.conf.default  mime.types.default  uwsgi_params.default
fastcgi_params        nginx.conf      win-utf
fastcgi_params.default    nginx.conf.default

Nginx配置文件:
nginx.conf 和 nginx.conf.default 为nginx的配置文件。

启动nginx
$ sudo nginx 
关掉nginx进程
$ sudo pkill nginx
查看localhost:8000
会执行www里的index.php文件
Nginx配置文件

详细配置请参考:https://segmentfault.com/a/1190000002797601

0. nginx相关配置在 /usr/local/etc/nginx/目录下
1. nginx配置文件为 nginx.conf 以及 nginx.conf.default
2. nginx.conf配置 把 server 和其他基本配置分开。其中server相关配置全部放置在config.d文件夹中,其他配置依旧防止在nginx.conf中
安装php-fpm

如果使用Mac OSX 10.9系统自带的PHP、php-fpm,则需要简单地修改下php-fpm的配置,否则运行php-fpm会报错。如果使用brew安装的PHP,这里自行忽略。

<!-- lang: shell -->

sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf

vim /private/etc/php-fpm.conf

修改php-fpm.conf文件中的error_log项,默认该项被注释掉,这里需要去注释并且修改为error_log = /usr/local/var/log/php-fpm.log。如果不修改该值,运行php-fpm的时候会提示log文件输出路径不存在的错误。

直接在终端输入:

启动php
$ sudo php-fpm 

干掉php进程()
$ sudo pkill php-fpm

➜  ~ php-fpm 
[14-Apr-2017 01:32:58] ERROR: failed to open error_log (/usr/local/var/log/php-fpm.log): Permission denied (13)
[14-Apr-2017 01:32:58] ERROR: failed to post process the configuration
[14-Apr-2017 01:32:58] ERROR: FPM initialization failed
➜  ~ sudo php-fpm 
Password:
[14-Apr-2017 01:33:06] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (48)
[14-Apr-2017 01:33:06] ERROR: FPM initialization failed
➜  ~ sudo pkill php
➜  ~ sudo php-fpm 
➜  ~ nginx 

$ lsof -i tcp:9000 
$ 发现该指令并不起作用,必须用pkill强制删除php

over

brew 安装PHP

使用brew安装PHP是非常快捷的方式之一。前段时间brew更新了自己的版本仓库,将homebrew/php相关的组件库全部移除,导致php-version等众多原来可以从brew直接安装的库被删除,无法更新(显示:No formula found for "php-version".)。目前还在更新中。具体进度可以查看他们的github仓库。服务端同学可以直接更新php版本到php7

$ brew search php
$ brew install php
即可更新到最新的php版本
安装mysql
$ brew install mysql
$ mysql server start 
$ mysql.server stop
如果mysql server 无法启动的话,可以使用:
$ mysqld 
$ mysql

配置mysql
启动mysql
$ mysqld  //改命令可以直接启动mysql
$ mysql.server start 该命令也可以直接启动mysql
启动mysql命令行,该命令启动mysql后直接进入mysql命令行模式
若要进入该模式,必须先启动mysql
$ mysql 
//
MySQL服务器启动错误 'The server quit without updating PID file'
http://pein0119.github.io/2015/03/25/MySQL%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%AF%E5%8A%A8%E9%94%99%E8%AF%AF-The-server-quit-without-updating-PID-file/
遇到该问题,我是使用这一条解决的:
1.我通过检查我的旧mac发现/usr/local/var/mysql/的所有者是gaolong
2.但是启动报错的那台mac检查发现/usr/local/var/mysql/的所有者是root
3.于是执行 sudo chown -R yxt /usr/local/var/mysql/  ytx为本台mac的用户名。
于是这个纠结了大半年的问题终于迎刃而解。

执行mysqld后:

.....
2016-11-12 21:29:00 33202 [Note]   - '::' resolves to '::';
2016-11-12 21:29:00 33202 [Note] Server socket created on IP: '::'.
2016-11-12 21:29:00 33202 [Note] Event Scheduler: Loaded 0 events
2016-11-12 21:29:00 33202 [Note] mysqld: ready for connections.
Version: '5.6.27'  socket: '/tmp/mysql.sock'  port: 3306  Homebrew

这段运行是多么优雅啊!

所以让我再次认识到服务器编程,除了是路径之外,还是权限!是路径+权限。
使用mysql.server start 启动
bitbrothersdeMacBook-Pro-2:~ yxt$ mysql.server start 
Starting MySQL
. SUCCESS! 
bitbrothersdeMacBook-Pro-2:~ yxt$ 

检测自己的Mac下PHP+Nginx+Mysql环境是否安装成功
  1. 检测Nginx配置
$ cd usr/local/etc/nginx
$ vi nginx.conf
配置server选项
具体如何配置,会有专门文章详细讲解
配置好后,在浏览器打开相应的网页,如果能显示则配置成功,否则显示无法打开此网页。
$ vi /etc/hosts
将配置的特殊域名标记在该文件中,这一步是必须的,浏览器会解析该文件。
  1. 检测PHP配置
nginx.conf 必须配置php相关参数
使用PHP7,默认情况下,$ sudo php打开的是系统自带的php5.6,需要使用$ php-version 7.2 切换版本,php-version 无法使用后,直接运行php包源码里的bin文件和php-fpm包里的bin文件打开php。
<php phpinfo();如果是php7则会显示在浏览器中为php7
  1. 检测Mysql配置
mysql 的搭建和配置相对简单。本人使用Yii框架开发。
  1. 新建服务端项目
PHP依赖管理工具

php第三方依赖管理工具有pear和Composer,Pear是比较古老的管理方式,而后者composer则需要PHP5.3以后的版本方支持,但是也做过了五个年头,是一种可信赖的管理工具。其管理灵感来自node的npm,其实管理起来也是非常方便的。

  1. 全局安装composer:http://www.phpcomposer.com/

    $ cd XXX
    $ $ curl -sS https://getcomposer.org/installer | php
    $ mv composer.phar /usr/local/bin/composer //此处是将下载下来的composer.phar移到相应目录下
    MacOS X也可以使用homebrew安装
    $ brew tap josegonzalez/homebrew-php  
    $ brew install josegonzalez/php/composer  
    
  2. 声明依赖

    在项目目录下创建一个 composer.json 文件,指明依赖,比如,你的项目依赖 monolog

    {
        "require": {
            "monolog/monolog": "1.2.*"
        }
    }
    
  3. 安装依赖

    安装依赖非常简单,只需在项目目录下运行:

    $ composer install 
    
  4. 自动加载

    require 'vendor/autoload.php'; 
    
  5. 案例

    这个是一个非常有名的日志第三方库:https://github.com/Seldaek/monolog

    
    <?php
    
    use Monolog\Logger;
    use Monolog\Handler\StreamHandler;
    
    // create a log channel
    $log = new Logger('name');
    $log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
    
    // add records to the log
    $log->warning('Foo');
    $log->error('Bar');
    
  6. over

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容