LNMP架构

发布于:2025-02-10 ⋅ 阅读:(73) ⋅ 点赞:(0)

一、概述

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