nginx+php-fpm獨立節點的部署wordpress筆記

餘二五發表於2017-11-21

以前都是用lnmp一鍵安裝的lnmp環境。

今天同學說他分開部署nginx+php-fpm出現了問題,總是報502,正好我也沒試驗過,於是自己也做了一遍,也遇到些問題,記下來以備以後用到。


node1: 192.168.2.11  nginx+mysql

node2: 192.168.2.12  php-fpm

其中node1node2前期都安裝了lnmp一鍵安裝包。

因此,安裝過程就不描述了。

直接開始修改引數,操作如下。

 

node1上的MySQL的配置:

安裝過程略過,說下授權的配置

1
2
3
>create database wp;
>grant all on wp.* to `wp`@`192.168.2.%` identified by `123456`;
>flush privileges;

 

node1上的nginx的配置檔案如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
server
    {
        listen 80 default_server;
        server_name 192.168.2.11;
        index index.html index.htm index.php;
        root /home/wwwroot/default;
  
        #error_page  404   /404.html;
  
       location ~.php$ {
           root /home/wwwroot/default;
           fastcgi_pass 192.168.2.12:9000;
           fastcgi_index index.php;
           includefastcgi.conf;   注意這裡我沒有用fastcgi_params,因為fastcgi_params裡面缺少一行檔案
       }
  
        location ~.*.(gif|jpg|jpeg|png|bmp|swf)$
        {
            expires      30d;
        }
  
        location ~ .*.(js|css)?$
        {
            expires      12h;
        }
  
        location ~ /.
        {
            deny all;
        }
  
        access_log /home/wwwlogs/access.log  access;
    }

 

另外,fastcgi.conf內容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
fastcgi_param SCRIPT_FILENAME   $document_root$fastcgi_script_name;   注意這行,fastcgi_param比fastcgi.conf就是缺少了這行
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;
  
fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;
  
fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;
  
fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;
  
#PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

 

 

node2上的php-fpm的配置檔案如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[global]
pid= /usr/local/php/var/run/php-fpm.pid
error_log= /usr/local/php/var/log/php-fpm.log
log_level= notice
  
[www]
listen = 192.168.2.12:9000
listen.backlog= -1
listen.allowed_clients = 192.168.2.11   如果註釋掉這行就是表示允許全部IP連線到php-fpm
listen.owner= www
listen.group= www
listen.mode= 0666
user= www
group= www
pm= dynamic
pm.max_children= 10
pm.start_servers= 2
pm.min_spare_servers= 1
pm.max_spare_servers= 6
pm.max_requests = 1000       這個引數設定太小的話,可能會引起間歇性502錯誤
request_terminate_timeout= 100
request_slowlog_timeout= 0
slowlog= var/log/slow.log

 朋友網站報502,就是因為上面的listen.allowed_clients引數被他設定成了any(被網上一個坑爹的教程害的)

 

 

此外,還要在node1node2上部署上相同的網站原始檔。

node2上通過scpnode1上的wordpress網站檔案拷貝過來

1
2
# scp -rproot@192.168.2.11:/home/wwwroot/default  /home/wwwroot/default
# chown  www.www /home/wwwroot/default


要注意的是:node1的執行nginx的使用者idnode2上也要存在,並且id還要相同,否則可能訪問時候報錯。

 

node1啟動nginx,在node2上啟動php-fpm


在瀏覽器訪問http://192.168.2.11即可進入wordpress的安裝介面。輸入資料庫的相關資訊即可




這裡沒有考慮檔案(及圖片)的儲存,實際生產環境中,應該使用共享儲存NFS或者分散式儲存。

本文轉自 lirulei90 51CTO部落格,原文連結:http://blog.51cto.com/lee90/1794937,如需轉載請自行聯絡原作者


相關文章