博客

教程、指南和产品动态。

开发者

什么是 LAMP 和 LEMP 技术栈?

3 11月 2026 2 分钟阅读
分享此文章

LAMP 和 LEMP 指的是提供典型网站服务的四块软件:Linux、Web 服务器、数据库和 PHP。LAMP 中的 A 代表 Apache,LEMP 中的 E 代表 Nginx(读作“engine-x”,所以用 E)。在这两种技术栈中,数据库都是 MySQL 或 MariaDB,编程语言都是 PHP。

WordPress、WooCommerce 和 Joomla 等 PHP 应用都运行在这套技术栈上。WordPress.org 推荐 Apache 或 Nginx 作为 Web 服务器,所以两者都是可靠的基础。选哪一个并不决定您的应用能否运行,它改变的是设置的写法。

这套技术栈是如何工作的?

层LAMPLEMP作用
操作系统LinuxLinux其他一切运行的基础
Web 服务器ApacheNginx响应来自浏览器的请求
数据库MySQL 或 MariaDBMySQL 或 MariaDB存储文章、用户和订单
语言PHPPHP,通过 PHP-FPM生成页面

一个请求按下面的路径穿过这套技术栈:

  1. 浏览器向您的域名发送请求,请求到达服务器的 80 或 443 端口。
  2. Web 服务器接收请求。如果请求的是图片或 CSS 文件,它自己直接提供该文件。
  3. 如果请求的是 PHP 文件,Web 服务器把它交给 PHP,由 PHP 运行代码。
  4. PHP 在需要时查询数据库并生成页面。Web 服务器把页面送回浏览器。

如果某个页面打不开,请按顺序检查各层:systemctl status nginx、systemctl status phpX.Y-fpm 和 systemctl status mariadb。X.Y 代表您的 PHP 版本(Ubuntu 24.04 上是 8.3),在 LAMP 上用 apache2 代替 nginx。哪一个没有运行,问题就从哪里开始。

LAMP 和 LEMP 有什么区别?

  • Apache 会读取 .htaccess 文件,Nginx 不会。在 Nginx 上,规则写入服务器配置。
  • Nginx 不在自身内部运行 PHP,而是把请求交给名为 PHP-FPM 的独立服务。Apache 可以在自身内部运行 PHP,也可以通过 PHP-FPM。
  • 配置文件夹不同。在 Ubuntu 上,Apache 使用 /etc/apache2,Nginx 使用 /etc/nginx。
  • 内存占用更多取决于 PHP-FPM worker 的数量和数据库设置,而不是 Web 服务器的选择。
  • 两者都没有明显的优势。它们都被广泛使用,所以您参考的教程和个人习惯才是决定因素。

MySQL 还是 MariaDB?

MariaDB 是从 MySQL 分支出来的开源数据库,两者的命令和客户端基本兼容。WordPress 的官方要求页面两者都接受,请在那里查看当前的最低版本。在 Ubuntu 上,mariadb-server 软件包用一条命令就能安装。根据 MariaDB 文档,自 10.4 版起,root 账户默认使用 unix_socket 认证。在服务器上直接运行 sudo mariadb 即可,不需要 root 密码。

在 Ubuntu 上搭建 LEMP

这些步骤适用于 Ubuntu 和 Debian。首先通过 SSH 连接服务器。示例中用 example.com 作为域名,请换成您自己的。

  1. 刷新软件包列表:sudo apt update
  2. 安装软件包:sudo apt install nginx mariadb-server php-fpm php-mysql。安装的版本就是软件源中的版本。
  3. 加固数据库:sudo mariadb-secure-installation。对于删除匿名用户、删除测试数据库和禁止 root 远程登录,请回答 yes。
  4. 创建网站文件夹:sudo mkdir -p /var/www/example
  5. 用 sudo nano /etc/nginx/sites-available/example 打开一个文件,并粘贴这一行:server { listen 80; server_name example.com www.example.com; root /var/www/example; index index.php index.html; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/phpX.Y-fpm.sock; } }
  6. ls /run/php/ 会显示 socket 的真实名称。请把它写在 phpX.Y-fpm.sock 的位置。
  7. 启用站点:sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/
  8. 测试并应用配置:sudo nginx -t,然后 sudo systemctl reload nginx
  9. 如果使用 ufw,请开放 80 和 443 端口:sudo ufw allow 80/tcp 和 sudo ufw allow 443/tcp。确保 SSH 端口(22)是开放的。

要测试 PHP 是否工作,请写一个测试文件:

echo '<?php phpinfo();' | sudo tee /var/www/example/info.php

如果域名还没有指向服务器,可以在服务器内部用 curl -H 'Host: example.com' http://127.0.0.1/info.php 测试。一看到它工作,就立即删除这个文件:sudo rm /var/www/example/info.php。那个页面会向所有人展示您服务器的详细信息。

为您的应用准备数据库

用 sudo mariadb 打开数据库 shell,为每个应用创建单独的数据库和用户。请自己选择强密码:

CREATE DATABASE exampledb CHARACTER SET utf8mb4;

CREATE USER 'exampleuser'@'localhost' IDENTIFIED BY 'a-strong-password';

GRANT ALL ON exampledb.* TO 'exampleuser'@'localhost';

您把这三个值(数据库、用户、密码)填到 WordPress 的安装界面中。要让 WordPress 的固定链接生效,请把 Nginx 那一行中的 =404 换成 /index.php?$args。

LAMP 有什么不同?

对于 Apache 技术栈,这样安装软件包:

sudo apt install apache2 mariadb-server php libapache2-mod-php php-mysql

在 /etc/apache2/sites-available 下定义站点,并用 sudo a2ensite example 启用。要使用固定链接,请运行 sudo a2enmod rewrite,并用 sudo systemctl restart apache2 重启 Apache。要让 .htaccess 文件生效,需要为站点文件夹设置 AllowOverride All。您也可以让 Apache 通过 PHP-FPM 运行 PHP,这与事件驱动的 event 模型相配。数据库的步骤与 LEMP 相同。

安装之后

  • 添加 HTTPS 证书。Let's Encrypt 是免费的,Certbot 同时支持 Nginx 和 Apache。
  • 设置 Web 服务器需要写入的文件夹的所有者。在 Ubuntu 和 Debian 上,Web 服务器以 www-data 用户运行:sudo chown -R www-data:www-data /var/www/example。
  • 用 sudo apt update && sudo apt upgrade 定期安装更新。安装完成后,操作系统和软件的更新由您负责。
  • 用 mariadb-dump 单独备份数据库。价格已包含服务器的每日备份,但重要数据您仍应自己多留一份副本。

如果想要现成可用的技术栈,下单时选择 Seturack 的 LAMP 或 LEMP 选项,它会自动安装。如果您只需要 WordPress,选 WordPress VPS 选项就够了:安装约需 4-5 分钟,地址和密码会显示在面板中。

Seturack 上的现成方案: LAMP, LEMP.

评论0

暂无评论

成为第一个分享想法的人。

参与讨论

请登录或注册后发表评论。

不错过任何文章

通过电子邮件接收我们最新的教程、指南和产品资讯。

您已订阅我们的电子通讯。