LNMP架构

一、概述

LNMP架构是一种常用于搭建动态网站的服务器架构组合,其名称由以下四个组件的首字母缩写组成:

  1. Linux:操作系统。Linux具有开源、稳定、安全、高性能等特点,是服务器领域广泛使用的操作系统。它为其他组件提供了运行环境和资源管理功能。

  2. Nginx:高性能的HTTP和反向代理服务器。Nginx以其高并发处理能力、低资源消耗和快速响应而闻名。它通常用于处理静态资源(如HTML、CSS、图片等)的请求,并可以作为反向代理服务器,将动态请求转发到后端服务器。

  3. MySQL(或MariaDB):关系型数据库管理系统。MySQL是目前最流行的开源数据库之一,用于存储网站的动态数据,如用户信息、文章内容、评论等。它支持SQL语言,能够高效地进行数据查询、插入、更新和删除操作。

  4. PHP(或Python、Perl等):服务器端脚本语言。PHP是专门为Web开发设计的脚本语言,用于处理动态内容。它可以从MySQL数据库中读取数据,并生成动态的HTML页面。PHP代码通常嵌入在HTML文档中,通过Nginx转发请求到PHP-FPM(PHP FastCGI Process Manager)进行处理。

二、工作流程

 

 1、用户通过http协议发起请求,首先会到达LNMP架构中的Nginx
 2、Nginx会根据用户请求进行判断,这个过程是有Location进行的
 3、判断用户请求的是静态页面,Nginx会直接处理并返回
 4、判断用户的请求是动态页面,Nginx会将请求交给fastcgi协议下发
 5、fastcgi会将请求交给php-fpm管理进程,php-fpm管理进程收到后会调用具体的工作进程warrap
 6、warrap进程会调用php程序进行解析,如果只是解析代码php直接返回
 7、如果有查询数据库操作,则由php连接数据库发起查询操作

三、LNMP架构优点

 (1)高性能:Nginx的高并发处理能力和PHP的高效执行能力,使得网站能够快速响应用户请求。

(2)灵活性:各组件均为开源软件,可以根据需求进行定制和优化。

(3)成本低:开源软件无需购买昂贵的许可证。

(4)安全性:Linux系统的安全性较高,同时MySQL和PHP也有丰富的安全机制。

 四、部署LNMP架构

 4.1、安装Linux操作系统-kylinv10系统(虚拟机安装为例)

4.1.1、创建虚拟机(10.0.0.200)

 

 

4.1.2、安装麒麟操作系统

将麒麟系统镜像插入到vmware虚拟机的drom
右键虚拟机->设置->使用ISO映像文件->浏览选择kylinsp3镜像

4.1.3、修改虚拟交换机信息

虚拟机----左上角编辑----虚拟网络编辑

4.2、安装Nginx服务

 4.2.1、安装Nginx官方扩展仓库

vim /etc/yum.repos.d/nginx.conf

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

4.2.2、安装Nginx服务并检查版本

yum -y install nginx

nginx -v

4.2.3、创建启动用户www

groupadd -g 666 www

useradd -u 666 -g 666 -M -s /sbin/nologin www

4.2.4、修改Nginx启动用户

vim /etc/nginx/nginx.conf

user  www;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;

4.2.5、启动Nginx并加入开机自启动 

systemctl start nginx

systemctl enable nginx 

4.3、安装PHP服务 

4.3.1、首先查看是否有PHP,如果有则卸载

rpm -qa | grep 'php-fpm' 

 4.3.2、安装PHP

yum -y install php php-bcmath php-cli php-common php-devel php-embedded php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo php-process php-xml php-json

4.3.3、修改PHP配置文件 

 vim /etc/php-fpm.d/www.conf

同步启动用户与Nginx保持一致 www用户
       24:user = www
       26:group = www
修改监听方式
       38:listen = 127.0.0.1:9000

4.3.4、启动PHP并加入开机自启动 

systemctl start php-fpm
systemctl enable php-fpm

4.3.5、检查PHP项目是否启动 

netstat -lntup

 Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1999/php-fpm: maste 

 4.4、安装MySQL服务

4.4.1、安装MySQL服务 

 yum -y install mariadb-server

4.4.2、启动MySQL服务 

systemctl start mariadb

systemctl enable mariadb 

4.4.4、配置数据库登录密码 

mysqladmin password 'lyx123.com' 

4.4.5、登录测试 

 mysql -uroot -plyx123.com

4.5、Nginx连接PHP 

4.5.1、编辑配置文件 

vim /etc/nginx/conf.d/php.conf

server {

      listen 80;

      server_name php.lyx.com;

      root /code;

   location / {

       index index.php index.html;

    }

   location ~ \.php$ {

       fastcgi_pass 127.0.0.1:9000;

       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

       include fastcgi_params;

    }

4.5.2、检查配置文件是否正确 

nginx -t 

4.5.3、写一个PHP文件测试一下是否可以正常连接 

 vim /code/index.php
<?php
        phpinfo();
?>

4.5.4、本地hosts解析 

 10.0.0.7  php.lyx.com

4.5.5、浏览器测试访问 

4.6、PHP连接数据库 

#需要在php的配置文件中写入数据库的IP+用户名+密码+端口可以测试连接数据库
cd /code/
vim mysql.php
<?php
    $servername = "localhost";
    $username = "root";
    $password = "lzy123.com";

    // 创建连接
    $conn = mysqli_connect($servername, $username, $password);

    // 检测连接
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    echo "小哥哥,php可以连接MySQL...";
?>

五、网站部署演练 (wordpress)

5.1、 编辑wordpress配置文件

vim /etc/nginx/wordpress.conf

server {

      listen 80;

      server_name www.wp.com;

      root /app/wp;

    location / {

      index index.php index.html;

   }

    location ~ \.php$ {

      fastcgi_pass 127.0.0.1:9000;

      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

      include fastcgi_params;

   }

5.2、检查配置文件是否正确 

nginx -t 

5.3、重启Nginx服务 

systemctl restart nginx 

5.4、创建代码目录

 mkdir -p /app/wp

5.5、修改代码目录文件属主和属组

chown -R www.www /app/wp

5.6、下载wordpress代码并解压 

wget https://cn.wordpress.org/wordpress-5.0.3-zh_CN.tar.gz
tar zxf wordpress-5.0.3-zh_CN.tar.gz

5.7、本地hosts解析 

10.0.0.200   www.wp.com 

5.8、浏览器测试访问 

六、 架构拆分

6.1、创建新的虚拟机(10.0.0.51) 

6.2、在新的虚拟机上安装MySQL数据库 

 yum -y install mariadb-server

6.3、开启数据库并加入开机自启动 

systemctl start mariadb

systemctl enable mariadb 

6.4、导出虚拟机(10.0.0.200)中的数据库数据 

mysqldump -uroot -plyx.com -A > /root/all.sql 

6.5、将导出的数据上传到虚拟机(10.0.0.51)中 

scp /root/all.sql root@10.0.0.51:/root/ 

6.6、在虚拟机(10.0.0.51)上将数据导入 

mysql -uroot < /root/all.sql 

6.7、重启数据库 

systemctl restart mariadb 

6.8、创建远程连接的普通用户

mysql -uroot -plyx123.com 

grant all on *.* to lyx@'%' identified by 'lyx123.com'; 

6.9、查看数据库数据 

show databases; 

7.0、在虚拟机(10.0.0.200)测试远程连接 

mysql -h  172.16.1.51 -ulyx -plyx123.com

7.1、修改业务信息代码 

7.2、停止虚拟机(10.0.0.200)中的数据库 

systemctl stop mariadb

七、小结

LNMP架构广泛应用于各种动态网站和Web应用的开发和部署,是目前Web开发领域非常流行的一种架构组合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/9747.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity3D】实现2D角色/怪物死亡消散粒子效果

核心&#xff1a;这是一个Unity粒子系统自带的一种功能&#xff0c;可将粒子生成控制在一个Texture图片网格范围内&#xff0c;并且粒子颜色会自动采样图片的像素点颜色&#xff0c;之后则是粒子编辑出消散效果。 Particle System1物体&#xff08;爆发式随机速度扩散10000个粒…

芯片AI深度实战:基础篇之langchain

基于ollama, langchain,可以构建一个自己的知识库&#xff0c;比如这个 Build Your Own RAG App: A Step-by-Step Guide to Setup LLM locally using Ollama, Python, and ChromaDB | HackerNoon 这是因为&#xff1a; 以上范例就实现了这样一个流程&#xff1a; 系列文章&…

mybatis(134/134)完结

一级缓存&#xff08;默认情况下开启&#xff09;同一个sqlsession中执行相同的查询语句走一级缓存 二级缓存 &#xff1a;同一个sqlsessionfactory&#xff0c;sqlsession关闭了才会将一级缓存提交到二级缓存中 外部编写的缓存 PageHelper插件&#xff1a;方便进行分页&#x…

C++,STL 简介:历史、组成、优势

文章目录 引言一、STL 的历史STL 的核心组成三、STL 的核心优势四、结语进一步学习资源&#xff1a; 引言 C 是一门强大且灵活的编程语言&#xff0c;但其真正的魅力之一在于其标准库——尤其是标准模板库&#xff08;Standard Template Library, STL&#xff09;。STL 提供了…

不背单词快捷键(不背单词键盘快捷键)

文章目录 不背单词快捷键 不背单词快捷键 ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ        ‌‍ᅟᅠ    …

EasyExcel写入和读取多个sheet

最近在工作中&#xff0c;作者频频接触到Excel处理&#xff0c;因此也对EasyExcel进行了一定的研究和学习&#xff0c;也曾困扰过如何处理多个sheet&#xff0c;因此此处分享给大家&#xff0c;希望能有所帮助 目录 1.依赖 2. Excel类 3.处理Excel读取和写入多个sheet 4. 执…

JavaScript函数中this的指向

总结&#xff1a;谁调用我&#xff0c;我就指向谁&#xff08;es6箭头函数不算&#xff09; 一、ES6之前 每一个函数内部都有一个关键字是 this &#xff0c;可以直接使用 重点&#xff1a; 函数内部的 this 只和函数的调用方式有关系&#xff0c;和函数的定义方式没有关系 …

【C语言】内存函数

一、前言 在C语言中有着常见的内存函数&#xff0c;他们可以对内存进行操作&#xff0c;即可以修改内存的内容等&#xff0c;下面我们来简略地学习一下 二、memcpy(内存复制) cpy是复制的意思&#xff0c;顾名思义&#xff0c;就是将一块指定大小的内存的字节逐一赋值到新的内…

fscan全家桶更新:fscan免杀版,可过360、火绒、微步云沙箱,其他的自行测试

前言 fscan全家桶更新&#xff1a;fscan免杀版&#xff0c;可过360、火绒、微步云沙箱&#xff0c;其他的自行测试 其他版本 FscanPlus&#xff1a;fscan的plus版本 fs&#xff1a;有免杀效果 fscan低版本&#xff1a;自己重新编译的适合低版本系统的fscan FscanParser&a…

中间件安全

一.中间件概述 1.中间件定义 介绍&#xff1a;中间件&#xff08;Middleware&#xff09;作为一种软件组件&#xff0c;在不同系统、应用程序或服务间扮演着数据与消息传递的关键角色。它常处于应用程序和操作系统之间&#xff0c;就像一座桥梁&#xff0c;负责不同应用程序间…

微服务入门(go)

微服务入门&#xff08;go&#xff09; 和单体服务对比&#xff1a;里面的服务仅仅用于某个特定的业务 一、领域驱动设计&#xff08;DDD&#xff09; 基本概念 领域和子域 领域&#xff1a;有范围的界限&#xff08;边界&#xff09; 子域&#xff1a;划分的小范围 核心域…

js小游戏---2048(附源代码)

一、游戏页面展示 开始游戏&#xff1a; 游戏结束&#xff1a; 二、游戏如何操作 通过监听键盘的操作&#xff0c;进行移动变化 键盘上下左右键控制页面中所有模块同时向键入的方向移动&#xff0c;如果有两块一样的方块&#xff0c;就进行合并&#xff0c;并且在键盘每操作…

ASP.NET代码审计 SQL注入篇(简单记录)

sql注入&#xff0c;全局搜索 Request QueryString ToString() select select * aspx是设计页面&#xff0c;而aspx.cs是类页面&#xff0c;也就是说设计页面用到的类信息在这个页面里面&#xff0c;其实就是把设计和实现分离开来。 源码 using System; using System.Collect…

【Rust自学】14.6. 安装二进制crate

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 14.6.1. 从cratea.io安装二进制crate 通过cargo_install命令可以从crates.io安装二进制crate。 这并不是为了替换系统包&#xff0c;它应…

C++中的类与对象(中)

在上一节中&#xff0c;我们初步了解了一下&#xff0c;C中的类&#xff0c;这一概念&#xff0c;这一节让我们进一步深入了解一下。 文章目录 目录 前言 一、类中的默认成员函数 1.1 构造函数 构造函数的特点&#xff1a; 1.2 析构函数 析构函数的特点&#xff1a; 1.3 …

机器人抓取与操作概述(深蓝)——1

工业机器人&#xff1a;① “臂”的形态 ② “手”的形态 ③ 视觉&#xff0c;力和触觉 1 机器人的不同形态 “臂”的形态 “手”的形态 2 常见的操作任务 操作&#xff1a;插入、推和滑 抓取&#xff1a;两指&#xff08;平行夹爪&#xff09;抓取、灵巧手抓取 落地-产…

指针的介绍3后

1.函数指针变量 1.1函数的地址 void test(int (*arr)[2]) {printf("zl_dfq\n"); } int main() {printf("%p\n", test);printf("%p\n", &test);return 0; } 由上面的程序运行可知&#xff1a; 函数名就是函数的地址 &函数名也可以拿到函…

基于Springboot的智能学习平台系统【附源码】

基于Springboot的智能学习平台系统 效果如下&#xff1a; 系统登陆页面 系统主页面 课程详情页面 论坛页面 考试页面 试卷管理页面 考试记录页面 错题本页面 研究背景 随着互联网技术的普及&#xff0c;人们探索知识的方式逐渐转向数字化平台。传统的教学方法通常局限于固定…

shiro学习五:使用springboot整合shiro。在前面学习四的基础上,增加shiro的缓存机制,源码讲解:认证缓存、授权缓存。

文章目录 前言1. 直接上代码最后在讲解1.1 新增的pom依赖1.2 RedisCache.java1.3 RedisCacheManager.java1.4 jwt的三个类1.5 ShiroConfig.java新增Bean 2. 源码讲解。2.1 shiro 缓存的代码流程。2.2 缓存流程2.2.1 认证和授权简述2.2.2 AuthenticatingRealm.getAuthentication…

网关登录校验

网关登录校验 单体架构时我们只需要完成一次用户登录、身份校验&#xff0c;就可以在所有业务中获取到用户信息。而微服务拆分后&#xff0c;每个微服务都独立部署&#xff0c;不再共享数据。也就意味着每个微服务都需要做登录校验&#xff0c;这显然不可取。 鉴权思路分析 …