在MacOS High Sierra下完整搭建MNMP開發環境

一些關於在最新 Macos 下搭建LNMP開發環境的流程建議,直接進入正題:php


Preparing
安裝 Homebrew、Ohmyzsh、開發經常使用包&軟件html


1.1 Homebrewnode

Homebrew又叫Brew,是MacOS上的軟件包管理工具,能在Mac中方便的安裝軟件或者卸載軟件,和linux系統中的yum很是類似,只須要一個命令,很是方便。官方網站:http://brew.shmysql

安裝方法(打開 Terminal 終端,輸入):linux

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

檢驗安裝成功方法(打開 Terminal 終端,輸入):nginx

brew doctor

安裝經常使用軟件包(打開 Terminal 終端,輸入):git

brew install wget 
brew install autoconf 
brew install openssl

Brew 經常使用語句(打開 Terminal 終端,輸入):github

#我這裏以操做 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 下來的文件和本來源存在必定差別,更新不及時。我的建議仍是耐心等待,使用本來的源)redis


1.2 Oh my zshsql

目前經常使用的 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、Php7二、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
相關文章
相關標籤/搜索