Ubuntu22.04安装LEMP堆栈(Nginx + MariaDB + PHP)教程

本教程将展示如何在 Ubuntu22.04 上安装 LEMP 堆栈。
一个软件堆栈是捆绑在一起的一组软件工具。
LEMP 代表 Linux、Nginx (Engine-X)、MariaDB/MySQL 和 PHP,所有这些都是开源的,可以免费使用。它是为动态网站和 Web 应用程序提供支持的最常见软件堆栈。
Linux 是操作系统;
Nginx 是 Web 服务器;
MariaDB/MySQL是数据库服务器,
PHP是负责生成动态网页的服务器端脚本语言。

第 1 步:更新软件包

sudo apt update && sudo apt upgrade -y

第 2 步:安装 Nginx Web 服务器

Nginx 是一种当前非常流行的高性能 Web 服务器。它也可以用作反向代理和缓存服务器。输入以下命令安装 Nginx Web 服务器。

sudo apt install nginx

安装后,我们可以通过运行以下命令使 Nginx 在启动时自动启动。

sudo systemctl enable nginx

然后使用以下命令启动 Nginx:

sudo systemctl start nginx

检查它的状态。

sudo systemctl status nginx

输出:
在这里插入图片描述
“Enabled”表示启用了启动时自动启动,我们可以看到 Nginx 正在运行。您还可以从输出中查看 Nginx 使用了多少 RAM。如果上述命令在运行后没有立即退出。您需要按“q”使其退出。

ubuntu默认是ufw防火墙,可能存在防火墙阻止对TCP端口80的传入请求,需要运行以下命令来打开 TCP 端口 80。

sudo ufw allow http

最后,让(Nginx 用户)成为 Web 目录的所有者。默认情况下,其权限归 root 用户所有。

sudo chown www-data:www-data /usr/share/nginx/html -R

第 3 步:安装 MariaDB 数据库服务器

MariaDB是MySQL的直接替代品。它是由MySQL团队的前成员开发的,他们担心Oracle可能会将MySQL变成一个闭源产品。输入以下命令在 Ubuntu 上安装 MariaDB

sudo apt install mariadb-server mariadb-client

安装后,MariaDB服务器应该会自动启动。使用 systemctl 检查其状态。

sudo systemctl status mariadb

输出:
在这里插入图片描述
如果它未运行,请使用以下命令启动它:

sudo systemctl start mariadb

要使 MariaDB 在启动时自动启动,需运行

sudo systemctl enable mariadb

第 4 步:安装 PHP

输入以下命令安装 PHP 和一些常用扩展。

sudo apt install php php-apache php-imagick php-fpm php-mbstring php-bcmath php-xml php-mysql php-common php-gd php-json php-cli php-curl php-zip

WordPress等内容管理系统(CMS)通常需要PHP扩展。例如,如果你的安装缺少 ,那么您的某些 WordPress 网站页面可能是空白的,可以在 Nginx 错误日志中找到错误

安装完上述扩展后启动启动 php-fpm。

sudo systemctl start php-fpm

在启动时启用自动启动。

sudo systemctl enable php-fpm

检查状态:

sudo systemctl status php-fpm

若状态为active(running) 即可

第 5 步:创建 Nginx 服务器块

Nginx 服务器块就像 Apache 中的虚拟主机。这里不会使用默认的服务器块,因为它不足以运行 PHP 代码,如果我们直接修改默认文件,会很容易变得乱七八糟。简单起见,这里直接通过运行以下命令删除目录中的符号链接。

sudo rm /etc/nginx/sites-enabled/default

然后使用像 vim 这样的文本编辑器在 /etc/nginx/conf.d/ 目录下创建一个全新的服务器文件。

sudo vim /etc/nginx/conf.d/default.conf

将以下文本粘贴到文件中。以下代码片段将使 Nginx 监听 IPv4 端口 80 和 IPv6 端口 80,并使用 catch-all 服务器名称。

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/php7.4-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;
  }
}

保存并关闭文件。然后测试 Nginx 配置。

sudo nginx -t

如果测试成功,需重新加载 Nginx。

sudo systemctl reload nginx

至此,LEMP堆栈安装完毕