Nginx

如何設置 Nginx 和 PHP-FPM 套接字

  • September 15, 2017

這是我在錯誤地發布給超級使用者和 Stack Overflow 之後第三次嘗試發布這個問題。希望現在這是正確的地方!

我已經接管了公司的網路託管,這是一個執行亞馬遜自己版本的 Linux 和 Nginx 的 AWS 伺服器。

我對 Nginx 沒有太多經驗,但我需要創建一個執行該站點的開發版本的子域。已經有一個現有的“暫存”虛擬主機,但是它連結到主站點數據庫,因此無用。

我已將 staging conf 文件從 /etc/nginx/conf.d/staging.conf 複製到 /etc/nginx/conf.d/dev.conf 並將文件中的所有“staging”實例更改為“dev”。

這是文件的樣子:

upstream php-dev-backend {
   server unix:/tmp/php-fpm-dev.sock weight=1;
}

server {
   server_name dev.groundlevel.co.uk;
   listen 80;

   root /var/www/vhosts/dev.groundlevel.co.uk/web-root;

   index index.html index.htm index.php;
   access_log /var/log/nginx/dev.groundlevel.co.uk_access_log;
   error_log /var/log/nginx/dev.groundlevel.co.uk_error_log;
   location @handler {
       rewrite / /index.php;
   }
location / {
   index index.php index.html;
       try_files $uri $uri/ @handler;
       expires 30d;
   }

include magento_security;

include fastcgi_params;
location ~ \.php$ {
       if (!-e $request_filename) {
            rewrite / /index.php last;
       }
       include fastcgi_params;
       fastcgi_pass php-dev-backend;
       fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
   }
}

但是,這會導致 502 錯誤,因為 /tmp/php-fpm-dev.sock 不存在,我不知道如何創建它。或者,如果我可以將 conf 文件更改為不需要套接字。

有人可以解釋如何讓套接字執行嗎?謝謝!

如果您執行的 php-fpm 不超過一個,請將您的虛擬主機指向同一個 php-fpm 套接字。

檢查 PHP-FPM 是否已經在執行service php-fpm statusif not start service with service php-fpm start(並檢查日誌文件是否存在可能的錯誤)。在啟動執行時啟用 PHP-FPMchkconfig php-fpm on

引用自:https://serverfault.com/questions/873842