寫在最前面
通過Google搜索了很多資料,可是都并不完善,我還是遇到好多問題,特此寫這篇文章總結(jié)!
正文
一、通過brew安裝 Nginx
終端執(zhí)行:
brew search nginxbrew install nginx
當(dāng)前版本 1.6.2
安裝完以后,可以在終端輸出的信息里看到一些配置路徑:
/usr/local/etc/nginx/nginx.conf (配置文件路徑)
/usr/local/var/www (服務(wù)器默認(rèn)路徑)
/usr/local/Cellar/nginx/1.6.2 (貌似是安裝路徑)
二、訪問localhost:8080
Nginx 默認(rèn)8080端口,這時(shí)已經(jīng)可以訪問了:
localhost:8080
會(huì)有一個(gè)默認(rèn)歡迎界面。
三、修改 php-fpm 配置文件
1.執(zhí)行命令:
sudo cp /private/etc/php-fpm.conf.default /private/etc/php-fpm.conf
2.找到目錄下的 php-fpm 文件
/private/etc/php-fpm.conf
3.找到24行的 error_log ,改為(整行替換,注意 ‘;’ 和空格,就是要把‘;’也刪除掉,這里我掉坑了)
error_log = /usr/local/var/log/php-fpm.log
否則 php-fpm 時(shí)會(huì)報(bào)錯(cuò):
ERROR: failed to open error_log (/usr/var/log/php-fpm.log): No such file or directory
四、修改 Nginx 配置
1.打開 nginx.config 文件
/usr/local/etc/nginx/nginx.conf
2.找到 server 的 location 配置,給 index 加一個(gè) index.php
location / {
root html;
index index.html index.htm index.php;
}
3.并打開 server 下被注釋的 location ~.php$(即刪除代碼前面的 ‘#’),如下:
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;}
4.并修改 fastcgi_param 參數(shù)
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
改為
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
五、創(chuàng)建 index.php
在 /usr/local/var/www 目錄下,刪除 index.html,創(chuàng)建 index.php,輸入
<?php phpinfo(); ?>
六、啟動(dòng)相關(guān)服務(wù)
sudo php-fpm
然后訪問localhost:8080,看到 php 配置信息,就說明 ok 了
七、nginx常用命令
sudo nginx #啟動(dòng)nginx
sudo nginx -s quit #快速停止nginx
sudo nginx -V #查看版本,以及配置文件地址
sudo nginx -v #查看版本
sudo nginx -s reload|reopen|stop|quit #重新加載配置|重啟|快速停止|安全關(guān)閉nginx
sudo nginx -h #幫助
修改 nginx.conf 后,重載配置文件
sudo nginx -s reload
停止 nginx 服務(wù)器
sudo nginx -s stop
停止 php-fpm可以直接在 Activity Monitor 中停止。也可以使用腳本來停。
八、可能出現(xiàn)的問題
1.訪問 index.php 報(bào) 403 Forbidden.查看(四.2)步驟中,是否在 index 后添加 index.php。
2.訪問 index.php 報(bào) File not found.查看(四.4)中,fastcgi_param 參數(shù)是否修改。
!!!以上是我搜索資料大部分的內(nèi)容(也糾正了一些地方),接下來我記錄下我遇到的問題
1、首先,每個(gè)人的mac目錄地址都不一樣,需要看清楚,還有版本問題,nginx版本不同路徑都會(huì)有相應(yīng)的變化,配置文件的代碼位置也是,上面我已修改。我用的nginx版本是nginx version: nginx/1.13.12
2、問題:2018/05/18 18:21:43 [error] 85581#0: *4 kevent() reported about an closed connection (54: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "localhost:8088"
出錯(cuò)的原因是php-fpm未啟動(dòng)。
解決:sudo php-fpm
3、可能使用sudo php-fpm會(huì)報(bào)路徑出錯(cuò)問題
那就是代表你配置路徑那里沒有修改,具體可以看上面的 三、修改 php-fpm 配置文件
4、sudo nginx -s reload 報(bào)錯(cuò)nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed
這個(gè)問題我糾結(jié)了好久,路徑?jīng)]有錯(cuò)誤為啥就找不到,后來才知道是權(quán)限問題:
原因:當(dāng)前用戶對(duì)該位置沒有寫入權(quán)限
解決辦法:
1.使用命令:sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 以root權(quán)限啟動(dòng)
2.使用命令:sudo chmod -R a+rw /usr/local/nginx 給所有用戶賦權(quán)限(個(gè)人學(xué)習(xí),不考慮安全問題)
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 啟動(dòng)Nginx
5、sudo nginx 啟動(dòng)錯(cuò)誤/usr/local/var/run/nginx.pid failed
解決方案:
sudo nginx -c /usr/local/etc/nginx/nginx.conf
sudo nginx -s reload
6、 unable to bind listening socket for address '127.0.0.1:9000': Address already in use
啟動(dòng)php-fpm報(bào)錯(cuò):
zhangweitingdeMacBook-Pro:PHP Tate$ sudo php-fpm
[23-May-2018 10:24:02] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (48)
[23-May-2018 10:24:02] ERROR: FPM initialization failed
原因是9000端口已經(jīng)被占用,停止原先的php-fpm:
zhangweitingdeMacBook-Pro:PHP Tate$ sudo killall php-fpm
zhangweitingdeMacBook-Pro:PHP Tate$ sudo php-fpm
這樣就能重啟了~
7、訪問報(bào)403權(quán)限問題
ls -l 查看nginx的配置文件發(fā)現(xiàn)用戶名是root 用戶組是wheel , 修改配置文件第一行加上 user root wheel;(這里具體要看你的權(quán)限,我是這個(gè)) 重啟nginx就好了~
sudo nginx -s reload
sudo killall php-fpm
sudo php-fpm
8、訪問路徑目錄權(quán)限問題
chmod -R 777 ./PHP2/ (PS 這里為目錄結(jié)構(gòu)) 給目錄所有權(quán)限
補(bǔ)上一張成功的圖片,看到之后好欣慰,這是打開了瀏覽器看到的PHP配置信息

9、讓Nginx訪問URL,兼容//模式
在Nginx低版本中,是不支持PATHINFO的,但是可以通過在Nginx.conf中配置轉(zhuǎn)發(fā)規(guī)則實(shí)現(xiàn):
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
參考資料
Mac下Nginx環(huán)境配置
Mac 平臺(tái)搭建PHP開發(fā)環(huán)境:Nginx、PHP、MySQL.md
mac下nginx的安裝和配置