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

相关推荐
凉、介7 分钟前
ARM 架构下 cache 一致性问题整理
linux·汇编·arm开发·学习·缓存·架构
一水鉴天1 小时前
为AI聊天工具添加一个知识系统 之135 详细设计之76 通用编程语言 之6
开发语言·人工智能·架构
m0_748257461 小时前
Linux系统编程:深入理解计算机软硬件体系和架构
linux·运维·架构
web150854159351 小时前
GPU 硬件原理架构(一)
架构
小天努力学java1 小时前
【软考-架构】9.2、摘要-签名-PKI-访问控制-DOS-欺骗技术
架构
一水鉴天1 小时前
为AI聊天工具添加一个知识系统 之136 详细设计之77 通用编程语言 之7
开发语言·人工智能·架构
美狐美颜sdk2 小时前
美颜SDK架构揭秘:人脸美型API的底层实现与优化策略
图像处理·人工智能·深度学习·架构·视频美颜sdk·美颜api
搞芯片的小呆鸟6 小时前
计算机中的架构
架构
Bruce_Liuxiaowei7 小时前
HarmonyOS Next~应用开发入门:从架构认知到HelloWorld实战
华为·架构·harmonyos
Dontla7 小时前
RAG检索增强生成(Retrieval-Augmented Generation)介绍(双模态架构:检索子系统、生成子系统)实现知识获取与内容生成的协同
架构