如何在 Ubuntu 22.04 LTS 上安装 LEMP 堆栈

在本教程中,我们将向您展示如何在 Ubuntu 22.04 LTS 上安装 LEMP Stack。 对于那些不知道的人,LEMP Stack 是免费的开源软件的组合。 首字母缩略词 LEMP 指的是 Linux(操作系统)、Nginx 服务器、MariaDB(数据库软件)和 PHP 组件的首字母,用于构建可行的通用 Web 服务器。

本文假设您至少具备 Linux 的基本知识,知道如何使用 shell,最重要的是,您将网站托管在自己的 VPS 上。 安装非常简单,假设您在 root 帐户下运行,如果不是,您可能需要添加 ‘sudo‘ 到命令以获取 root 权限。 我将向您展示在 Ubuntu 22.04 (Jammy Jellyfish) 上逐步安装 LEMP 堆栈。 对于 Ubuntu 22.04 和任何其他基于 Debian 的发行版,如 Linux Mint、Elementary OS、Pop!_OS 等,您可以按照相同的说明进行操作。

先决条件

  • 运行以下操作系统之一的服务器:Ubuntu 22.04、20.04 和任何其他基于 Debian 的发行版,如 Linux Mint。
  • 建议您使用全新的操作系统安装来防止任何潜在问题。
  • 对服务器的 SSH 访问(或者如果您在桌面上,则只需打开终端)。
  • 一个 non-root sudo user或访问 root user. 我们建议充当 non-root sudo user,但是,如果您在充当 root 时不小心,可能会损害您的系统。

在 Ubuntu 22.04 LTS Jammy Jellyfish 上安装 LEMP 堆栈

步骤 1. 首先,通过运行以下命令确保所有系统包都是最新的 apt 终端中的命令。

sudo apt update sudo apt upgrade sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common

步骤 2. 在 Ubuntu 22.04 上安装 Nginx。

默认情况下,Nginx 在 Ubuntu 22.04 基础存储库中可用。 现在运行以下命令将最新版本的 Nginx 安装到您的 Ubuntu 系统:

sudo apt install nginx

安装成功后,启用 Nginx(系统启动时自动启动),启动,并使用以下命令验证状态:

sudo systemctl enable nginx sudo systemctl start nginx sudo systemctl status nginx

确认安装并检查已安装的 Nginx 构建版本:

nginx -v

步骤 3. 配置防火墙。

Ubuntu 22.04 有 ufw 默认运行的防火墙。 通过端口启用连接 80 HTTP 和 443 HTTPS:

sudo ufw allow 'Nginx FULL' sudo ufw enable sudo ufw status

步骤 4. 访问 Nginx Web 服务器。

成功安装后,打开系统上的 Web 浏览器并在地址栏中输入服务器的 IP。 您将获得默认的 Nginx 服务器页面:

步骤 5. 在 Ubuntu 22.04 上安装 MariaDB。

默认情况下,MariaDB 在 Ubuntu 22.04 基础存储库中可用。 现在运行以下命令将最新版本的 MariaDB 安装到您的 Ubuntu 系统:

sudo apt install mariadb-server mariadb-client

成功安装后,启用 MariaDB(系统启动时自动启动),启动并使用以下命令验证状态:

sudo systemctl enable mariadb sudo systemctl start mariadb sudo systemctl status mariadb

确认安装并检查已安装的 MariaDB 构建版本:

mariadb --version

步骤 6. 安全 MariaDB 安装。

默认情况下,MariaDB 未加固。 您可以使用 mysql_secure_installation 脚本。 您应该仔细阅读以下每个步骤,这些步骤将设置 root 密码、删除匿名用户、禁止远程 root 登录、删除测试数据库和访问安全 MariaDB:

mysql_secure_installation

像这样配置它:

- Set root password? [Y/n] y - Remove anonymous users? [Y/n] y - Disallow root login remotely? [Y/n] y - Remove test database and access to it? [Y/n] y - Reload privilege tables now? [Y/n] y

您现在可以使用新密码连接到 MariaDB 服务器:

mysql -u root -p

输出:

Enter password: Welcome to the MariaDB monitor. Commands end with ; or g. Your MariaDB connection id is 46 Server version: 10.6.7-MariaDB-2ubuntu1 Ubuntu 22.04  Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.  Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.  MariaDB [(none)]>

步骤 7. 在 Ubuntu 22.04 上安装 PHP。

默认情况下,PHP 在 Ubuntu 22.04 基础存储库中不可用。 现在运行以下命令将 Ondrej PPA 添加到您的系统:

sudo add-apt-repository ppa:ondrej/php

添加存储库后,更新 APT 索引,然后使用以下命令安装 PHP 8.1:

sudo apt update sudo apt install php8.1 php8.1-common libapache2-mod-php8.1 php8.1-cli php8.1-fpm php8.1-xml

确认安装并检查已安装的 PHP 构建版本:

php --version

安装成功后,启用 php-fpm(系统启动时自动启动),启动,并使用以下命令验证状态:

sudo systemctl enable php8.1-fpm sudo systemctl start php8.1-fpm sudo systemctl status php8.1-fpm

步骤 8. 设置 Nginx 服务器块。

现在在下创建一个新的服务器块文件 /etc/nginx/conf.d/ 目录:

nano /etc/nginx/conf.d/default.conf

添加以下文件:

server {   listen 80;   listen [::]:80;   server_name _;   root /var/www/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.1-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;   } }

Save 和 close 文件,然后重新启动 Nginx 网络服务器以使更改生效:

nginx -t sudo systemctl start nginx

步骤 9. 测试 PHP。

要测试 PHP 脚本,我们需要添加 info.php 文件中的文件:

nano /var/www/html/info.php

将以下内容添加到文件中:

<?php phpinfo(); ?>

让我们通过在浏览器中打开此页面来确保服务器正确显示 PHP 脚本生成的内容: https://your-IP-address/info.php

在 Ubuntu 22.04 LTS Jammy Jellyfish 上安装 LEMP 堆栈

第 10 步。使用 Let’s Encrypt SSL 保护 Nginx。

Let’s Encrypt 是一个为网站提供免费 SSL 证书的证书颁发机构。 Let’s Encrypt 支持在 Nginx 上自动安装证书。 现在运行以下命令来安装它:

sudo apt install python3-certbot-nginx

接下来,运行以下命令开始创建证书:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.domain.com

之后,我们设置了自动续订 SSL,因为 Let’s Encrypt 的有效期只有 90 天,因此您需要经常使用以下命令对其进行续订:

sudo certbot renew --dry-run

步骤 11. 测试 SSL。

使用 Let’s Encrypt SSL 成功完成安全 Nginx 后,现在转到 ssllabs.com/ssltest/,并在您的域上运行 SSL 测试:

在 Ubuntu 22.04 LTS Jammy Jellyfish 上安装 LEMP 堆栈

恭喜! 您已成功安装 LEMP。 感谢您使用本教程安装 LEMP 堆栈 Ubuntu 22.04 LTS 果酱水母系统。 如需更多帮助或有用信息,我们建议您查看官方 LEMP 网站。