Mac Nginx+php環(huán)境配置,看我就夠了

寫在最前面

通過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配置信息


image.png

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的安裝和配置

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容