搭建安装LNMP环境保姆级教程+图解+LNMP脚本

一、LNMP 环境的使用场景

  1. 网站搭建

    • 无论是个人博客、企业官网还是电商平台等各种类型的网站,LNMP 环境都能提供稳定的运行支持。
    • 对于需要动态内容展示和数据库交互的网站尤为适用。
  2. Web 应用开发

    • 开发人员可以利用 LNMP 环境快速搭建开发服务器,进行应用的开发、测试和部署。
    • 支持各种流行的 Web 开发框架,如 Laravel、Django 等。
  3. 数据驱动的项目

    当项目需要大量的数据存储和管理时,MySQL 数据库可以高效地处理数据,而 LNMP 环境能确保数据的安全存储和快速访问。

二、LNMP 环境的优点

  1. 高性能

    • Nginx 作为高性能的 Web 服务器,能够处理大量的并发连接,相比传统的 Apache 服务器在性能上有显著提升。
    • PHP 和 MySQL 也经过了多年的优化,能够快速执行脚本和处理数据库查询。
  2. 稳定性高

    • 各个组件都经过了广泛的测试和使用,具有较高的稳定性。
    • 即使在高负载的情况下,也能保持稳定的运行,减少因服务器故障而导致的业务中断。
  3. 开源免费

    • LNMP 环境中的所有组件都是开源软件,用户可以免费使用和修改,降低了成本。
    • 同时,开源社区也提供了丰富的资源和支持,方便用户解决问题。
  4. 灵活性强

    • 用户可以根据自己的需求对各个组件进行定制和配置,满足不同的业务需求。
    • 可以轻松添加新的功能模块或扩展现有功能。

三、为什么要使用 LNMP

  1. 满足现代 Web 应用的需求

         随着互联网的发展,Web 应用的复杂性和用户需求不断增加,LNMP 环境能够提供强大的功能和性能来满足这些需求。
  2. 提高开发效率

         开发人员可以利用 LNMP 环境中的各种工具和框架,快速开发出高质量的 Web 应用。
  3. 降低成本

         开源免费的特性使得企业和个人可以在不花费大量资金的情况下搭建强大的 Web 服务器。
  4. 易于维护

         各个组件的独立性使得维护和升级更加容易,不会影响整个系统的稳定性。

四、LNMP 原理和工作原理

  1. 原理

    • LNMP 是由 Linux、Nginx、MySQL 和 PHP 四个组件组成的 Web 服务器环境。
    • Linux 作为操作系统,提供了稳定的运行环境和系统资源管理。
    • Nginx 作为 Web 服务器,负责接收客户端的请求,并将请求转发给 PHP 进行处理。
    • PHP 是一种服务器端脚本语言,用于生成动态内容,并与 MySQL 数据库进行交互。
    • MySQL 是一种关系型数据库管理系统,用于存储和管理数据。
  2. 工作原理

    • 当客户端发送一个 HTTP 请求到 Nginx 服务器时,Nginx 首先根据配置文件中的规则对请求进行处理。
    • 如果请求是静态文件,如图片、CSS、JavaScript 等,Nginx 直接从文件系统中读取文件并返回给客户端。
    • 如果请求是动态内容,如 PHP 脚本,Nginx 将请求转发给 PHP-FPM(PHP FastCGI Process Manager)。
    • PHP-FPM 接收到请求后,启动一个 PHP 解释器进程来执行 PHP 脚本。
    • PHP 脚本在执行过程中,如果需要与数据库进行交互,就会通过数据库连接库(如 mysqli、PDO 等)连接到 MySQL 数据库。
    • MySQL 数据库执行相应的 SQL 查询,并将结果返回给 PHP 脚本。
    • PHP 脚本处理完请求后,将生成的动态内容返回给 PHP-FPM。
    • PHP-FPM 将结果返回给 Nginx,Nginx 再将结果返回给客户端。

至此,我们可以根据LNMP的工作原理将LNMP环境搭建出来

为了后续实验能成功,先关闭Linux的防火墙及SELinux

systemctl stop firewalld

setenforce 0

一、创建L环境

L环境即是我们熟知的Linux环境,这里使用的是redhat系列的RockyLinux8.6版本的ISO

        1、下载镜像
                首页-北京大学开源镜像站 (pku.edu.cn)

2、通过虚拟机安装Linux环境
        点击新建虚拟机,默认典型;选择下载好的镜像文件。

        选择linux,版本选择 Red Hat Enterprise Linux 7 64位 (或者CentOS7 64位)

        设置虚拟机的名字,位置选择磁盘比较大的硬盘,建议最好不要放到系统盘

        磁盘默认20G就够用了 ,选择虚拟磁盘为单个文件

        自定义硬件,选择处理器为2核,内存根据需要可以改到4(方便安装系统快一些)

        开启虚拟机


        鼠标点击进去后,按键盘上键盘选择第一个,回车

        选择简体中文(在最下面)

        这4个地方需要修改下,先选择安装目的地

        建议选择自定义(不想弄可以直接点完成)

        选择标准分区,点+添加第一个分区

        第一个分区选择/boot,大小500mb(我一般给1024M)

        第二个分区选择swap,大小2GiB

        第三个分区选择/,大小为空(默认选择剩余的全部)

        分好区后,点击完成

        点击ROOT密码,输入两次密码(密码强度大小写字母+数字+符号10位以上)(任何密码都可以的其实)

        点击软件选择,选择最小安装后,点击完成。(建议右边全勾上,不勾也行)

        点击时间和日期,选择亚洲上海后,点击完成

        最后点击开始安装

        开始安装等待即可

        点击重启系统

        重启后输入账号密码

至此,L环境就创建好了

接下来创建N环境,N环境是Nginx,是一个中间件,最经常用的地方还是用来提供网站服务,除了网站也可以用在其他地方,比如代理之类的

二、创建N环境

        下载nginx,这里提供两种方法。一是源码安装(比较自由及可选功能点较多,需要网络安装依赖);二是定制包安装(RockyLinux是redhat系列,用的也是rpm包,直接yum安装就行)。这里我选择用源码安装,功能及版本都可以自选

https://nginx.org/en/download.html

yum -y install gcc make pcre-devel openssl-devel

tar -xf nginx-1.27.2.tar.gz

cd nginx-1.27.2

./configure

make

make install

cd /usr/local/nginx

ls

至此,N环境也已经创建安装结束

三、创建M环境

        下载数据库,同样也是两个选择。一是,Mysql数据库,优点是目前仍然是大量用户使用的首选。二是,mariadb数据库,Linux系统内置的,可以理解成是Mysql数据库的翻版。这里使用的是mariadb数据库

yum -y install mariadb mariadb-server mariadb-devel

systemctl start mariadb

至此,M环境创建安装结束

四、创建P环境

        p环境可以是python或者是php。两者都是非常优秀的后端实现动态的语言。这里选择php

yum -y install php php-fpm php-mysqlnd zlib-devel

至此,P环境创建安装结束。接下来还需要将LNMP相互关联起来。

五、关联LNMP

进入nginx配置文件更改配置

vi /usr/local/nginx/conf/nginx.conf

 将nginx配置文件的第一段更改成第二段的内容,然后保存并退出

#location ~ \.php$ {
#    root           html;
#    fastcgi_pass   127.0.0.1:9000;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;
#}





location ~ \.php$ {
    root           html;
    fastcgi_pass   unix:/run/php-fpm/www.sock;
    fastcgi_index  index.php;
#   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi.conf;
}

 修改php-fpm的配置文件,增加一个默认用户允许调用

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

 后面增加多一个nobody的用户,然后保存并退出

listen.acl_users = apache,nginx


listen.acl_users = apache,nginx,nobody

创建一个index.php的文件,简单写php代码,验证一下是否真的可以识别php。按照下列顺序依次复制进Linux中敲回车执行。php代码写入后保存并退出

vi /usr/local/nginx/html/index.php


<?php
echo "Hello! i am PHP。";
?>

 在Linux中依次输入以下命令开启php-fpm服务和nginx服务

systemctl start php-fpm

/usr/local/nginx/sbin/nginx

六、验证

打开浏览器,输入ip+index.php的组合。

脚本

#!/bin/bash
#搭建LNMP环境,实现脚本部署动静分离。询问用户想将nginx安装到什么目录,回车则表示默认位置

#定义函数
a(){
echo -e "\033[$1m"$2----------"\033[0m"
}

#判断用户权限
[ $USER != "root" ] && a "92" "不是管理员无法操作,请切换管理员账户!"

# 加载 /etc/os-release 文件中的变量
. /etc/os-release

if [ "$ID" == "centos" ]; then
    cd /etc/yum.repos.d
    rm -rf *
    # 使用 curl 下载文件
    curl -o CentOS-7-anon.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-anon.repo
    curl_retval=$?
    if [ $curl_retval -ne 0 ]; then
        a "31" "下载 CentOS-7-anon.repo 文件失败"
    else
        a "32" "文件下载成功"
    fi
    # 安装 wget 并将输出重定向到 /dev/null
    yum -y install wget &> /dev/null
fi

#返回根目录
cd /root

#关闭防火墙和SELinux,这里需要注意生产环境下的安全风险
a "31" "关闭防火墙和SELinux"
systemctl stop firewalld && systemctl disable firewalld &> /dev/null
setenforce 0
a "32" "成功关闭防火墙和SELinux"

#安装软件包,添加zlib-devel依赖
a "31" "安装软件和依赖包"
yum -y install wget gcc make pcre-devel openssl-devel mariadb mariadb-server mariadb-devel php php-fpm php-mysqlnd zlib-devel &> /dev/null
a "32" "成功安装软件和依赖包"

#安装nginx
a "31" "拉取nginx软件包"
wget https://nginx.org/download/nginx-1.27.2.tar.gz
a "31" "创建解压存放目录"
mkdir nginx/
a "31" "解压nginx到存放目录"
tar -zxf nginx-1.27.2.tar.gz -C nginx/ && cd nginx/nginx-1.27.2
read -p "请输入nginx的安装位置(回车默认安装在/usr/local/nginx)" x
x="${x:-/usr/local/nginx}"
a "31" "配置nginx"
./configure --prefix="${x}" &>/dev/null
make &>/dev/null
make install &>/dev/null
a "32" "nginx安装完毕"
a "31" "更改nginx配置文件"
sed -i '65,71s/#//' "${x}/conf/nginx.conf"
sed -i '69s/^/#/' "${x}/conf/nginx.conf"
sed -i '67s/127.0.0.1:9000/unix:\/run\/php-fpm\/www.sock/' "${x}/conf/nginx.conf"
sed -i '70s/fastcgi_params/fastcgi.conf/' "${x}/conf/nginx.conf"
a "32" "nginx配置文件更改成功"

#修改php-fpm配置文件
a "31" "增加php-fpm支持用户nobody"
sed -i '55s/apache,nginx/apache,nginx,nobody/' /etc/php-fpm.d/www.conf
a "32" "增加用户成功"

#增加权限
a "31" "增加${x}/html/权限为755"
chmod -R 755 "${x}/html/"

#添加php代码
a "31" "添加php代码"
cat << EOF > "${x}/html/index.php"
<?php
define('NGINX_PATH','${x}');
echo "i am php,in ". NGINX_PATH."/html/index.php";
?>
EOF

#重启服务
a "32" "重启服务"
"${x}/sbin/nginx"
systemctl restart php-fpm
systemctl start mariadb

#查询服务开启状态
a "32" "查询服务开启状态"
ss -ntulp | grep nginx
systemctl status php-fpm

#验证服务
a "93" "浏览器输入ip+index.php查看服务是否正常解析"
<think>好的,我现在需要帮用户解答关于LAMP和LNMP架构的定义及区别的问题。首先,我得回忆一下这两个架构的组成。LAMP代表的是Linux、Apache、MySQL、PHP,而LNMP则是Linux、Nginx、MySQL、PHP。所以核心区别应该是在Web服务器部分,一个是Apache,另一个是Nginx。 接下来,我需要详细分析它们的区别。根据引用[1],LNMP适合大规模高并发,而LAMP适合中小型应用。这可能是因为Nginx在处理静态资源和高并发时更高效,而Apache在动态内容处理上更稳定。另外,安装顺序不同,引用[3]提到LAMP的安装顺序是Linux、Apache、MySQL、PHP,而LNMP可能顺序类似,但用Nginx替换Apache。 资源消耗也是一个点,Nginx通常比Apache更轻量,引用[5]可能有相关信息。处理方式上,Apache用的是多进程或多线程,而Nginx是事件驱动,这影响并发能力,引用[2]或[5]可能提到。还有PHP的集成方式,引用[4]指出php-fpm在LNMP中是独立服务,而LAMP可能用mod_php模块。 应用场景方面,引用[1]提到LNMP适合高并发,LAMP适合中小型。需要结合用户的需求来判断哪种架构更适合他们。此外,扩展性方面两者都可以定制,但LNMP可能更容易扩展缓存组件如Redis。 在回答时,要确保结构清晰,分点说明组成和区别,并引用正确的来源。还要检查是否有遗漏的部分,比如性能分析或配置差异,但用户主要问的是定义和区别,所以保持重点。 最后,生成的相关问题需要围绕架构选择、性能对比、适用场景和优化方法,这样用户如果有进一步疑问可以自行探索。确保引用标记正确,比如引用[1]对应蓝易云的对比,引用[3]关于安装顺序,引用[4]关于php-fpm,引用[5]关于用户评价和资源消耗。 现在整理回答,确保每个部分都有引用支持,使用中文,行内公式用$...$,独立公式用$$...$$,但这里可能不需要数学公式。检查LaTeX语法是否正确,比如如果有公式的话,但问题可能不涉及数学表达式,所以主要关注文本结构。</think>### LAMP与LNMP架构的定义及区别 #### **一、架构定义** 1. **LAMP架构** 由四个核心组件组成: - **L**inux(操作系统) - **A**pache(Web服务器) - **M**ySQL/MariaDB(数据库) - **P**HP/Perl/Python(后端脚本语言) 其特点是**Apache通过模块(如`mod_php`)直接解析动态请求**,适合处理动态内容[^3]。 2. **LNMP架构** 核心组件为: - **L**inux(操作系统) - **N**ginx(Web服务器) - **M**ySQL/MariaDB(数据库) - **P**HP/Perl/Python(后端脚本语言) **Nginx负责处理静态资源**,动态请求通过`php-fpm`转发给PHP解释器,实现高并发处理[^4]。 --- #### **二、核心区别** | **对比项** | **LAMP** | **LNMP** | |------------------|-----------------------------------|-----------------------------------| | **Web服务器** | Apache(多进程/线程模型) | Nginx(事件驱动模型) | | **资源消耗** | 较高(尤其在高并发时) | 较低(轻量设计) | | **动态请求处理** | 通过`mod_php`模块直接解析 | 由`php-fpm`独立进程处理 | | **静态资源性能** | 一般(需优化模块如`mod_cache`) | 优异(原生支持高效静态文件处理) | | **适用场景** | 中小型网站、动态内容为主的业务[^1] | 高并发、大规模静态资源服务[^1] | --- #### **三、关键差异详解** 1. **Web服务器机制** - **Apache**:采用多进程/线程模型,每个请求独占一个线程,并发量高时资源消耗大[^3]。 - **Nginx**:基于事件驱动的异步非阻塞模型,单线程可处理数千连接,适合高并发场景[^2]。 2. **PHP集成方式** - LAMP中,PHP以模块形式嵌入Apache(`mod_php`),直接与Web服务器交互,但扩展性受限。 - LNMP中,PHP通过`php-fpm`(FastCGI进程管理器)独立运行,Nginx通过反向代理与其通信,灵活性更高[^4]。 3. **性能与扩展性** - LNMP的静态资源响应速度更快,且可通过缓存技术(如Redis)进一步优化[^5]。 - LAMP在动态内容处理上更稳定,适合需要复杂`.htaccess`配置的场景[^3]。 --- #### **四、如何选择架构?** - **选择LAMP**: 适用于中小型业务、需快速部署动态网站(如WordPress)、依赖Apache特有模块(如`.htaccess`)的场景[^1][^3]。 - **选择LNMP**: 适合高并发、静态资源密集(如图片/视频站点)、需灵活扩展的Web应用(如电商平台)[^1][^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zh&&Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值