在開始介紹怎樣在MAC中安裝LNMP環境以前,我只想說一句話,這個過程主要看人品,有的人不用浪費太多時間就能很輕鬆的完成,可是某些人(例如:myself)實在是一個不肯回憶的慘痛時光。好了不說廢話,切入主題......php
本文參考:html
一、http://www.javashuo.com/article/p-fekfvqci-e.html 很是詳細mysql
二、http://avnpc.com/pages/install-lnmp-on-osx 與上一篇相似,但也值得借鑑nginx
三、http://www.cnblogs.com/alexqdh/archive/2012/11/20/2776017.html 雖與標題關係不緊密,但也比較推薦git
四、https://github.com/Homebrew/homebrew-php/issues/2667 在安裝過程當中遇到的一些問題這裏有記載github
1、安裝Homebrewredis
Homebrew是一個依賴管理工具,經過brew命令就能夠快速的幫助你安裝工具。安裝brew命令行以前要確保你的電腦上已經安裝了Xcode,而後執行如下命令:sql
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝完成以後,在命令行中輸入 apache
username$ brew # 下面是返回的內容 Eample usage: brew [info | home | options ] [FORMULA...] brew install FORMULA... brew uninstall FORMULA... brew search [foo] brew list [FORMULA...] brew update brew upgrade [FORMULA...] brew pin/unpin [FORMULA...] Troubleshooting: brew doctor brew install -vd FORMULA brew [--env | config] Brewing: brew create [URL [--no-fetch]] brew edit [FORMULA...] https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/Formula-Cookbook.md Further help: man brew brew home
這是你就能夠根據返回的幫助信息進行下一步操做了,再此就不一一介紹每一個命令了。只重點說一下 install和unstallvim
# 安裝 FORMULA == 須要安裝的工具名稱 如: php、mysql、nginx username$ brew install FORMULA # 卸載 FORMULA == 須要安裝的工具名稱 如: php、mysql、nginx username$ brew uninstall FORMULA
2、安裝PHP
首先,添加Homebrew官方的幾項軟件源。
brew tap homebrew/dupes brew tap homebrew/versions brew tap homebrew/php
安裝的時候能夠根據須要本身的須要安裝不一樣版本的PHP環境,網上大多說安裝的說5.6和5.5.
使用如下命令就能夠安裝PHP環境(php56 => PHP5.6),配置項能夠本身制定(--with-debug 能夠考慮不要)。
# 安裝PHP5.6 brew install php56 \ --without-snmp \ --without-apache \ --with-debug \ --with-fpm \ --with-intl \ --with-homebrew-curl \ --with-homebrew-libxslt \ --with-homebrew-openssl \ --with-imap \ --with-mysql \ --with-tidy
在安裝的過程當中可能會出現報錯,以下
# 出現問題 checking for ZLIB support... yes checking if the location of ZLIB install directory is defined... no configure: error: Cannot find libz
筆者搜索了網上的一些資料,根據https://github.com/Homebrew/homebrew-php/issues/2549 上介紹的解決方法,執行一條命令就能夠解決這個報錯
xcode-select --install
除了這個報錯以外,還會遇到跟中權限問題,主要是文件夾沒有寫入權限,根據提示的文件夾,逐一進行修改便可。
建議使用b "rew doctor" 命令進行錯誤檢查,它會返回一些頗有價值的問題信息,並有解決問題的提示。
MAC都會自動帶有PHP和Apache環境,所以咱們要添加環境變量,優先執行咱們使用brew安裝的PHP環境。
# 增長環境變量 username$ echo 'export PATH="/usr/local/bin:/usr/local/sbib:$PATH"' >> ~/.bash_profile username$ source ~/.bash_profile
在安裝PHP5.6環境後(若是幸運的你能順利的來到這一步),就要繼續安裝PHP的擴展了,能夠直接安裝擴展,無需從新編譯PHP,咱們能夠經過
# 使用brew查找PHP username$ brew search php56
此命令能夠幫助咱們查看當前PHP5.6環境下有哪些擴展能夠安裝,這樣咱們就能夠自主選擇擴展進行安裝。下面是我安裝的擴展。
# 安裝PHP擴展 username$ brew install php56-gearman php56-msgpack php56-memcache php56-memcached php56-mongo php56-phalcon php56-redis php56-xdebug
在這個過程之中,可能會遇到一個錯誤以下,致使redis安裝失敗
Error: No such file or directory - /usr/local/opt/igbinary/include/igbinary.h
解決方法是取網上下載igbinary-1.1.1.tar
# 進入到igbinary-1.1.1.tar所在目錄 username$ tar zxvf igbinary-1.1.1.tar username$ cd igbinary-1.1.1 username$ /usr/local/Cellar/php56/5.6.17/bin/phpize username$ ./configure --with-php-config=/usr/local/Cellar/php56/5.6.17/bin/php-config username$ make username$ make install username$ vim /usr/local/etc/php/php.ini 加上: extensions=igbinary.so
在igbinary-1.1.1文件夾裏面會有igbinary.h這個文件,將文件放到錯誤提示中的目錄下便可解決,而後從新安裝沒有安裝完成的擴展。
注意,擴展安裝了,那對應的軟件也要安裝,一樣是實用brew命令進行安裝。而後使用PHP命令查看一下PHP是否安裝成功,它會返回PHP的版本和安裝的擴展等信息。
# 查看PHP信息 username$ php -v
接下來修改php-fpm配置文件,vim /usr/local/etc/php/5.6/php-fpm.conf
,找到pid相關大概在25行,去掉註釋 pid = run/php-fpm.pid
, 那麼php-fpm的pid文件就會自動產生在/usr/local/var/run/php-fpm.pid
,下面要安裝的Nginx pid文件也放在這裏。
咱們還可使用php-fpm命令來測試 。
# 測試php-fpm配置 username$ php-fpm -t
啓動\關閉\重啓php-fpm
# 啓動 username$ php-fpm -D # 關閉 username$ kill -INT `cat /usr/local/var/run/php-fpm.pid` #重啓 username$ php-fpm kill -USR2 `cat /usr/local/var/run/php-fpm.pid`
啓動php-fpm以後,確保它正常運行監聽9000端口
username$ lsof -Pni4 | grep LISTEN | grep php php-fpm 30907 calvin 9u IPv4 0xf11f9e8e8033a2a7 0t0 TCP 127.0.0.1:9000 (LISTEN) php-fpm 30917 calvin 0u IPv4 0xf11f9e8e8033a2a7 0t0 TCP 127.0.0.1:9000 (LISTEN) php-fpm 30918 calvin 0u IPv4 0xf11f9e8e8033a2a7 0t0 TCP 127.0.0.1:9000 (LISTEN) php-fpm 30919 calvin 0u IPv4 0xf11f9e8e8033a2a7 0t0 TCP 127.0.0.1:9000 (LISTEN) #正常狀況,會看到上面這些進程
爲了使用方便,將php-fpm設爲開機自啓動。
username$ ln -sfv /usr/local/opt/php56/*.plist ~/Library/LaunchAgents launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php56.plist
通過一番周折應該能夠順利的完成PHP環境的安裝與配置了,若是你在安裝的過程當中出現了其餘問題,請耐心的在網上進行搜索,此文也許只能解決你一部分的問題,good luck!
3、安裝Nginx
在經歷了安裝PHP環境的曲折以後,尚未獲得很好的休息,咱們又來安裝Nginx,提及Nginx仍是有有必要多說幾句的,通常狀況下有些人會使用Mac自帶的Apahce,這樣就不須要安裝Nginx了,但爲了更好的開發環境仍是建議去安裝一下Nginx,有益無害。
一樣,咱們還說使用brew命令來安裝Nginx,命令以下
username$ brew install nginx
這個安裝過程至關順暢一些,也許仍是會出現文件夾權限寫入問題,逐一進行排查就可以解決。不要忘記使用 "brew doctor" 去檢查是否有錯誤或警告產生在安裝的過程當中。
安裝完成後去檢查Nginx
#測試配置是否有語法錯誤 username$ 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
經常使用的Nginx命令
#打開 nginx username$ sudo nginx #從新加載配置|重啓|中止|退出 nginx username$ nginx -s reload|reopen|stop|quit
Nginx默認監聽的端口說8080,而不是一般認爲的80,因此要使用root執行權限讓Nginx去監聽80端口
# 將Nginx的端口由8080改成80,1.8.1是我安裝的版本,能夠根據安裝狀況去替換 username$ sudo chown root:wheel /usr/local/Cellar/nginx/1.8.1/bin/nginx username$ sudo chmod u+s /usr/local/Cellar/nginx/1.8.1/bin/nginx
將Nginx設爲開機自啓
# 開機自啓 user$ ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
到此Nginx安裝完成。
4、Nginx+PHP-FPM配置
單單是安裝完成Nginx和PHP是不夠的,須要將二者結合起來才能知足咱們的常規開發模式。
建立須要用到的目錄,注意要有權限才能夠執行命令。
# 建立目錄 username$ mkdir -p /usr/local/var/logs/nginx username$ mkdir -p /usr/local/etc/nginx/sites-available username$ mkdir -p /usr/local/etc/nginx/sites-enabled username$ mkdir -p /usr/local/etc/nginx/conf.d username$ mkdir -p /usr/local/etc/nginx/ssl username$ sudo mkdir -p /var/www username$ sudo chown :staff /var/www username$ sudo chmod 775 /var/www
接下來配置nginx.conf
# 打開配置文件進入編輯狀態 username$ vim /usr/local/etc/nginx/nginx.conf
輸入如下內容並保存
worker_processes 1; error_log /usr/local/var/logs/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/logs/access.log main; sendfile on; keepalive_timeout 65; port_in_redirect off; include /usr/local/etc/nginx/sites-enabled/*; }
設置 Nginx php-fpm 配置文件
# 編輯配置文件 username$ vim /usr/local/etc/nginx/conf.d/php-fpm #proxy the php scripts to 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虛擬主機
#建立 info.php index.html 404.html 403.html文件到 /var/www 下面,若是沒有寫入權限去調整一下 username$ vi /var/www/info.php username$ vi /var/www/index.html username$ vi /var/www/403.html username$ vi /var/www/404.html
建立默認虛擬主機
# 編輯文件 username$ 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; }
建立虛擬主機軟鏈接並開啓虛擬主機
username$ ln -sfv /usr/local/etc/nginx/sites-available/default /usr/local/etc/nginx/sites-enabled/default
這時咱們就能夠在瀏覽器中訪問咱們localhost,去訪問咱們的主頁了(固然,你要事先在index.html/index.php 編輯好內容,才能在localhost中顯示出來)。
到此,咱們就將Nginx和PHP配置完成,若是發現localhost不能被訪問到的話,能夠試一下localhost:8080,若是能夠輸出的話,那麼就說明你的80端口沒有開放給Nginx。
4、安裝MySQL
在整個安裝的過程當中,我的感受MySQL比起上面兩個環境在安裝的過程當中出現問題的機率更大一些。我選擇的是5.6版本,因爲默認的版本的5.7,可是在安裝和配置的過程當中出現了一些問題沒有成功的解決,因此就選擇了低一點的版本。
# mysql56 表示5.6版本,能夠選擇其餘版本進行安裝 username$ brew install mysql56
整個過程仍是比較順利的,可是不要高興的太早,若是你用mysql命令的時候,它就會報錯,若是沒有報錯那麼恭喜你,下面的內容就能夠跳過了而且能夠放心去使用mysql了。
# 執行mysql命令後的錯誤提示 username$ mysql -u root -p (初始密碼爲空,建議修改) ERROR 2002 (HY000): Can not connect to local MySQL server through socket '/tmp/mysql.sock' (2)
出現這個錯誤的緣由是mysql服務沒有啓動。
# 開始解決上一步出現的錯誤 username$ unset TMPDIR # 而後進入mysql的安裝目錄 username$ cd /usr/local/Cellar/mysql56/5.6.27/ # 執行 username$ mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp # 檢查問題 username$ mysqld --initialize specified # 若是出現問題,有多是目錄不存在,去建立對應的目錄便可 # 啓動mysql username$ mysql.server start # 進入mysql username$ mysql -uroot -p # 若是能成功的進入mysql證實mysql已經安裝成功了
將mysql設爲開機自啓
username$ mkdir -p ~/Library/LaunchAgents username$ cp /usr/local/Cellar/mysql56/5.6.27/homebrew.mxcl.mysql56.plist ~/Library/LaunchAgents/
一切順利的話,到了這裏你就已經將mysql環境安裝完成了。
mysql 一些命令:要注意mysql.server是在mysql的bin目錄下
mysql.server start|restart|stop...
結束語:安裝過程當中可能會出現各類奇葩的問題,只要有足夠的耐心就能夠將問題解決,本問僅供參考並不具備權威性,若是能夠解決你所遇到的問題,那麼很是榮幸。請不要吝嗇分享好的文章給其餘人。