本指南向您展示如何在 Debian 12 上安装 LEMP 堆栈(Nginx、MariaDB 和 PHP8.2)。软件堆栈是捆绑在一起的软件工具的集合。 LEMP 代表 Linux、Nginx (Engine-X)、MariaDB/MySQL 和 PHP,所有这些都是开源的,可以免费使用。 它是支持动态网站和 Web 应用程序的最常见的软件堆栈。 Linux是一个操作系统; Nginx 是一个网络服务器; MariaDB/MySQL 是数据库服务器,PHP 是服务器端脚本语言,负责创建动态网页。 在本指南中,我们以 root 用户身份安装,如果您有普通用户,请使用 sudo 命令。
|
最常见的问题:
-
我们希望所有数据都在我们身边。 你们能对我们的设备进行所有这些调整吗?
是的,您可以通过以下命令在您的设备上订购此配置的安装和配置 关联.
预配置的服务器配置可在订购单上获得。
1. 更新软件包
在我们安装 LEMP 堆栈之前,建议更新存储库和软件包。 在 Debian 12 操作系统上运行以下命令。
apt update
apt upgrade
2. 安装 Nginx 网络服务器
Nginx 是当今非常流行的高性能 Web 服务器。 它还可以用作反向代理和缓存服务器。 输入以下命令以安装 Nginx Web 服务器。
apt install nginx
安装后,我们可以通过运行以下命令使 Nginx 在开机时自动启动。
systemctl enable nginx
然后使用以下命令启动 Nginx:
systemctl start nginx
现在检查它的状态。
systemctl status nginx
现在在浏览器的地址栏中输入 Debian 12 服务器的公共 IP 地址。 您应该会看到“欢迎使用 Nginx”网页,这意味着 Nginx Web 服务器工作正常。 如果您在本地 Debian 12 机器上安装 LEMP,请在浏览器的地址栏中输入 127.0.0.1 或 localhost。
如果连接被拒绝或无法建立,防火墙可能会阻止 TCP 端口 80 上的传入请求。如果您使用的是 iptables 防火墙,则需要运行以下命令来打开 TCP 端口 80。
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
如果您使用的是 UFW 防火墙,请运行此命令以打开 TCP 端口 80。
ufw allow http
现在我们需要让 www-data(Nginx 用户)成为 web 目录的所有者。 默认情况下,它由 root 用户拥有。
chown www-data:www-data /usr/share/nginx/html -R
3. 安装 MariaDB 数据库服务器
MariaDB 是 MySQL 的替代品。 它是由 MySQL 团队的前成员开发的,他们担心 Oracle 可能会将 MySQL 变成闭源产品。 输入以下命令在 Debian 12 上安装 MariaDB。
apt install mariadb-server mariadb-client
安装后,MariaDB 服务器应该会自动启动。 使用 systemctl 检查其状态。
systemctl status mariadb
如果它没有运行,请使用以下命令启动它:
systemctl start mariadb
要允许 MariaDB 在启动时自动启动,请运行
systemctl enable mariadb
现在在安装后运行安全脚本。
mysql_secure_installation
当系统要求您输入 MariaDB root 密码时,请按 Enter 键,因为尚未设置 root 密码。 然后键入 y 为 MariaDB 服务器设置 root 密码。
然后您可以按 Enter 键回答任何剩余的问题,这将删除匿名用户、禁用远程 root 登录并删除测试数据库。 此步骤是保护 MariaDB 数据库的主要要求。 (注意 Y 是大写的,这意味着这是默认答案。)
默认情况下,Debian 的 MaraiDB 包使用 unix_socket 进行用户身份验证,这基本上意味着您可以使用操作系统用户名和密码登录到 MariaDB 控制台。 因此,您可以运行以下命令进行登录,而无需提供 MariaDB root 密码。
mariadb -u root
运行退出
exit;
4. 安装 PHP8.2
PHP8.2 包含在 Debian 12 存储库中,与 PHP7.x 相比具有较小的性能改进。 输入以下命令安装 PHP8.2 和一些常用的扩展。
apt install php php-fpm php-mysql php-common php-cli php-common php-json php-opcache php-readline php-mbstring php-xml php-gd php-curl
WordPress 等内容管理系统 (CMS) 通常需要 PHP 扩展。 例如,如果您的安装中缺少 php8.2-xml,那么您的 WordPress 站点的某些页面可能是空白的,您可能会在 Nginx 错误日志中发现错误,例如:
PHP 消息:PHP 致命错误:未处理的错误:未定义的函数调用 xml_parser_create()
安装这些 PHP 扩展将确保您的 CMS 顺利运行。 现在运行 php8.2-fpm.
systemctl start php8.2-fpm
在引导期间启用自动播放。
systemctl enable php8.2-fpm
检查状态:
systemctl status php8.2-fpm
5. 创建一个 Nginx 服务器块
Nginx 服务器块类似于 Apache 中的虚拟主机。 我们不会使用默认的服务器块,因为它不适合运行 PHP 代码,如果我们更改它,它将变得一团糟。 因此,通过运行以下命令删除站点启用目录中的默认符号链接。 (它仍然可以作为 /etc/nginx/sites-available/default.)
rm /etc/nginx/sites-enabled/default
然后使用命令行文本编辑器(例如 Nano)在 /etc/nginx/conf.d/ 目录中创建一个新的服务器块文件。 将以下文本粘贴到文件中。 以下代码段将使 Nginx 使用服务器的单价名称侦听 IPv4 端口 80 和 IPv6 端口 80。
nano /etc/nginx/conf.d/default.conf
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html/;
index index.php index.html index.htm index.nginx-debian.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
include snippets/fastcgi-php.conf;
}
# A long browser cache lifetime can speed up repeat visits to your page
location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
# disable access to hidden files
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
保存并关闭文件。 (要在 Nano 文本编辑器中保存文件,请按 Ctrl+O,然后按 Enter 确认。要退出,请按 Ctrl+X。)
然后测试 Nginx 配置。
nginx -t
如果测试成功,重启Nginx。
systemctl reload nginx
6. 测试PHP
要使用 Nginx Web 服务器测试 PHP-FPM,我们需要在 webroot 目录中创建一个 info.php 文件。
nano /usr/share/nginx/html/info.php
保存并关闭文件。 现在在浏览器地址栏中输入server-ip-address/info.php。 将服务器 IP 地址替换为您的实际 IP 地址。 如果您在本地计算机上遵循本指南,请输入 127.0.0.1/info.php 或 localhost/info.php。
您将看到服务器的 PHP 信息。 这意味着 PHP 脚本可以与 Nginx Web 服务器一起正常工作。
7. Nginx 自动重启
如果由于某种原因你的 Nginx 进程停止了,你需要运行以下命令来重新启动它。
systemctl restart nginx
我们可以通过编辑 nginx.service systemd 系统模块使 Nginx 自动重启,而不是手动输入此命令。 为了覆盖默认的 systemd 服务配置,我们创建了一个单独的目录。
mkdir -p /etc/systemd/system/nginx.service.d/
然后在该目录中创建一个文件。
nano /etc/systemd/system/nginx.service.d/restart.conf
将以下行添加到文件中,这将导致 Nginx 在检测到故障 5 秒后自动重启。 默认的 RetartSec 是 100ms,太短了。 如果 RestartSec 不够大,Nginx 可能会抱怨“启动请求重试太快”。
[Service]
Restart=always
RestartSec=5s
保存并关闭文件。 然后重新加载 systemd 以使更改生效。
systemctl daemon-reload
要测试这是否有效,请使用以下命令终止 Nginx:
pkill nginx
然后查看Nginx的状态。 你会发现 Nginx 自动重启了。
systemctl status nginx
LEMP(Nginx、MariaDB 和 PHP8.2)已成功安装在 Debian 12 上。所有这些步骤都已在订购单中 VPS 服务器的 Debian 12 LEMP 预装配置中完成。