Linux 配置 nginx + php

爲何!!!我配過的服務器已經有五、6個了吧,爲何每一次配置都能要了個人老命??此次寫清楚過程,之後再要被配服務器坑,我特麼要砍人了。php

提示:測試網站可否訪問的時候,最好關掉瀏覽器的緩存功能或者勤清瀏覽器的緩存,以免被緩存坑!nginx

 

1. nginxlaravel

mac上經過brew安裝nginx,萬事開頭容易,配置難。git

找到nginx.conf,保持其所在文件夾常年打開不要關閉,由於後面還會常常來這個文件夾找東西。github

nginx.conf 內容參照 https://github.com/daylerees/laravel-website-configs/blob/master/nginx.conf web

注意上面只給出了server塊裏的內容,不過server塊之外的內容保持默認都行。瀏覽器

還請注意 ‘location /’ 塊內的內容,這裏不推薦上文的配置,還請改爲這個:緩存

try_files   $uri /index.php?$query_string;

刪去了 「$uri/」。若是不刪去這一條,而且沒有開啓autoindex的話,直接訪問一個目錄會致使HTTP 403,這在前期配置的時候會形成沒必要要的困擾。服務器

 

除此以外最好啓用error.log,相應配置應該在文件的開頭。php-fpm

同時也請常年打開nginx的 error.log 所在文件夾,判斷問題的時候也會常常用到。

 

2. php-fpm

這玩意至關於運行php的服務器,總之若是你的站點想運行php文件的話,php-fpm 和 nginx 都得保持在後臺運行。

安裝很少說,根據平臺查找本身合適的方案。

也請找到這玩意的配置文件並常年打開。

修改user及group。

 

這玩意自己沒什麼坑的配置之處,主要仍是得看nginx調用這玩意的那部分配置是否正確。

回到nginx.conf。

找到 location ~* php 啥啥啥的塊。

這裏有幾個配置很是重要

1 fastcgi_pass                    unix:/var/run/php5-fpm.sock;
2 fastcgi_index                   index.php;
3 fastcgi_split_path_info         ^(.+\.php)(.*)$;
4 include                         /etc/nginx/fastcgi_params;
5 fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;

 

第1行,告訴nginx去哪裏找php-fpm服務。這個得看你的php-fpm 是什麼樣的,有的經過如上所示的sock進行通訊,有的經過127.0.0.1:9000(通常狀況下)進行通訊,請搞清楚你的php-fpm用的那種方案並修改這一行。

第4行,這裏須要include 一個叫 fastcgi_params 的文件,應該和 nginx.conf 在一個文件夾下,路徑填正確就行。

配置完後重啓各個服務,再試試應該能夠正常使用了。

 

下面貼出訪問網站時可能遇到的問題及解決思路

1. 500 Internal Server Error

通常是php部分執行的時候出錯了,翻看php-fpm 的error log以定位錯誤。

 

2. 403 Forbidden

多是訪問了一個文件夾,可是又沒有開啓autoindex(自動列出文件夾下的全部內容),因而被nginx禁止。

有可能在訪問網站根目錄時出現這個狀況,請檢查 ‘location /’ 塊內的tryfiles有沒有刪去 "$uri/"。

 

3. 502 Gateway Error

nginx找不到php-fpm 服務,多是php-fpm沒開或者 ‘location php’ 塊內的 fastcgi_pass 未正確填寫。

相關文章
相關標籤/搜索