@LNMP的架构体系

1|0LNMP

1|1什么是LNMP?

LNMP是一套技术的组合,L=Linux、N=Nginx、M~=MySQL、P~=PHP、(ES、redis、kafka、zookeeper....)

1|2LNMP工作方式

首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。 静态请求:请求静态文件或者html页面,服务器上存在的html文件 静态文件:上传时什么样子,访问时还是什么样子; 动态请求:请求的是动态内容,带参数的请求 动态页面不存在于服务器上,他可能是取数据库或者redis等地方取值拼凑成的页面 当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过fastcgi协议转交给后端的PHP程序处理

1|01.访问流程

1.浏览器发起请求,请求到达nginx; 2.nginx先判断请求是动态还是静态; #静态请求 location / { root /code; index index.html; } #动态请求 location ~* \.php$ { fastcgi_pass 127.0.0.1:9000; } 3.如果是静态请求,nginx直接返回 4.如果是动态请求,nginx会通过fastcgi协议去找php-fpm管理进程;
5.php-fpm管理进程会去调用或者下发工作给wrapper工作进程; 6.wrapper工作进程判断php内容是否可以直接返回内容; 7.如果只是php内容,wrapper工作进程直接解析,并返回结果; 8.如果还需要访问数据库,则wrapper会去请求数据库获取数据,再返回。 9.最后数据由, 数据库mysql->wrapper->php-fpm->nginx->http->浏览器。

1|3LNMP架构搭建

1|01.安装nginx

1|01)配置官方源

[root@web01 ~]# vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1

1|02)安装nginx

[root@web01 ~]# yum install -y nginx

1|03)配置nginx

[root@web01 ~]# vim /etc/nginx/nginx.conf user www;

1|04)创建用户

[root@web01 ~]# groupadd www -g 666 [root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

1|05)启动nginx,并加入开机自启

[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.

1|06)验证启动

[root@web01 ~]# ps -ef | grep nginx root 23769 1 0 11:26 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf www 23770 23769 0 11:26 ? 00:00:00 nginx: worker process root 23816 8453 0 11:27 pts/1 00:00:00 grep --color=auto nginx

1|02.安装php

1|01)配置php第三方源

[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

1|02)卸载已安装php

[root@web01 ~]# yum remove php-mysql-5.4 php php-fpm php-common

1|03)安装php 7.1版本

[root@web01 ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb
#yum安装会有报错 1.上传压缩包(yum缓存) [root@web01 ~]# cd /tmp/ [root@web01 tmp]# rz php.tar.gz 2.解压代码包 [root@web01 tmp]# tar xf php.tar.gz 3.安装本地rpm包 [root@web01 tmp]# yum localinstall -y *.rpm

1|04)配置php

[root@web01 ~]# vim /etc/php-fpm.d/www.conf user = www group = www

1|05)启动php

[root@web01 ~]# systemctl start php-fpm [root@web01 ~]# systemctl enable php-fpm Created symlink from /etc/systemd/system/multi-user.target.wants/php-fpm.service to /usr/lib/systemd/system/php-fpm.service.

1|06)验证启动

[root@web01 ~]# ps -ef | grep php root 24062 1 0 11:45 ? 00:00:00 php-fpm: master process (/etc/php-fpm.conf) www 24063 24062 0 11:45 ? 00:00:00 php-fpm: pool www www 24064 24062 0 11:45 ? 00:00:00 php-fpm: pool www www 24065 24062 0 11:45 ? 00:00:00 php-fpm: pool www www 24066 24062 0 11:45 ? 00:00:00 php-fpm: pool www www 24067 24062 0 11:45 ? 00:00:00 php-fpm: pool www root 24089 8453 0 11:46 pts/1 00:00:00 grep --color=auto php [root@web01 ~]#

1|03.安装mariadb

1|01)安装

[root@web01 ~]# yum install -y mariadb-server

1|02)启动

[root@web01 ~]# systemctl start mariadb [root@web01 ~]# systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

1|03)验证

[root@web01 ~]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 5.5.64-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) MariaDB [(none)]>

1|04.关联NP

1|01)配置nginx

[root@web01 conf.d]# vim php.conf server { listen 80; server_name www.php.com; location / { root /code; index index.html; } }

1|02)创建目录

[root@web01 ~]# mkdir /code [root@web01 ~]# cd /code [root@web01 ~]# chown -R www.www /code

1|03)上传作业代码

[root@web01 ~]# cd /code [root@web01 code]# rz kaoshi.zip [root@web01 code]# tar xf kaoshi.zip [root@web01 code]# vim /code/upload_file.php $wen="/code/upload";
#报错为413,因为上传文件过大,nginx默认上传文件大小为1m,超过1m就报413 413 Request Entity Too Large 解决方法: [root@web01 conf.d]# vim /etc/nginx/nginx.conf http { ... ... client_max_body_size 20m; ... ... } #报错为405,因为nginx服务没有办法解析动态请求,没有跟php做关联

1|04)配置nginx关联php

[root@web01 conf.d]# vim php.conf server { listen 80; server_name www.php.com; location / { root /code; index index.html; } location ~* \.php$ { fastcgi_pass 127.0.0.1:9000; #fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /code/$fastcgi_script_name; include fastcgi_params; } }

1|05)nginx关联php语法

1|01> fastcgi_pass
#语法 Syntax: fastcgi_pass address; Default: — Context: location, if in location fastcgi_pass 127.0.0.1:9000;
1|02> fastcgi_index
#语法 Syntax: fastcgi_index name; Default: — Context: http, server, location fastcgi_index index.php
1|03>fastcgi_param
#语法 Syntax: fastcgi_param parameter value [if_not_empty]; Default: — Context: http, server, location #语法模块 开始定义(标准格式)站点目录 php文件名字 fastcgi_param SCRIPT_FILENAME /code/$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

1|06)php上传文件限制

[root@web01 ~]# vim /etc/php.ini #默认post请求字符串内容不超过8m post_max_size = 20M #默认上传文件大小不超过2m upload_max_filesize = 20M [root@web01 ~]# systemctl restart php-fpm

__EOF__

本文作者ଲ小何才露煎煎饺
本文链接https://www.cnblogs.com/zeny/p/15121601.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ଲ小何才露煎煎饺  阅读(38)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示