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_rootfastcgi_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_rootfastcgi_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开发领域非常流行的一种架构组合。

相关推荐
bobuddy1 小时前
射频收发机架构简介
架构·射频工程
桌面运维家2 小时前
vDisk考试环境IO性能怎么优化?VOI架构实战指南
架构
一个骇客3 小时前
让你的数据成为“操作日志”和“模型饲料”:事件溯源、CQRS与DataFrame漫谈
架构
鹏北海-RemHusband4 小时前
从零到一:基于 micro-app 的企业级微前端模板完整实现指南
前端·微服务·架构
2的n次方_6 小时前
Runtime 内存管理深化:推理批处理下的内存复用与生命周期精细控制
c语言·网络·架构
前端市界7 小时前
用 React 手搓一个 3D 翻页书籍组件,呼吸海浪式翻页,交互体验带感!
前端·架构·github
文艺理科生7 小时前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
前端·后端·架构
C澒7 小时前
Vue 项目渐进式迁移 React:组件库接入与跨框架协同技术方案
前端·vue.js·react.js·架构·系统架构
消失的旧时光-19438 小时前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed
L543414469 小时前
告别代码堆砌匠厂架构让你的系统吞吐量翻倍提升
大数据·人工智能·架构·自动化·rpa