配置php-fpm識別php文件訪問


以前是裝的集成環境,沒有想到裝完Nginx + PHP + MySQL 

啟動nginx 服務,出現頁面:

 

 

 

 

 

 

如果訪問120.25.216.6/index.php 就會變成下載

之所以會這樣是因為2個原因:

/etc/nginx/nginx.conf 或者 /etc/nginx/conf.d/120.25.216.6.conf 里面要設置

讓nginx fastcgi 監聽端口127.0.0.1:9000,把用戶請求發送給php.ini處理,所以還要設置 nginx配置+php配置

以下是/etc/nginx/conf.d/120.25.216.6.conf 配置:

server {
listen 80;
server_name 120.25.216.6;
  location ~ \.php?.*$ {
    root /var/www/html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
}

  

下面是一個非常完整的配置,順便寫上了注釋

server {
  listen 80;  // 監聽80 端口,也可以換成8080,但是要開啟安全組端口
  server_name 39.108.82.69;  // 這個可以是你的域名或者ip  server_name www.conf.com;
  location / {
    root /var/www/html; // 項目的路徑,我用的是yum install nginx ,所以默認選/var/www/html 當項目根目錄
    index index.php index.html index.htm;  // 可以識別的文件 index.php 放在前面,輸入域名 39.108.82.69 是可以直接找到 /var/www/html/index.php 的

   }
  // 下面這里的是配置讓nginx 識別php的核心配置
  location ~ \.php$ {
    root /var/www/html; // 這個地方不配,應該會訪問不到
    fastcgi_pass 127.0.0.1:9000; // 這里使用的是9000端口監聽,當然可以用sock方式,這里配置只是第一步,還要設置/usr/sbin/php-fpm  /etc/php-fpm/www.conf  監聽127.0.0.1:9000 看后面介紹
    #fastcgi_pass unix:/dev/shm/php-cgi.sock;
    fastcgi_index index.php;
    #fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
  error_page 404 /404.html;
  location = /404.html {
    root /usr/share/nginx/html;
  } 
  error_page 500 502 503 504 /50x.html;
  location = /50x.html {
    root /usr/share/nginx/html;
  } 

}

 

 

那么通過搜索 

find / -name www.conf    

配置php www.conf

 

 

 然后 vim /etc/php/7.2/fpm/pool.d/www.conf  

配置如下:

[www]
user = www-data   //這里使用的是www-data 如果沒有這個用戶可以使用命令  useradd www-data
group = www-data // 這里是組 可以使用命令groupadd www-data創建   這里要注意一下 nginx.conf 里面設置了用戶組訪問,建議改成相同
;## 以什么用戶什么組的權限來運行池fpm

listen = 127.0.0.1:9000   // 監聽端口9000  
;listen = /apps/php/var/run/$pool-php-fpm.sock
;## 監聽的ip和端口,可以 /path/to/unix/socket 來監聽unix socket,性能更好。

listen.backlog = 4096
;## 未accept處理的socket隊列大小,-1 on FreeBSD and OpenBSD,其他平台默認65535,高並發時重要,不要用-1,建議1024以上,最好是2的冪值。
;## 一個池共用一個backlog隊列,所有的池進程都去這個隊列里accept連接。
;## 最大數量受限於系統配置 cat /proc/sys/net/core/somaxconn,
;## 系統配置修改:vim /etc/sysctl.conf,增加 net.core.somaxconn = 2000 則最大為2000,然后php最大的backlog可以到2000。

listen.allowed_clients = 127.0.0.1
;## 設置允許連接fpm的地址,比如nginx就要來連,多個地址用逗號隔開,如果不配置,則默認任意地址都能來連。

;## 設置php-fpm進程,一般大於8G內存建議用 static 模式,max_children的計算方式,每個php-fpm進程約占 20~30M 的內存,
;## 根據預計給php-fpm的內存計算出合理值,例如預計給php-fpm 預留6G使用內存,那max_children 應設置為 200~300 之間
pm = dynamic
;## 啟動時子進程管理方式,可選值:static(啟動時創建指定個數), dynamic(啟動時根據情況創建,至少有一個),
;## ondemand(啟動時不創建子進程,有需求才創建)

pm.max_children = 2000
;## 該池同時最多存在n個進程, 三種管理方式都要配置

pm.max_requests = 4
;## 子進程接收n個請求后,自動重啟

pm.start_servers = 2
;## fpm啟動時創建2個子進程,只適用動態dynamic管理方式

pm.min_spare_servers = 2
;## 服務器閑置時最少保持2個子進程,不夠這個數就會創建,只適用動態dynamic管理方式

pm.max_spare_servers = 6
;## 服務器閑置時最多要有幾個,多了會kill,只適用動態dynamic管理方式

listen.owner = www  // 如果這里權限不足,可能會導致php 無法正常訪問
listen.group = www
listen.mode = 0660 // 這個必須要配置,很重要,如果權限不足,則創建權限訪問
;##用socket連接方式時,指定擁有unix socket權限的用戶,默認和運行的用戶一樣;用tcp連接可以注釋掉

;pm.status_path = /status
;## FPM 狀態頁面的網址。如果沒有設置,則無法訪問狀態頁面,默認值:無

ping.path = /ping
;## FPM 監控頁面的 ping 網址。如果沒有設置,則無法訪問 ping 頁面。該頁面用於外部檢測 FPM 是否存活並且可以響應請求。
;## 請注意必須以斜線開頭(/)。

ping.response = pong
;## 用於定義 ping 請求的返回響應。返回為 HTTP 200 的 text/plain 格式文本。默認值:pong。

request_terminate_timeout = 3600s
;## 單個請求的超時時間,有時候php.ini設置的最大執行時間未生效,這個就會來干掉那個執行太久的請求。

;request_slowlog_timeout = 10s::;;;

  

最后啟動 Nginx + PHP

Nginx 啟動方式

systemctl restart nginx.service  || service nginx restart

nginx -t               查看nginx 配置是否報錯

nginx -s reload  重啟nginx 重新加載配置

php-fpm 啟動命令

sudo /usr/sbin/php-fpm // 加權限啟動 啟動后使用netstat -nltp 可以如果可以查看到9000 代表成功,如果9000端口存在要先 kill -9 端口 再重新啟用 

/usr/sbin/php-fpm -t   // 檢查配置 跟 nginx -t 檢查配置一樣

service php-fpm restart // 系統啟動php-fpm

查看狀態

ps -ef |grep nginx    ps -ef |grep php

然后正常訪問:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM