標籤:inf php-fpm 分配 targe 網站 根目錄 script 注意 根據
為什麼!!!我配過的伺服器已經有5、6個了吧,為什麼每一次配置都能要了我的老命??這次寫清楚過程,以後再要被配伺服器坑,我特麼要砍人了。
提示:測試網站能否訪問的時候,最好關掉瀏覽器的緩衝功能或者勤清瀏覽器的緩衝,以避免被緩衝坑!
1. nginx
mac上通過brew安裝nginx,萬事開頭容易,配置難。
找到nginx.conf,保持其所在檔案夾常年開啟不要關閉,因為後面還會經常來這個檔案夾找東西。
nginx.conf 內容參照 https://github.com/daylerees/laravel-website-configs/blob/master/nginx.conf
注意上面只給出了server塊裡的內容,不過server塊以外的內容基本不用動。
還請注意 ‘location /’ 塊內的內容,這裡不推薦上文的配置,還請改成這個:
try_files $uri /index.php?$query_string;
刪去了 “$uri/”。如果不刪去這一條,並且沒有開啟autoindex的話,直接存取一個目錄會導致HTTP 403,這在前期配置的時候會造成不必要的困擾。
除此之外最好啟用error.log,相應配置應該在檔案的開頭。
同時也請常年開啟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 未正確填寫。
Linux 配置 nginx + php