LNMP环境部署笔记

一、LNMP架构概述

1.1 什么是LNMP

LNMP是指一组通常组合在一起使用的开源软件的缩写,分别代表:

  • L:Linux操作系统

  • N:Nginx Web服务器

  • M:MySQL/MariaDB数据库

  • P:PHP编程语言

这是目前互联网上非常流行的一种网站服务器架构,特别适用于中小型网站服务。

1.2 LNMP工作原理

LNMP架构中各个组件协同工作的流程如下:

  1. 请求传递:用户发送HTTP请求,首先到达Nginx

  2. 请求分发:Nginx作为前端服务器,负责处理静态资源(HTML、图片、CSS等);如果是PHP动态页面请求,Nginx会将请求通过FastCGI协议转发给PHP-FPM处理

  3. PHP处理:PHP-FPM接收请求,执行PHP代码,如需数据库交互则连接MySQL

  4. 数据库交互:MySQL执行SQL查询,将结果返回给PHP

  5. 响应返回:PHP将处理结果返回给Nginx,Nginx组合成完整HTTP响应返回给用户

与LAMP的区别:在LAMP中,PHP是作为Apache的模块运行;而在LNMP中,PHP是一个独立服务(PHP-FPM),Nginx通过FastCGI与PHP-FPM通信。

二、环境准备

2.1 系统要求

  • 操作系统:Linux(本文以Ubuntu 22.04/24.04为例)

  • 硬件建议:内存不低于2 GiB以保证流畅体验

  • 公网IP:确保服务器有公网IP或已绑定弹性IP

2.2 安全组/防火墙配置

在云服务器控制台的安全组中添加入方向规则,允许以下端口:

  • 80端口:HTTP访问

  • 443端口:HTTPS访问(如需)

  • 22端口:SSH连接

2.3 更新系统

bash

复制代码
# Ubuntu/Debian系统
sudo apt update -y && sudo apt upgrade -y

三、安装Nginx

3.1 通过APT安装

bash

复制代码
# 安装Nginx
sudo apt install -y nginx

# 启动Nginx并设置开机自启
sudo systemctl enable --now nginx

# 查看Nginx版本
sudo nginx -v

3.2 验证安装

bash

复制代码
# 本地测试
curl http://127.0.0.1

如果看到Nginx欢迎页面的HTML代码,说明安装成功。

3.3 通过浏览器测试

在浏览器中访问服务器公网IP,应看到Nginx欢迎页面。

四、安装MySQL

4.1 安装MySQL

bash

复制代码
# Ubuntu 20.04及以上版本默认安装MySQL 8.0
sudo apt install -y mysql-server

# 查看MySQL版本
sudo mysql -V

4.2 启动MySQL

bash

复制代码
sudo systemctl enable --now mysql

4.3 MySQL安全配置

运行安全强化脚本,建议按照提示完成以下配置:

bash

复制代码
sudo mysql_secure_installation

配置选项:

  • 设置root密码:建议设置强密码(大小写字母+数字+特殊符号,长度≥12)

  • 移除匿名用户:输入 Y

  • 禁止root远程登录:输入 Y

  • 删除测试数据库:输入 Y

  • 重载权限表:输入 Y

4.4 设置/修改root密码

Ubuntu系统MySQL默认使用auth_socket认证,需手动设置密码:

bash

复制代码
# 首次登录MySQL(无需密码)
sudo mysql -u root

# 修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '你的新密码';
FLUSH PRIVILEGES;
EXIT;

# 之后登录需要使用密码
mysql -u root -p

五、安装PHP

5.1 安装PHP及扩展

bash

复制代码
# 安装PHP-FPM和MySQL扩展
sudo apt install -y php-fpm php-mysql

# 如需更多扩展,可一并安装
sudo apt install -y php-curl php-gd php-mbstring php-xml php-zip

5.2 查看PHP版本

bash

复制代码
php -v

5.3 启动PHP-FPM

bash

复制代码
# 启动PHP-FPM(版本号根据实际安装版本调整)
sudo systemctl enable --now php8.1-fpm

# 查看PHP-FPM状态
sudo systemctl status php8.1-fpm

六、配置Nginx支持PHP

6.1 修改Nginx默认配置文件

bash

复制代码
sudo vim /etc/nginx/sites-available/default

6.2 配置文件内容

将配置文件修改为以下内容:

nginx

复制代码
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    
    # 网站根目录
    root /var/www/html;
    
    # 默认首页文件(将index.php放在最前面)
    index index.php index.html index.htm index.nginx-debian.html;
    
    server_name _;
    
    location / {
        try_files $uri $uri/ =404;
    }
    
    # 处理PHP请求
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    
    # 禁止访问.ht文件
    location ~ /\.ht {
        deny all;
    }
}

6.3 重启Nginx

bash

复制代码
# 测试配置语法
sudo nginx -t

# 重启Nginx
sudo systemctl restart nginx

七、测试LNMP环境

7.1 创建PHP测试文件

bash

复制代码
sudo vim /var/www/html/info.php

添加以下内容:

php

复制代码
<?php
phpinfo();
?>

7.2 通过浏览器测试

在浏览器中访问 http://你的服务器IP/info.php,如果能看到PHP信息页面,说明LNMP环境搭建成功。

7.3 测试数据库连接

创建测试文件:

bash

复制代码
sudo vim /var/www/html/test_db.php

添加以下内容(替换密码为你的MySQL密码):

php

复制代码
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "你的MySQL密码";

$conn = new mysqli($servername, $username, $password);

if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "MySQL连接成功\n";

$conn->close();
?>

访问 http://你的服务器IP/test_db.php,如果显示"MySQL连接成功",说明PHP与MySQL通信正常。

相关推荐
Li_RuiQi13 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
Li_RuiQi17 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
He BianGu17 小时前
【笔记】C# 中BindingFlags的详细作用
笔记·c#
AI视觉网奇18 小时前
turtle 入门教程笔记
笔记
跨知易知识产权18 小时前
美国专利确权是什么,和专利诉讼有什么不一样?
笔记
杨逢昌工厂6S管理18 小时前
126-杨逢昌6S三环体系:越做越乱的现场熵增机理与基准化治理——一线现场诊断笔记
经验分享·笔记·职场和发展·学习方法
悟道书生18 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
陈哈哈111119 小时前
折腾了半天,总算把 Vim 9.2 装明白了
笔记
陈哈哈111119 小时前
折腾了半天,总算把 OpenGL 的开发环境给装明白了
笔记
深圳老胡20 小时前
STM32F103 硬件 SPI 与软件 IO 模拟 SPI 最高速度差异详解
笔记·stm32·单片机·代码规范·1024程序员节