1、利用U盘安装Sierra系统


  1. 首先,准备一个 8GB 或更大容量的 U盘,并备份好里面的所有资料。
  2. App Store上下载好 macOS Sierra 正式版的安装系统或其它途径下载
  3. 打开 “应用程序 » 其它 » 磁盘工具”,将U盘 抹掉,格式化成 MacOS扩展(日志式)格式、GUID 分区图,并将U盘命名为Sierra。
  4. 打开 “应用程序 » 其它 » 终端”,将下面的一段命令复制并粘贴进去

    ps: /Volumes/Sierra 这个Sierra是U盘名称

     sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/Sierra --applicationpath /Applications/Install\ macOS\ Sierra.app --nointeraction
    
  5. 回车并执行该命令,这时会提示让你输入管理员密码,然后开始制作了。耐心等待直到屏幕最后出Done字样表示写入U盘成功。
  6. 插上制作好的安装U盘,如果系统能识别出来即可,然后关机。
  7. 按下电源键开机,当听到”噹”的一声时,按住 Option 键不放,直到出现启动菜单选项
  8. 这时选择安装U盘并回车,就可以开始安装了。

2、HomeBrew


  1. Homebrew是什么?

    HomeBrew的官网

    Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就是mac下的apt-get、yum神器

  2. Homebrew安装

    Homebrew的安装非常简单,打开终端复制、粘贴以下命令,回车,搞定

    ps: 执行这个命令有时会返回400,过几分钟重试下一般就好了

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  3. Homebrew使用
    1. 搜索软件:brew search 软件名,如brew search wget
    2. 安装软件:brew install 软件名,如brew install wget
    3. 卸载软件:brew uninstall 软件名,如brew uninstall wget

3、mysql


  1. 搜索mysql

  2. 查看mysql版本信息

     ☁  ~  brew info mysql
     mysql: stable 5.7.18 (bottled)
     Open source relational database management system
     # 下面信息省略
    
  3. 安装mysql

    brew install mysql, 安装时的消息有这么一句话We’ve installed your MySQL database without a root password. To secure it run: mysql_secure_installation,那就来设置下root的密码

     第一步:打开mysql服务
     mysql.server start
     第二步:执行mysql_secure_installation
     mysql_secure_installation # 执行后按照提示信息进行设置
    
  4. mysql一些命令

    1. mysql.server start # 启动
    2. mysql.server stop # 停止
    3. mysql.server restart # 重启
    4. mysql.server reload # 加载配置文件
    5. mysql.server status # 查看mysql状态

4、php


  1. 先添加brew的PHP扩展库

     brew update # 更新下brew源
     # brew 有个默认的仓库,brew tap 你可以看成是第三方的仓库
     brew tap homebrew/dupes
     brew tap homebrew/php
     brew tap josegonzalez/homebrew-php
    
  2. 安装php

    brew search php,出来一堆版本的php,安装php7.0版本,可以先brew options php70看看你安装的时候要哪些选项,我选择了下面这些,因为后面会用nginx作为反向代理。 brew install php70 --with-debug --with-gmp --with-homebrew-curl --with-homebrew-libressl --with-homebrew-libxml2 --with-homebrew-libxslt --with-imap --with-libmysql --with-mysql

  3. 添加系统环境变量

    由于Mac自带了php和php-fpm,因此需要添加系统环境变量PATH来替代自带PHP版本,我们用的是zsh,所以放进.zshrc中,如果你用的shell是bash,那么可以把下面的信息写入到~/.bash_profile文件中,如果这个文件没有,你自己建一个就行。

     echo 'export PATH="$(brew --prefix php70)/bin:$PATH"' >> ~/.zshrc  #for php
     echo 'export PATH="$(brew --prefix php70)/sbin:$PATH"' >> ~/.zshrc  #for php-fpm
     echo 'export PATH="/usr/local/bin:/usr/local/sbib:$PATH"' >> ~/.zshrc #for other brew install soft
     source ~/.zshrc 
    
  4. 测试

  5. php-fpm的配置文件 php-fpm的配置文件,路径在/usr/local/etc/php/7.0/php-fpm.conf, 我们主要看下pid和log文件会放在哪里。

    对着上面的图片,去掉17行和24行前面的分号, 然后保存。使用 php-fpm -t 测试下配置是否正确如下:

    [04-May-2017 17:00:26] NOTICE: configuration file /usr/local/etc/php/7.0/php-fpm.conf test is successful

  6. php-fpm的一些管理 # 测试php-fpm配置 php-fpm -t

     # 启动php-fpm
     php-fpm -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 start | stop | restart php70
        
     # 命令来管理php-fpm
     php70-fpm start | stop | restart 
    
  7. 启动php-fpm之后,确保正常运行监听9000端口

     ☁  ~  lsof -Pni4 | grep LISTEN | grep php
     php-fpm   69092 sunnyday    8u  IPv4 0x83aad710fe731e69      0t0  TCP 127.0.0.1:9000 (LISTEN)
     php-fpm   69093 sunnyday    0u  IPv4 0x83aad710fe731e69      0t0  TCP 127.0.0.1:9000 (LISTEN)
     php-fpm   69094 sunnyday    0u  IPv4 0x83aad710fe731e69      0t0  TCP 127.0.0.1:9000 (LISTEN)   
    
  8. 设置别名

    上面的php-fpm关闭和重启的命令有点长, 在个人主目录下先建立一个.aliases文件,然后放入下面的内容:

     alias fpm.start='php-fpm -D'
     alias fpm.stop='kill -INT `cat /usr/local/var/run/php-fpm.pid`'
     alias fpm.restart='kill -USR2 `cat /usr/local/var/run/php-fpm.pid`'
     alias fpm.status='lsof -Pni4 | grep LISTEN | grep php-fpm'
    

    然后

     echo 'source ~/.aliases' >> ~/.zshrc
     source ~/.zshrc
    

    下次启动php-fpm就简洁多了,不需要一大串了。

5、nginx


  1. 搜索nginx

     brew search nginx
    
  2. 安装ngixn

    brew install nginx
    
  3. nginx命令

     测试配置是否有语法错误
     nginx -t
     启动 nginx
     sudo nginx
     重新加载配置|重启|停止|退出
     nginx -s reload | reopen | stop | quit
    
  4. 跑下nginx

     sudo nginx > 然后打开chrome浏览器输入:localhost:8080 如下显示nginx就没问题
    

  5. 配置nginx

    配置nginx,让它监听php-fpm的进程,这样当用户打开浏览器访问的时候,身为反向代理的nignx就能把东西让php去执行。 接下来,要配置nginx.conf文件,创建一个php-fpm文件(监听php-fpm), 还要约定下将nginx.pid文件,log日志,以及以后我们要配置的站点.conf的路径,我们的路径约定还是按照brew默认的目录来设置, 如下:

     # nginx.conf,已经被创建好了,我们一会要更改下
     /usr/local/etc/nginx/nginx.conf
        
     # php-fpm,这个我们就放在和nginx.conf一样的路径下吧,这个要我们自己创建
     /usr/local/etc/nginx/php-fpm
        
     # 日志文件放在/usr/local/var/log/nginx中,默认已经有了access.log和error.log文件了
     /usr/local/var/log/nginx/
        
     # nginx.pid文件,放在/usr/local/var/run/下面,和php-fpm.pid放一堆
     /usr/local/var/run/
        
     # 以后要配置的站点.conf, 我们就放在/usr/local/etc/nginx/servers/下面,这个servers文件夹本身就存在的
     /usr/local/etc/nginx/servers/
        
     # 站点的根目录,也就用brew给我们设置的吧
     /usr/local/var/www/ 
    

    下面我们先来修改nginx.conf, 用vim打开,把下面的信息覆盖nginx.conf, vim /usr/local/etc/nginx/nginx.conf

     worker_processes  1;
    
     error_log   /usr/local/var/log/nginx/error.log debug;
     pid        /usr/local/var/run/nginx.pid;
        
     events {
         worker_connections  256;
     }
        
        
     http {
         include       mime.types;
         default_type  application/octet-stream;
        
         log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                           '$status $body_bytes_sent "$http_referer" '
                           '"$http_user_agent" "$http_x_forwarded_for"';
        
         access_log  /usr/local/var/log/nginx/access.log  main;
        
         sendfile        on;
         keepalive_timeout  65;
         port_in_redirect off;
        
         include /usr/local/etc/nginx/servers/*;
     }
    

    接下来,将下面的信息放入到php-fpm文件中,vim /usr/local/etc/nginx/php-fpm

     location ~ \.php$ {
         try_files                   $uri = 404;
         fastcgi_pass                127.0.0.1:9000;
         fastcgi_index               index.php;
         fastcgi_intercept_errors    on;
         include /usr/local/etc/nginx/fastcgi.conf;
     }
    

    下面就能配置站点了,先到/usr/local/var/www目录下建立站点根目录,就叫做default吧,然后在里面建立个phpinfo.php,内容就放phpinfo()

     mkdir /usr/local/var/www/default
     vim /usr/local/var/www/default/phpinfo.php # 输入 <?php  phpinfo();
    

    创建站点.conf文件

    vim /usr/local/etc/nginx/servers/default.conf

    内容如下:

     server {
         listen       80;
         server_name  localhost;
         root         /usr/local/var/www/default;
        
         access_log  /usr/local/var/log/nginx/default.access.log  main;
        
         location / {
             index  index.html index.htm index.php;
             autoindex   on;
             include     /usr/local/etc/nginx/php-fpm;
         }
        
         error_page  404     /404.html;
         error_page  403     /403.html;
     }
    

    测试下配置文件

     ☁  ~  sudo nginx -t
     nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
     nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
    

    然后开启php-fpm和nginx服务

     fpm.start
     sudo nginx # 已经开启的用sudo nginx -s reload 重启下
    

    打开浏览器输入:http://localhost/phpinfo.php 如下

6、安装扩展


ps: 使用Homebrew安装扩展可以减少大量的安装和配置的工作

1、redis

1. brew search redis  # 搜索对应的php版本redis
2. brew install php70-redis # 然后安装对应的php版本
3. brew uninstall php70-redis # 卸载redis
4. brew install redis # 客户端
5. brew info redis # 安装信息也可以查看位置
6. Redis默认配置文件不允许以Deamon方式运行,因此需要先修改配置文件
   vim /usr/local/etc/redis.conf # 将daemonize修改为yes,使得redis以后台进程的方式来运行
   redis-server /usr/local/etc/redis.conf # 然后载入配置文件即可实现后台进程启动

ps: 使用Homebrew安装扩展安装如下的扩展导致错误,所以源码编译安装

2、swoole

1. wget https://github.com/swoole/swoole-src/archive/v1.9.15.tar.gz # 下载
2. tar -zxvf v1.9.15.tar.gz # 解压
3. cd swoole-src-1.9.15 # 进入目录
4. /usr/local/bin/phpize # 生成编译文件
5. ./configure --with-php-config=/usr/local/bin/php-config # 编译php扩展
6. sudo make && make install # 编译和安装
7. sudo vim /usr/local/etc/php/7.0/php.ini # 最后添加 extension=swoole.so
8. 重启php, php -i | grep "swoole" # 看见swoole信息就代表安装成功

3、yaf

1. wget http://pecl.php.net/get/yaf-3.0.5.tgz # 下载
2. tar -zxvf yaf-3.0.5.tgz # 解压
3. cd yaf-3.0.5 # 进入目录
4. /usr/local/bin/phpize # 生成编译文件
5. ./configure --with-php-config=/usr/local/bin/php-config # 编译php扩展
6. sudo make && make install # 编译和安装
7. sudo vim /usr/local/etc/php/7.0/php.ini # 最后添加 extension=yaf.so
8. 重启php, php -i | grep "yaf" # 看见yaf信息就代表安装成功

7、安装出现的问题记录


  1. 使用Curl出现的502错误,如下代码

     <?php
     $curl = curl_init(); 
     // URL地址 
     curl_setopt($curl, CURLOPT_URL, 'https://www.alipay.com'); 
     // 设置header 
     curl_setopt($curl, CURLOPT_HEADER, true); 
     // 设置cURL 参数,true,有时候希望返回的内容作为变量储存,而不是直接输出。
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
     // 运行cURL,请求网页数据 
     $data = curl_exec($curl); 
     // 关闭cURL请求 
     curl_close($curl); 
     // 打印数据 
     var_dump($data);
    
  2. 问题的原因:brew安装curl时默认没有带上--with-openssl

     # 先删除curl
     brew uninstall curl
        
     # 重新安装curl,带上--with-openssl
     brew install curl --with-openssl    
    

    重启php-fpm, fpm.restart,在测试以上的curl代码就没问题了。