在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閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容