在MacOS High Sierra下完整搭建MNMP开发环境

1.1 Homebrew

Homebrew又叫Brew,是MacOS上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,和linux系统中的yum非常相似,只需要一个命令,非常方便。官方网站:http://brew.sh

安装方法(打开 Terminal 终端,输入):

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

检验安装成功方法(打开 Terminal 终端,输入):

brew doctor

安装常用软件包(打开 Terminal 终端,输入):

brew install wget 
brew install autoconf 
brew install openssl

Brew 常用语句(打开 Terminal 终端,输入):

#我这里以操作 php70 为例
brew update                        #更新brew可安装包,建议每次执行一下
brew search php70                  #搜索php7.0
brew tap josegonzalez/php          #安装扩展<gihhub_user/repo>   
brew tap                           #查看安装的扩展列表
brew install php70                 #安装php7.0
brew remove  php70                 #卸载php7.0
brew upgrade php70                 #升级php7.0
brew options php70                 #查看php7.0安装选项
brew info    php70                 #查看php7.0相关信息
brew home    php70                 #访问php7.0官方网站

人在天朝的话,极有可能出现安装速度过于缓慢的情况,有时候会让你感觉安装处于假死的状态,不必担心,耐心等待即可,切不可心烦意乱的关闭终端窗口(网上有其他教程说可以切换 brew 的源到中科大 CDN,本人亲测:中科大 CDN 虽然快很多,但是clone 下来的文件和原本源存在一定差异,更新不及时。个人建议还是耐心等待,使用原本的源)


1.2 Oh my zsh

目前常用的 Linux 系统和 Mac OS 系统的默认 Shell 都是 bash,但是真正强大的 Shell 是深藏不露的 zsh,史称『终极 Shell』,这玩意儿就像「X天 Php 从入门到放弃」系列,但这次是真的神功速成。Github:https://github.com/robbyrusse...

安装方法(打开 Terminal 终端,输入):

sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

人在天朝的话,极有可能出现安装速度过于缓慢的情况,有时候会让你感觉安装处于假死的状态,不必担心,耐心等待即可,切不可心烦意乱的关闭终端窗口(网上有其他教程说可以切换 brew 的源到中科大 CDN,本人亲测:中科大 CDN 虽然快很多,但是clone 下来的文件和原本源存在一定差异,更新不及时。个人建议还是耐心等待,使用原本的源)


1.3 Xcode

Xcode 是苹果出品的包含一系列工具及库的开发套件。

通过 AppStore 安装最新版本的 Xcode

我们一般不会用 Xcode 来开发后端项目。但这一步也是必须的,因为 Xcode 会附带安装一些如 Git 等必要的软件


1.3.1 Command Line Tools for Xcode

这一步会帮你安装许多常见的基于 Unix 的工具。Xcode 命令行工具作为 Xcode 的一部分,包含了 GCC 编译器

安装方法(打开 Terminal 终端,输入):

xcode-select --install

当 Xcode 和 Xcode Command Line Tools 安装完成后,你需要启动 Xcode,并点击同意接受许可协议,然后关闭 Xcode 就可以了。这一步骤也是必须的,否则 Xcode 包含的一系列开发工具都将不可用。

Working On
安装 Mysql、Php72、redis、Nginx、创建虚拟机、配置 SSL


2.1 Mysql

安装方法(打开 Terminal 终端,输入):

brew install mysql

MySQL的安装包相对较大,在这个步骤需要等待一段时间,下载失败后可多次尝试安装,Brew每次会自动寻找合适的下载源

设置 Mysql 开机启动方法(打开 Terminal 终端,输入):

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

初始化、启动方法(打开 Terminal 终端,输入):

#正常初始化
/usr/local/opt/mysql/bin/mysql_secure_installation
#若出错请启动服务
brew services start mysql

安全配置方法(Terminal 终端会提示[EnglishVersion]):

> Enter current password for root (enter for none):
#直接 Enter,因为没有设置过
> Change the root password? [Y/n]
#是否更改 root 用户的密码
> Remove anonymous users? [Y/n]
#不需要,键入 Y
> Disallow root login remotely? [Y/n]
#禁止root远程登录,建议键入 Y
> Remove test database and access to it? [Y/n]
#删除测试数据表,建议键入 Y
> Reload privilege tables now? [Y/n]
#确保设置生效,键入 Y

检验安装成功方法(打开 Terminal 终端,输入):

#查看端口
ps aux | grep mysql
#测试 Mysql 连接
mysql -uroot -p你设置的密码
为了直观,这里我以密码:123456为例,测试Mysql连接时键入:
mysql -uroot -p123456

安装 Phpmyadmin 方法(打开 Terminal 终端,输入):

brew install phpmyadmin


2.2 Php

安装准备(打开 Terminal 终端,输入):

brew tap homebrew/dupes  
brew tap homebrew/versions  
brew tap homebrew/homebrew-php

安装 Php72(打开 Terminal 终端,输入):

brew install php72

配置 Php72 环境变量(打开 Terminal 终端,输入):

echo 'export PATH="$(brew --prefix php72)/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="$(brew --prefix php72)/sbin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/bin:/usr/local/sbib:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

由于Mac自带了php和php-fpm,因此需要添加系统环境变量PATH来替代自带PHP版本。

验证 Php72 配置(打开 Terminal 终端,输入):

#brew安装的php,正常会显示 php7.2.0betaX
php -v#Mac自带的Php,正常会显示 php7.1.7
/usr/bin/php -v#brew安装的php-fpm,正常会显示 php7.2.0betaX
php-fpm -v#Mac自带的Php-fpm,正常会显示 php7.1.7
/usr/bin/php-fpm -

修改php-fpm配置文件(打开 Terminal 终端,输入):

vim /usr/local/etc/php/7.2/php-fpm.conf /**找到pid相关,去掉pid = run/php-fpm.pid前的“;”, 那么php-fpm的pid文件就会自动产生在 /usr/local/var/run/php-fpm.pid**/

php-fpm验证与启动(打开 Terminal 终端,输入):

#测试php-fpm配置
php-fpm -t
php-fpm -c /usr/local/etc/php/7.2/php.ini -y /usr/local/etc/php/7.2/php-fpm.conf -t
#启动php-fpm
php-fpm -D
php-fpm -c /usr/local/etc/php/7.2/php.ini -y /usr/local/etc/php/7.2/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`

如果出现两个[notice],不用管,除了他们没有其他错误的花,php-fpm 是可以正常启动了。如果出现其他错误,请尝试百度搜索,或者来联系我

php-fpm设置开机启动(打开 Terminal 终端,输入):

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

安装 composer(打开 Terminal 终端,输入):

curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
#改为国内源
composer config -g repo.packagist composer https://packagist.phpcomposer.com


2.3 Nginx

安装 Nginx 方法(打开 Terminal 终端,输入):

brew install nginx

Nginx的安装包相对较大,在这个步骤需要等待一段时间,下载失败后可多次尝试安装,Brew每次会自动寻找合适的下载源

启动 Nginx 方法(打开 Terminal 终端,输入):

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

设置 Nginx 开机启动方法(打开 Terminal 终端,输入):

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

设置 Nginx 监听端口权限(打开 Terminal 终端,输入):

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

配置Nginx.conf(打开 Terminal 终端,输入):

#配置需要用到的目录
mkdir -p /usr/local/var/logs/nginx
mkdir -p /usr/local/etc/nginx/sites-available
mkdir -p /usr/local/etc/nginx/sites-enabled
mkdir -p /usr/local/etc/nginx/conf.d
mkdir -p /usr/local/etc/nginx/ssl
sudo mkdir -p /var/www
sudo chown :staff /var/www
sudo chmod 775 /var/www
#使用 vim 编辑器编辑 nginx.conf
vim /usr/local/etc/nginx/nginx.conf
#nginx.conf 文件中此段内容部分,输入或修改为以下内容
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/logs/access.log  main;

    sendfile        on;
    keepalive_timeout  65;
    port_in_redirect off;

    include /usr/local/etc/nginx/sites-enabled/*;
}

vim 编辑器的退出并保存:按 ECS => 按 CAPS LOCK(大写键) => 按两下 Z

配置php-fpm 配置文件(打开 Terminal 终端,输入):

#使用 vim 编辑器编辑 php-fpm 配置
vim /usr/local/etc/nginx/conf.d/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;
}

nginx 虚拟机配置(打开 Terminal 终端,输入):

#创建 info.php index.html 404.html 403.html文件到 /var/www 下面
vi /var/www/info.php
//输入:<?php phpinfo() ?>
vi /var/www/index.html
//输入:<html><head><meta charset="UTF-8"><title>Default Page</title></head><body><h1 align="center">Default</h1></body></html>

vi /var/www/403.html
//输入:<html><head><meta charset="UTF-8"><title>403 Page</title></head><body><h1 align="center">Default</h1></body></html>

vi /var/www/404.html
//输入:<html><head><meta charset="UTF-8"><title>404 Page</title></head><body><h1 align="center">Default</h1></body></html>

配置虚拟主机配置文件(打开 Terminal 终端,输入):

#使用 vim 编辑器编辑虚拟主机配置
vim /usr/local/etc/nginx/sites-available/default
#输入以下内容
server {
    listen       80;
    server_name  localhost;
    root         /var/www/;

    access_log  /usr/local/var/logs/nginx/default.access.log  main;

    location / {
        index  index.html index.htm index.php;
        autoindex   on;
        include     /usr/local/etc/nginx/conf.d/php-fpm;
    }

    location = /info {
        allow   127.0.0.1;
        deny    all;
        rewrite (.*) /.info.php;
    }

    error_page  404     /404.html;
    error_page  403     /403.html;
}

配置SSL虚拟主机配置文件(打开 Terminal 终端,输入):

#使用 vim 编辑器编辑SSL虚拟主机配置
vim /usr/local/etc/nginx/sites-available/default-ssl
#输入以下内容
server {
    listen       443;
    server_name  localhost;
    root       /var/www/;

    access_log  /usr/local/var/logs/nginx/default-ssl.access.log  main;

    ssl                  on;
    ssl_certificate      ssl/localhost.crt;
    ssl_certificate_key  ssl/localhost.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        include   /usr/local/etc/nginx/conf.d/php-fpm;
    }

    location = /info {
        allow   127.0.0.1;
        deny    all;
        rewrite (.*) /.info.php;
    }

    error_page  404     /404.html;
    error_page  403     /403.html;
}

配置phpmyadmin虚拟主机配置文件(打开 Terminal 终端,输入):

#使用 vim 编辑器编辑phpmyadmin虚拟主机配置
vim /usr/local/etc/nginx/sites-available/phpmyadmin
#输入以下内容
server {
    listen       306;
    server_name  localhost;
    root    /usr/local/share/phpmyadmin;

    error_log   /usr/local/var/logs/nginx/phpmyadmin.error.log;
    access_log  /usr/local/var/logs/nginx/phpmyadmin.access.log main;

    ssl                  on;
    ssl_certificate      ssl/phpmyadmin.crt;
    ssl_certificate_key  ssl/phpmyadmin.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        index  index.html index.htm index.php;
        include   /usr/local/etc/nginx/conf.d/php-fpm;
    }
}

这里 phpmyadmin 默认设置为306端口,且开启 ssl

配置 SSL(打开 Terminal 终端,输入):

mkdir -p /usr/local/etc/nginx/ssl
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=State/L=Town/O=Office/CN=localhost" -keyout /usr/local/etc/nginx/ssl/localhost.key -out /usr/local/etc/nginx/ssl/localhost.crt
openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=State/L=Town/O=Office/CN=phpmyadmin" -keyout /usr/local/etc/nginx/ssl/phpmyadmin.key -out /usr/local/etc/nginx/ssl/phpmyadmin.crt

创建虚拟主机软连接并开启(打开 Terminal 终端,输入):

ln -sfv /usr/local/etc/nginx/sites-available/default /usr/local/etc/nginx/sites-enabled/default
ln -sfv /usr/local/etc/nginx/sites-available/default-ssl /usr/local/etc/nginx/sites-enabled/default-ssl
ln -sfv /usr/local/etc/nginx/sites-available/phpmyadmin /usr/local/etc/nginx/sites-enabled/phpmyadmin

重新装载 nginx(打开 Terminal 终端,输入):

sudo nginx -s reload

可能会要求输入密码

测试 nginx 开启情况(打开浏览器,地址栏输入):

http://localhost
http://localhost/info.php
http://localhost/404.html
https://localhost/index.html(SSL)
https://localhost/info.php(SSL)
https://localhost/404.html(SSL)
https://localhost:306(SSL)


2.4 Redis

安装方法(打开 Terminal 终端,输入):

brew install redis

人在天朝的话,极有可能出现安装速度过于缓慢的情况,有时候会让你感觉安装处于假死的状态,不必担心,耐心等待即可,切不可心烦意乱的关闭终端窗口(网上有其他教程说可以切换 brew 的源到中科大 CDN,本人亲测:中科大 CDN 虽然快很多,但是clone 下来的文件和原本源存在一定差异,更新不及时。个人建议还是耐心等待,使用原本的源)

开启 Redis方法(打开 Terminal 终端,输入):

redis-server

之后进入了管理模式,如果看到Ready to accept connections,说明安装运行成功,直接关闭终端再打开即可

安装 Php-Redis方法(打开 Terminal 终端,输入):

wget https://pecl.php.net/get/redis-3.1.3.tgz 
 tar -zxvf redis-3.1.3.tgz
 cd redis-3.1.3 
 phpize 
 ./configure
 make
 make install

修改 php.ini方法(打开 Terminal 终端,输入):

#使用 vim 编辑器编辑 php.ini
 vi /usr/local/etc/php/7.2/php.ini
 //在文件最后加入extension=redis.so

 #重启 php-fpm 
 sudo killall php-fpm && sudo php-fpm -D 
 #查看是否安装成功 
 php -m |grep redis

转载链接

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

推荐阅读更多精彩内容