实现LNP基于fastcgi模式
一,配置前端nginx,web服务器
1,修改nginx主配置文件,添加如下内容
server {
listen 80; #监听端口
root /nginx/html/; #主网页路径
server_name www.a.com; #网站名
location / {
fastcgi_pass 192.168.68.17:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params; #指定fastcgi相关的所有参数
}
}
指令解析:
fastcgi_pass: #fastcgi程序所在主机,可用位置:location, if in location
fastcgi_index:fastcgi默认的主页资源
fastcgi_param:指定php页面的存放路径,"注意:如果fastcgi是在远程主机上那么这个指定的路径就必须是远程主机的路径",$fastcgi_script_name该变量所指的是用户输入的php页面的文件
include:包含的意思
2,重启nginx服务
systemctl restart nginx
二, 配置fastcgi 服务器
1,安装php-fpm软件包
yum install php-fpm
2,修改php-fpm配置文件,注意:如若fastcgi程序跟nginx,web服务器在同一台主机该配置不需要修改
vim /etc/php-fpm.d/www.conf
该如下两行配置
listen = 127.0.0.1:9000 -->listen = 9000 #表示监听9000端口
#listen.allowed_clients = 127.0.0.1 #这一行的意思是只允许本机访问fastcgi程序,将这一行注释掉就是允许所有人访问
4,根据前端的nginx服务器指定的路径添加php测试页面
1,创建存放php页面目录
mkdir /data/php/
2,编写php页面文件
vim /data/php/index.php
<?php
phpinfo();
?>
#该页面就是显示一下php相关信息
3,启动php-fpm服务
systemctl start php-fpm
4,查看9000端口是否开始
ss -ntl|grep 9000
LISTEN 0 128 *:9000 *:*
三,访问测试出现如下页面表示成功
通过访问指定URL,获取fastcgi服务器php状态信息
一,配前端web服务器 1,在前端web服务器,添加如下配置
location ~* ^/(status|ping)$ {
include fastcgi_params;
fastcgi_pass 192.168.68.17:9000; #指定后端服务器的ip地址即fastcgi程序监听端口
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
2,重启nginx,web服务器
systemctl restart nginx
二,配置后端fastcgi服务器 1,修改fastcgi主配置文件(/etc/php-fpm.d/www.conf )
vim /etc/php-fpm.d/www.conf
将下面的两行配置取消注释
pm.status_path = /status
ping.path = /ping
"注意:这两项必须是跟上面的location定义的URL相同!!这两行的作用就是的当客户端访问URL是status,将显示php状态信息,当访问ping时返回pong,"
2,重启php-fpm程序
systemctl restart php-fpm
3,访问测试
[root@centos6 ~]# curl www.a.com/status
pool: www
process manager: dynamic
start time: 26/Mar/2018:10:39:52 +0800
start since: 148
accepted conn: 3
listen queue: 0
max listen queue: 0
listen queue len: 128
idle processes: 4
active processes: 1
total processes: 5
max active processes: 1
max children reached: 0
slow requests: 0
[root@centos6 ~]# curl www.a.com/ping
pong
在前端web服务器中开启fastcgi,缓存功能
相关模块ngx_http_fastcgi_module
一, 相关定义fastcgi缓存配置参数
"注意:定义缓存参数只能在http语句块中定义!!!!"
语法:fastcgi_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
指令解析:
缓存位置为磁盘上的文件系统
path
磁盘path路径中用于缓存数据的缓存空间上限
max_size=size
缓存目录的层级数量,以及每一级的目录数量 levels=ONE:TWO:THREE
levels=levels:
示例:leves=1:2:2
k/v映射的内存空间的名称及大小
keys_zone=name:size
非活动时长,超过该时间清除
inactive=time
二,调用缓存功能相关配置
调用指定的缓存空间来缓存数据 可用位置:http,server, location
fastcgi_cache zone | off;
定义用作缓存项的key的字符串
fastcgi_cache_key string;
示例:fastcgi_cache_key $request_rui;
"该示例表示使用用户请求URL的hash值当作key"
为哪些请求方法使用缓存
fastcgi_cache_methods GET | HEAD | POST ...;
缓存空间中的缓存项在inactive定义的非活动时间内至少要被访问到 此处所指定的次数方可被认作活动项
fastcgi_cache_min_uses number;
收到后端服务器响应后,fastcgi服务器是否关闭连接,建议启用长连接
fastcgi_keep_conn on | off;
不同的响应码各自的缓存时长
fastcgi_cache_valid [code ...] time;
三, 开启缓存功能,配置如下:注意下面这些操作都是在前端web服务器上操作
1,在http语句块中定义缓存功能
vim /etc/nginx/nginx.conf
http {
...
fastcgi_cache_path /var/cache/nginx/fcgi_cache levels=1:2:1 keys_zone=fcgicache:20m inactive=120s max_size=1g;
...
}
2,上面定义的存放缓存的目录路径需要手工创建
mkdir /var/cache/nginx/fcgi_cache
当用户访问时该目录会生成一些临时文件
[root@centos7 ~]# tree /var/cache/nginx/fcgi_cache
/var/cache/nginx/fcgi_cache
└── 1
└── af
└── 5
└── e251273eb74a8ee3f661a7af00915af1
3 directories, 1 file
3,调用缓存功能
server {
......
location ~* \.php$ {
fastcgi_pass 192.168.68.17:9000;
fastcgi_index index.php; #默认php页面
fastcgi_param SCRIPT_FILENAME /data/php$fastcgi_script_name;
include fastcgi_params;
fastcgi_cache fcgicache; #调用缓存功能,fcgicache是"keys_zone=定义的名字
fastcgi_cache_key $request_uri;"
fastcgi_cache_valid 200 302 10m; #200,302响应码缓存时间10分钟
fastcgi_cache_valid 301 1h; #301相应代码缓存一小时
fastcgi_cache_valid any 1m; #其他响应码缓存1分钟
...
}
该配置的的作用就是当客户端访问带有php后缀的页面将触发缓存功能