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

相关推荐
Wang's Blog20 分钟前
Monorepo架构: 项目管理模式对比与考量
架构·monorepo
链上Sniper1 小时前
高并发区块链系统实战:从架构设计到性能优化
开发语言·网络·python·性能优化·架构·区块链·php
链上Sniper2 小时前
NFT 市场开发:基于 Ethereum 和 IPFS 构建去中心化平台
开发语言·网络·架构·去中心化·区块链·php
链上Sniper2 小时前
区块链跨链通信:使用 Cosmos SDK 实现链间互操作
开发语言·网络·架构·区块链·php
gs801403 小时前
12306高并发计算架构揭秘:Apache Geode 客户端接入与实践
架构·apache
GISer_Jing5 小时前
Monorepo 详解:现代前端工程的架构革命
前端·javascript·架构
白总Server6 小时前
Golang 依赖注入:构建松耦合架构的关键技术
linux·运维·服务器·macos·架构·golang·xcode
慌糖9 小时前
由docker引入架构简单展开说说技术栈学习之路
docker·容器·架构
XMAIPC_Robot13 小时前
基于 ZYNQ UltraScale+ OV5640的高速图像传输系统设计,支持国产替代
linux·数码相机·fpga开发·架构·边缘计算
weixin_3077791313 小时前
Neo4j 数据可视化与洞察获取:原理、技术与实践指南
信息可视化·架构·数据分析·neo4j·etl