一、LNMP简介
LNMP是一套技术的组合,L=Linux、N=Nginx、M≈MySQL、P≈PHP
不仅仅包含这些,还有redis、ELK、zabbix、git、jenkins、kafka
1.LNMP工作流程
首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。
1.静态请求:请求静态文件的请求
静态文件:
1)上传时什么样子,查看时就是什么样子
2)html的页面都是静态的
2.动态请求:请求动态内容,带参数的请求
1)服务器上并不是真实存在的,需要都数据库等服务上去获取数据,组成的页面
当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过fastcgi协议转交给后端的PHP程序处理,具体如下图所示
2.访问流程
1.浏览器输入域名,浏览器拿着域名去本地hosts文件解析,然后再去DNS服务器解析
2.本地hosts文件或者DNS服务器解析域名为IP
3.浏览器去请求该IP对应的web服务器
4.浏览器请求nginx
5.nginx判断请求是动态请求还是静态请求
#静态请求
location / {
root /code;
index index.html;
}
location ~* \.(jpg|png|mp4)$ {
root /code/pic;
}
#动态请求
location ~* \.php$ {
fastcgi_pass 127.0.0.1:9000;
... ...
}
6.如果是静态请求,nginx直接返回内容
7.如果是动态内容,nginx会通过fastcgi协议找php-fpm管理进程
8.php-fpm管理进程会去下发工作给wrapper工作进程
9.wrapper工作进程判断是不是php文件
10.如果只是php文件,可以直接解析然后返回结果
11.如果还需要读取数据库,wrapper进程会去读取数据库数据,然后返回数据
12.数据流转:
1)请求:浏览器–>负载均衡–>nginx–>php-fpm–>wrapper–>mysql
2)响应:mysql–>wrappe–>php-fpm–>nginx–>负载均衡–>浏览器
二、LNMP搭建
1.官方源安装nginx
#配置官方源
[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
#安装nginx
[root@web01 ~]# yum install -y nginx
2.设置统一用户
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666
3.修改nginx配置文件
[root@web01 ~]# vim /etc/nginx/nginx.conf
user www;
4.启动服务并验证
[root@web01 ~]# systemctl start nginx
#设置开机自启
[root@web01 ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
#验证
[root@web01 ~]# ps -ef | grep nginx
5.安装php (7版本)
1)配置第三方源
[root@web01 ~]# vim /etc/yum.repos.d/php.repo
[php-webtatic]
name = PHP Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0
2)卸载旧版本
[root@web01 ~]# yum r