![[LEMP搭建] Ubuntu 22.04 从零搭建 LEMP 环境(Nginx/MySQL/PHP)保姆级教程](https://file.hostol.com/wp-content/uploads/2025/05/LEMP.png)
嘿,各位Linux服务器的爱好者和未来的站长们!当你拿到一台崭新的 Ubuntu 22.04 服务器,是不是感觉就像拿到了一块充满无限可能的“数字画布”,迫不及待地想在上面描绘出自己的精彩网站或应用?要在这块“画布”上施展拳脚,你首先需要搭建一个坚实可靠的“画架”和准备好“颜料”——也就是一个稳定高效的 Web 服务器运行环境。而在 Linux 世界里,LEMP 技术栈无疑是最受欢迎、也是性能最出色的“画材组合”之一!
“LEMP?听起来像某种柠檬味的甜点?”哈哈,差不多啦!LEMP 其实是几个核心软件名称的首字母缩写:
- Linux: 我们的“画布”——稳定、开源的操作系统。
- Engine-X (通常发音为 Nginx): 我们的“画框”和“展厅入口”——一个高性能、轻量级的 Web 服务器,负责接收用户的访问请求,并将他们引导到正确的内容。
- MySQL (或者它的好兄弟 MariaDB): 我们的“颜料仓库”——强大的关系型数据库,用来存储网站的各种动态数据,比如用户信息、文章内容、产品列表等。
- PHP: 我们的“神奇画笔”和“调色板”——一种流行的服务器端脚本语言,用来处理动态逻辑、与数据库交互、生成最终展示给用户的网页内容。我们通常会使用 PHP-FPM (FastCGI Process Manager) 来让 Nginx 和 PHP 高效地“合作”。
把这四位“大侠”请到你的 Ubuntu 22.04 服务器上,并让它们和谐地协同工作,你就拥有了一个能承载各种动态网站(比如 WordPress 博客、Discuz! 论坛、或者你自己开发的 PHP 应用)的强大平台了!
“听起来很棒,但我对 Linux 命令不太熟,能搞定吗?” 别担心!这篇教程就是为你这样的朋友准备的“保姆级”指南。我会像牵着你的手一样,从零开始,一步一步、一个命令一个命令地带你完成整个 LEMP 环境的搭建和基础配置。不需要你有多高深的技术背景,只要你有一点点耐心和探索精神,跟着我做,保证你能成功!准备好了吗?让我们开始给你的 Ubuntu 22.04 服务器装上这套强大的“LEMP 引擎”吧!
准备工作:在“开工”之前,你需要确保什么?
在我们开始敲命令之前,先确认一下你的“施工现场”是否准备就绪:
- 一台运行 Ubuntu 22.04 的服务器: 这可以是任何来源的 VPS、云服务器,甚至是本地虚拟机。确保你能通过 SSH 远程登录到它。
- 拥有 `sudo` 或 `root` 权限: 安装软件和修改系统配置都需要管理员权限。本教程中的命令通常会使用 `sudo`。
- 基础的 Linux 命令行操作知识: 你至少需要知道如何在终端里输入命令、按回车执行、以及简单的文件目录导航(比如 `cd`)。不用怕,我会把每个命令都写清楚。
- (可选但推荐)一个域名: 如果你打算最终用域名访问你的网站,最好提前准备好一个域名,并将其 DNS A 记录指向你服务器的公网 IP 地址。这在后续配置 Nginx 虚拟主机和 SSL 证书时会用到。如果暂时没有,用服务器 IP 地址访问也行。
- 一点点耐心和时间: 虽然我会尽量写得详细,但整个过程还是需要你集中精力跟着操作,可能需要半小时到一小时左右。
都准备好了?那我们正式开工!
第一步:更新你的“工具箱”(系统软件包更新)
拿到一台新服务器,第一件要做的事情,就像拿到新手机要先检查系统更新一样,就是把服务器上所有的软件包都更新到最新版本。这样做的好处是:
- 获取最新的安全补丁,堵上已知的安全漏洞。
- 确保我们接下来安装的软件能基于一个最新的、稳定的基础环境。
- 更新本地的软件包列表信息。
打开你的服务器终端,执行以下两条命令:
[提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
sudo apt update
sudo apt upgrade -y
sudo apt update
: 这条命令会从 Ubuntu 的官方软件源同步最新的软件包列表信息到你的服务器上。它不会真的安装或升级任何软件,只是“刷新一下菜单”。sudo apt upgrade -y
: 这条命令会根据上一步获取到的最新列表,将你服务器上所有已安装的软件包升级到它们的最新版本。-y
参数表示自动确认所有提示,省去你手动输入 Y 的麻烦。
这个过程可能需要几分钟,取决于你服务器的网络速度和需要更新的包有多少。耐心等待它完成。
第二步:安装 Nginx – 网站的“迎宾员”与“交通指挥”
系统更新完毕,我们来安装 LEMP 中的“E”——Nginx (发音 Engine-X)。Nginx 是一款高性能、轻量级的 Web 服务器软件,它也常被用作反向代理、负载均衡器和 HTTP 缓存。在我们的 LEMP 环境中,它主要负责接收来自用户浏览器的 HTTP/HTTPS 请求,并将静态内容(如 HTML, CSS, JS, 图片)直接返回给用户,或者将动态内容的请求(如 PHP 脚本)转发给 PHP-FPM 处理。
你可以把它想象成你网站的“迎宾员”和“交通指挥”,它效率高、反应快,能把客人的请求迅速导向正确的处理部门。
- 安装 Nginx: Ubuntu 的官方软件源里通常包含了稳定版本的 Nginx,安装非常简单: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
sudo apt install nginx -y
- 调整防火墙设置 (如果已启用 UFW): 如果你之前已经启用了 UFW 防火墙(Ubuntu 默认的防火墙管理工具),你需要允许 HTTP (80端口) 和 HTTPS (443端口) 的流量通过。Nginx 在安装时通常会向 UFW 注册几个应用配置文件,方便我们直接使用: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
sudo ufw app list # 查看可用的应用配置 sudo ufw allow 'Nginx Full' # 允许 HTTP 和 HTTPS 流量 # 或者,如果你只想先开 HTTP: # sudo ufw allow 'Nginx HTTP' sudo ufw status # 查看防火墙状态和规则
如果 UFW 未启用,你可以暂时跳过这一步,或者参考我们之前的防火墙配置教程(请替换为实际链接)先启用并配置好 SSH 端口。 - 验证 Nginx 是否成功运行: 检查 Nginx 服务的状态: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
sudo systemctl status nginx
你应该能看到状态是active (running)
,并且有一些绿色的提示。如果不是,你需要查看日志排查问题。 然后,在你的电脑浏览器中,直接访问你服务器的公网 IP 地址 (例如http://YOUR_SERVER_IP
)。如果一切正常,你应该能看到 Nginx 的默认欢迎页面!这表示 Nginx 已经成功安装并开始工作了。
Nginx 这个“迎宾员”已经就位了!
第三步:安装 MySQL (或 MariaDB) – 数据的“大管家”
接下来,我们要安装 LEMP 中的“M”——MySQL。MySQL 是世界上最流行的开源关系型数据库管理系统,用于存储和管理你网站的各种动态数据(比如 WordPress 的文章、用户信息、评论,或者电商网站的商品、订单等)。
你也可以选择安装 MariaDB,它是 MySQL 的一个社区驱动的分支,与 MySQL 高度兼容(很多时候可以作为直接替代品),并且在某些方面有一些增强。本教程以安装 MySQL 为例,如果你想安装 MariaDB,命令会略有不同 (通常是 sudo apt install mariadb-server -y
)。
- 安装 MySQL 服务器: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
sudo apt install mysql-server -y
- 运行安全配置脚本 (极其重要!): 刚安装好的 MySQL 会有一些默认的不安全设置(比如允许匿名用户、root 用户可以远程密码登录等)。我们需要运行 MySQL 自带的安全配置脚本来加固它: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
sudo mysql_secure_installation
执行这个命令后,它会引导你完成一系列安全设置,请仔细阅读并根据提示操作:- VALIDATE PASSWORD COMPONENT? (是否启用密码强度验证插件?) 建议选择 `Y` (Yes),然后选择一个密码强度级别(如 0-低, 1-中, 2-高)。启用后,你设置的 MySQL 用户密码必须符合一定的复杂度要求。
- New password for root user: (为 root 用户设置新密码) 输入一个强大、复杂的新密码,并再次确认。这个 root 密码是 MySQL 数据库的超级管理员密码,与 Linux 系统的 root 用户密码是两回事,务必牢记!
- Remove anonymous users? (移除匿名用户?) 必须选择 `Y` (Yes)。匿名用户会带来安全风险。
- Disallow root login remotely? (禁止 root 用户远程登录?) 强烈建议选择 `Y` (Yes)。Root 用户应该只允许从本地 (localhost) 登录,以增加安全性。
- Remove test database and access to it? (移除 test 测试数据库及其访问权限?) 建议选择 `Y` (Yes)。测试数据库在生产环境没有用。
- Reload privilege tables now? (现在重新加载权限表使更改生效?) 必须选择 `Y` (Yes)。
- 验证 MySQL 服务状态: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
sudo systemctl status mysql
确保状态是active (running)
。 - (可选) 测试登录 MySQL: 你可以尝试用刚才设置的 root 密码登录 MySQL: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
sudo mysql -u root -p # 然后输入你设置的 MySQL root 密码
如果能成功进入mysql>
或MariaDB [(none)]>
提示符,说明安装和密码设置都成功了。输入EXIT;
可以退出。
数据“大管家”MySQL 也准备就绪了!
第四步:安装 PHP – 网站的“翻译官”与“逻辑引擎”
现在轮到 LEMP 中的“P”——PHP 了。PHP 是一种非常流行的服务器端脚本语言,WordPress、Discuz!、Laravel、ThinkPHP 等众多网站和框架都是用 PHP 开发的。它负责处理动态内容生成、与数据库交互、表单处理等后端逻辑。
为了让 Nginx 能够处理 PHP 请求,我们还需要安装 **PHP-FPM (FastCGI Process Manager)**。PHP-FPM 是一个 PHP FastCGI 管理器,Nginx 会把 PHP 相关的请求通过 FastCGI 协议传递给 PHP-FPM 来执行,然后再把执行结果返回给 Nginx,最终呈现给用户。你可以把 PHP-FPM 想象成 Nginx 和 PHP 代码之间的“专业翻译和执行官”。
- 安装 PHP-FPM 及常用扩展: Ubuntu 22.04 的官方源中通常包含较新版本的 PHP(在撰写本文时,可能是 PHP 8.1 或更高)。我们将安装 PHP-FPM 主包以及一些网站开发常用的 PHP 扩展,比如连接 MySQL 的扩展 (
php-mysql
)、处理多字节字符串的 (php-mbstring
)、处理 XML 的 (php-xml
)、处理 ZIP 压缩的 (php-zip
)、处理图像的 (php-gd
)、以及进行 HTTP 请求的 (php-curl
)。 [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]# 假设我们安装 PHP 8.1 (如果默认源是更新的版本,如 8.2, 请相应修改包名) sudo apt install php8.1-fpm php8.1-mysql php8.1-mbstring php8.1-xml php8.1-zip php8.1-gd php8.1-curl php8.1-cli -y
php8.1-cli
是 PHP 的命令行解释器,方便我们执行一些 PHP 脚本或检查版本。 - 检查 PHP 版本: 安装完成后,可以检查一下 PHP 的版本: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
php -v
你应该能看到类似 PHP 8.1.x (cli) … 的输出。 - 了解 PHP-FPM 的 Socket 文件: PHP-FPM 安装后,通常会自动创建一个 Unix socket 文件,用于和 Nginx 通信。这个文件的路径很重要,我们稍后配置 Nginx 时会用到。对于 PHP 8.1,它通常位于:
/var/run/php/php8.1-fpm.sock
你可以用ls /var/run/php/
命令查看一下是否存在这个文件。
PHP 这个“逻辑引擎”和它的“翻译官”PHP-FPM 也安装好了!
第五步:配置 Nginx 与 PHP-FPM “牵手” – 让它们协同工作
现在 Nginx 和 PHP-FPM 都已经安装好了,但它们还不知道如何“对话”。我们需要修改 Nginx 的网站配置文件,告诉它:“嘿,Nginx,如果你收到一个以 .php
结尾的请求,不要自己处理,把它交给在某个 Socket 上等着的 PHP-FPM 去执行!”
- 创建或编辑你的网站配置文件: Nginx 的网站配置(称为 Server Block)通常放在
/etc/nginx/sites-available/
目录下。我们为你的域名(或 IP 地址)创建一个配置文件。假设你的域名是yourdomain.com
(如果暂时没有域名,可以用服务器 IP 代替,但后续申请 SSL 会有问题)。 [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]# 将 yourdomain.com 替换为你的实际域名或文件名 sudo nano /etc/nginx/sites-available/yourdomain.com
- 粘贴并修改以下配置内容: 这是一个基础的 Nginx Server Block 配置,用于处理 PHP 请求。请仔细阅读注释,并根据你的实际情况修改
server_name
,root
, 以及fastcgi_pass
中的 PHP-FPM socket 路径。 [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]server { listen 80; listen [::]:80; # 同时监听 IPv6 (如果你的服务器支持) # 替换为你的网站文件实际存放的根目录 root /var/www/yourdomain.com/public_html; # 默认首页文件,会按顺序查找 index index.php index.html index.htm index.nginx-debian.html; # 替换为你的域名,如果有多个域名或子域名指向这个网站,用空格隔开 server_name yourdomain.com www.yourdomain.com; location / { # 尝试查找文件,如果找不到则尝试作为目录,最后尝试 index.php 并传递参数 try_files $uri $uri/ /index.php?$query_string; } # 核心配置:处理 PHP 文件 location ~ \.php$ { include snippets/fastcgi-php.conf; # 包含 Nginx 自带的 FastCGI PHP 基础配置 # 关键!告诉 Nginx PHP-FPM 在哪里监听 # 确保这个路径与你安装的 PHP-FPM 版本对应的 socket 文件路径一致! # 例如,对于 PHP 8.1,通常是 /var/run/php/php8.1-fpm.sock # 对于 PHP 7.4,可能是 /var/run/php/php7.4-fpm.sock fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 其他 FastCGI 参数通常已在 snippets/fastcgi-php.conf 中定义 # fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # include fastcgi_params; } # (可选) 禁止访问 .htaccess 文件 (因为 Nginx 不使用它) location ~ /\.ht { deny all; } }
重点解释:root /var/www/yourdomain.com/public_html;
: 这是你网站文件的存放根目录,你需要先创建这个目录。index index.php ...;
: 优先处理index.php
作为首页。server_name ...;
: 绑定你的域名。location ~ \.php$ { ... }
: 这个块专门用来处理以.php
结尾的请求。include snippets/fastcgi-php.conf;
: 这是一个 Nginx 自带的片段,包含了很多通用的 FastCGI for PHP 的参数设置。fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
: **这是最关键的一行!** 它告诉 Nginx 通过哪个 Unix socket 文件去和 PHP-FPM 通信。请务必确保这个路径与你服务器上实际的 PHP-FPM socket 文件路径完全一致!你可以通过ls /var/run/php/
来查看你的系统上 PHP-FPM socket 文件的确切名称。
- 创建网站根目录: 根据上面配置文件中
root
指令指定的路径,创建它: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]# 将 yourdomain.com 替换为你的实际域名或项目名 sudo mkdir -p /var/www/yourdomain.com/public_html # (可选) 更改目录所有权,方便后续操作,比如改成当前用户 # sudo chown -R $USER:$USER /var/www/yourdomain.com/public_html # 或者改成 Web 服务器用户 (如 www-data),具体看你的部署需求 # sudo chown -R www-data:www-data /var/www/yourdomain.com/public_html
- 启用这个网站配置 (创建符号链接): Nginx 的工作方式是,
sites-available
目录存放所有可用的网站配置,而sites-enabled
目录存放当前**实际启用**的网站配置(通常是通过符号链接指向sites-available
里的文件)。 [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]# 将 yourdomain.com 替换为你的配置文件名 sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/ # (可选)为了避免与默认配置冲突,可以考虑移除默认配置的链接 (如果存在) # sudo rm /etc/nginx/sites-enabled/default
- 测试 Nginx 配置并重载: 每次修改 Nginx 配置后,都必须先测试语法,再重载服务: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
sudo nginx -t
如果输出显示syntax is ok
和test is successful
,说明配置没问题。然后执行: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]sudo systemctl reload nginx
如果nginx -t
报错,你需要根据错误提示回去检查你的配置文件。
至此,Nginx 和 PHP-FPM 的“红线”算是牵上了!
第六步:测试 PHP 处理 – “Hello World”时间!
现在,我们需要创建一个简单的 PHP 文件,放到我们网站的根目录里,看看 Nginx 和 PHP-FPM 是否真的能正确地“合作”处理 PHP 请求。
- 在你的网站根目录下创建一个
info.php
文件: (将/var/www/yourdomain.com/public_html
替换为你实际的网站根目录) [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]sudo nano /var/www/yourdomain.com/public_html/info.php
- 在该文件中粘贴以下 PHP 代码: [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
<?php phpinfo(); ?>
phpinfo()
函数会输出关于你服务器 PHP 配置的详细信息。 - 保存文件后,在浏览器中访问它: 打开你的浏览器,输入地址
http://yourdomain.com/info.php
(或者http://YOUR_SERVER_IP/info.php
如果你还没绑定域名)。 如果一切配置正确,你应该能看到一个包含大量 PHP 版本、模块、配置信息的页面。这就证明了你的 LEMP 环境中,Nginx 已经能成功地将 PHP 请求传递给 PHP-FPM 处理,并且 PHP-FPM 也正确执行了 PHP 代码! - 极其重要:测试完毕后,立即删除这个
info.php
文件! 因为它暴露了太多关于你服务器 PHP 配置的敏感信息,把它留在公网可访问的路径下是非常不安全的! [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]sudo rm /var/www/yourdomain.com/public_html/info.php
(可选但强烈推荐) 数据库安全与用户创建
虽然我们的 LEMP 环境基本能跑起来了,但在你部署实际应用之前,还有一个重要的数据库安全步骤:**不要直接在你的应用程序中使用 MySQL 的 root 用户!**
为什么? root 用户权限太高,万一你的应用代码有漏洞导致数据库凭证泄露,攻击者就能拿到你整个数据库的最高权限,后果不堪设想。最佳实践是为你的每一个应用程序创建一个**专用的数据库用户**,并只授予该用户对其所需数据库的**最小必要权限**。
如何操作:
- 登录 MySQL (以 root 用户): [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]
sudo mysql -u root -p
- 执行以下 SQL 命令(将
myapp_db
,myapp_user
,YourStrongPassword!
替换为你自己的名称和强密码): [提示:请将以下代码片段复制并粘贴到 WordPress 的“代码”区块中]-- 1. 创建一个新的数据库 (如果你的应用需要) CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 2. 创建一个新的数据库用户,并设置密码 -- 通常应用和数据库在同一台服务器上,所以 Host 设为 'localhost' CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'YourStrongPassword!'; -- 3. 授予新用户对新数据库的所有权限 -- (更安全的做法是只授予必要的权限,如 SELECT, INSERT, UPDATE, DELETE) GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost'; -- 4. 刷新权限使更改生效 FLUSH PRIVILEGES; -- 5. 退出 EXIT;
之后,在你的应用程序(比如 WordPress 的 wp-config.php
)的数据库连接配置中,就应该使用这个新创建的 myapp_user
和对应的密码及数据库名了。
结论:你的 LEMP “小窝”搭建完成!恭喜!
呼~ 跟着这一路下来,是不是感觉自己也成了半个“服务器搭建高手”了?如果你顺利完成了以上所有步骤,那么恭喜你!你已经在你的 Ubuntu 22.04 服务器上成功搭建起了一个功能完备、性能强劲的 LEMP (Nginx + MySQL/MariaDB + PHP) 运行环境!
现在,你的服务器这个“精装小厨房”已经准备就绪,可以开始“烹饪”你的动态网站和应用程序了。无论是部署一个 WordPress 博客,还是上传你自己开发的 PHP 项目,这个 LEMP 环境都能为你提供坚实的基础。
当然,服务器的世界学无止境。接下来,你可能还需要考虑:
- 为你的网站配置 HTTPS (SSL 证书),确保数据传输安全(我们有专门的教程哦!)。
- 进一步优化 Nginx, PHP-FPM, MySQL 的配置参数,提升性能。
- 做好服务器和网站的日常备份。
- 加强服务器的安全防护。
但无论如何,你已经成功迈出了最重要的一步!为你点赞!
还有疑问?常见问题解答 (FAQs)
- 问: 我想安装不同版本的 PHP (比如 PHP 7.4 或最新的 PHP 8.x),该怎么办? 答: Ubuntu 22.04 官方源可能不直接提供所有 PHP 版本。如果你需要特定版本,通常可以通过添加第三方 PPA (Personal Package Archive),比如 Ondřej Surý 的 PHP PPA(非常流行和受信任),来安装几乎所有维护中的 PHP 版本及其扩展。例如,要安装 PHP 7.4,大致步骤是:
sudo add-apt-repository ppa:ondrej/php
→sudo apt update
→sudo apt install php7.4-fpm php7.4-mysql ...
。安装后,记得修改 Nginx 配置中的fastcgi_pass
指向对应版本的 PHP-FPM socket 文件(如/var/run/php/php7.4-fpm.sock
)。 - 问: 我想在这台服务器上托管多个网站,Nginx 该如何配置? 答: 非常简单!你只需要为每个网站在
/etc/nginx/sites-available/
目录下创建一个独立的配置文件(比如site1.com.conf
,site2.com.conf
),每个文件里包含一个独立的server { ... }
块。在每个server
块中,使用不同的server_name
指令绑定不同的域名,并使用不同的root
指令指向各自网站文件的存放目录。然后,为每个配置文件在/etc/nginx/sites-enabled/
目录下创建一个符号链接 (sudo ln -s ...
)。最后,sudo nginx -t && sudo systemctl reload nginx
。Nginx 会根据请求头中的域名自动将请求分发到对应的server
块进行处理。 - 问: 我按照教程配置了,但访问域名还是看到 Nginx 的欢迎页面,而不是我的 PHP 测试页,怎么办? 答: 这通常意味着 Nginx 没有正确地将请求匹配到你为域名配置的那个
server
块,或者那个server
块的配置有问题。请检查:1) 你的域名 DNS 解析是否已正确指向服务器 IP?2) Nginx 配置文件中server_name
是否正确填写了你的域名?3) 你是否正确地在sites-enabled
目录创建了配置文件的符号链接,并且(如果需要)移除了默认的default
配置链接?4) 你的server
块中是否有正确的root
指令和index index.php ...;
指令?5)nginx -t
是否有报错?仔细检查 Nginx 错误日志。 - 问: PHP-FPM 使用 Unix socket (如
unix:/var/run/php/php8.1-fpm.sock
) 和 TCP/IP 监听 (如127.0.0.1:9000
) 有什么区别?哪个更好? 答: 当 Nginx 和 PHP-FPM 运行在同一台服务器上时,使用 **Unix socket 通常被认为性能略好一些**,因为它绕过了网络协议栈,直接进行本地进程间通信,开销更小。TCP/IP 监听则需要在本地网络栈上进行通信,理论上会有一点点额外的开销,但通常差异不大。TCP/IP 监听的主要优势在于,如果你的 PHP-FPM 运行在不同于 Nginx 的另一台服务器上(比如为了扩展性),那么你必须使用 TCP/IP 方式进行网络通信。对于单机 LEMP 环境,使用默认的 Unix socket 通常是简单且高效的选择。 - 问: 安装完 MySQL 后,除了运行
mysql_secure_installation
,还有哪些重要的安全措施? 答:mysql_secure_installation
做了很多基础加固,但你还可以考虑:1) **定期更改 root 密码**。2) **为应用创建专用、低权限用户**(我们教程里提到了)。3) **限制网络访问:** 确保 MySQL 只监听本地回环地址 (bind-address = 127.0.0.1
),除非你确实需要远程连接。如果需要远程连接,务必在防火墙层面严格限制允许访问 3306 端口的源 IP 地址。4) **定期备份数据库!** 5) **保持 MySQL/MariaDB 版本更新**,及时打上安全补丁。6) **监控数据库日志**,注意异常登录或查询。7) 考虑启用更高级的安全特性,如 SSL/TLS 加密连接(如果客户端和服务器之间通过不信任网络通信)。
[…] LEMP 勇士们!如果你刚刚跟着我们的《Ubuntu 22.04 从零搭建 LEMP 环境保姆级教程》一步步把 Nginx、MySQL 和 PHP-FPM […]