以前都是用lnmp一键安装的lnmp环境。
今天同学说他分开部署nginx+php-fpm出现了问题,总是报502,正好我也没试验过,于是自己也做了一遍,也遇到些问题,记下来以备以后用到。
node1: 192.168.2.11 nginx+mysql
node2: 192.168.2.12 php-fpm
其中node1和node2前期都安装了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(被网上一个坑爹的教程害的)
此外,还要在node1和node2上部署上相同的网站源文件。
在node2上通过scp将node1上的wordpress网站文件拷贝过来
1
2
|
# scp -rproot@192.168.2.11:/home/wwwroot/default /home/wwwroot/default
# chown www.www /home/wwwroot/default
|
要注意的是:node1的运行nginx的用户id在node2上也要存在,并且id还要相同,否则可能访问时候报错。
在node1启动nginx,在node2上启动php-fpm。
在浏览器访问http://192.168.2.11即可进入wordpress的安装界面。输入数据库的相关信息即可
这里没有考虑文件(及图片)的存储,实际生产环境中,应该使用共享存储NFS或者分布式存储。
本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1794937,如需转载请自行联系原作者