以前是裝的集成環境,沒有想到裝完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

然后正常訪問:

