什么是 LAMP 和 LEMP 技术栈?
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 服务器,所以两者都是可靠的基础。选哪一个并不决定您的应用能否运行,它改变的是设置的写法。
这套技术栈是如何工作的?
| 层 | LAMP | LEMP | 作用 |
|---|---|---|---|
| 操作系统 | Linux | Linux | 其他一切运行的基础 |
| Web 服务器 | Apache | Nginx | 响应来自浏览器的请求 |
| 数据库 | MySQL 或 MariaDB | MySQL 或 MariaDB | 存储文章、用户和订单 |
| 语言 | PHP | PHP,通过 PHP-FPM | 生成页面 |
一个请求按下面的路径穿过这套技术栈:
- 浏览器向您的域名发送请求,请求到达服务器的 80 或 443 端口。
- Web 服务器接收请求。如果请求的是图片或 CSS 文件,它自己直接提供该文件。
- 如果请求的是 PHP 文件,Web 服务器把它交给 PHP,由 PHP 运行代码。
- 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 作为域名,请换成您自己的。
- 刷新软件包列表:
sudo apt update - 安装软件包:
sudo apt install nginx mariadb-server php-fpm php-mysql。安装的版本就是软件源中的版本。 - 加固数据库:
sudo mariadb-secure-installation。对于删除匿名用户、删除测试数据库和禁止 root 远程登录,请回答 yes。 - 创建网站文件夹:
sudo mkdir -p /var/www/example - 用
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; } } ls /run/php/会显示 socket 的真实名称。请把它写在phpX.Y-fpm.sock的位置。- 启用站点:
sudo ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/ - 测试并应用配置:
sudo nginx -t,然后sudo systemctl reload nginx - 如果使用 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 分钟,地址和密码会显示在面板中。
评论0
暂无评论
成为第一个分享想法的人。
请登录或注册后发表评论。