如何在 Ubuntu 20.04 服务器/桌面上安装 LEMP 堆栈

[ad_1]

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

先决条件

要学习本教程,您需要在本地计算机或远程服务器上运行 Ubuntu 20.04 操作系统。

如果您正在寻找 VPS(虚拟专用服务器),那么您可以通过此特殊链接在 DigitalOcean 注册一个帐户,以获得 50 美元的免费赠金。 (仅限新用户)。 如果您已经是 DigitalOcean 用户,那么您可以通过此特殊链接在 Vultr 上注册一个帐户,以获得 50 美元的免费赠金(仅限新用户)。

而且如果你需要用域名设置LEMP堆栈,我建议从NameCheap购买域名,因为价格低廉,并且他们终身免费提供whois隐私保护。

步骤 1:更新软件包

在我们安装 LEMP 堆栈之前,通过在 Ubuntu 20.04 操作系统上运行以下命令来更新存储库和软件包是一个很好的做法。

sudo apt update

sudo apt upgrade

第 2 步:安装 Nginx Web 服务器

Nginx 是一种高性能的 Web 服务器,最近非常流行。 它还可以用作反向代理和缓存服务器。 Enter 以下命令安装 Nginx Web 服务器。

sudo apt install nginx

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

sudo systemctl enable nginx

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

sudo systemctl start nginx

现在检查它的状态。

sudo systemctl status nginx

输出:

 nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-04-10 14:11:43 UTC; 3s ago
       Docs: man:nginx(8)
    Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 8549 (nginx)
      Tasks: 3 (limit: 9451)
     Memory: 3.9M
     CGroup: /system.slice/nginx.service
             ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─8550 nginx: worker process
             └─8551 nginx: worker process

启用”表示启动时自动启动,我们可以看到Nginx正在运行。 您还可以从输出中查看 Nginx 使用了多少 RAM。 如果上面的命令运行后没有立即退出。 您需要按“q” 让它退出。

检查 Nginx 版本。

nginx -v

输出:

nginx version: nginx/1.17.9 (Ubuntu)

现在在浏览器地址栏中输入 Ubuntu 20.04 服务器的公共 IP 地址。 您应该会看到“Welcome to Nginx”网页,这表示 Nginx Web 服务器运行正常。 如果您要在本地 Ubuntu 20.04 计算机上安装 LEMP,请键入 127.0.0.1 或者 localhost 在浏览器地址栏中。

如果连接被拒绝或无法完成,则可能是防火墙阻止了对 TCP 端口 80 的传入请求。 如果您使用的是 iptables 防火墙,则需要运行以下命令打开 TCP 端口 80。

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

如果您使用的是 UFW 防火墙,则运行此命令以打开 TCP 端口 80。

sudo ufw allow http

最后,我们需要使 www-data (Nginx 用户)作为 web 目录的所有者。 默认情况下,它由 root 用户拥有。

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

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

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

sudo apt install mariadb-server mariadb-client

安装后,MariaDB 服务器应该会自动启动。 用 系统控制 检查其状态。

systemctl status mariadb

输出:

 mariadb.service - MariaDB 10.3.22 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago
       Docs: man:mysqld(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 9161 (mysqld)
     Status: "Taking your SQL requests now..."
      Tasks: 31 (limit: 9451)
     Memory: 64.7M
     CGroup: /system.slice/mariadb.service
             └─9161 /usr/sbin/mysqld

如果它没有运行,请使用以下命令启动它:

sudo systemctl start mariadb

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

sudo systemctl enable mariadb

现在运行安装后安全脚本。

sudo mysql_secure_installation

当它要求您输入 MariaDB root 密码时,按 Enter 密钥,因为尚未设置 root 密码。 然后输入 为 MariaDB 服务器设置 root 密码。

接下来,您可以按 Enter 回答所有剩余的问题,这将删除匿名用户,禁用远程 root 登录并删除测试数据库。 这一步是 MariaDB 数据库安全的基本要求。 (注意 Y 是大写的,这意味着它是默认答案。)

如何安装 LEMP-stack-on-Ubuntu-20.04

默认情况下,Ubuntu 上的 MaraiDB 包使用 unix_socket 验证用户登录,这基本上意味着您可以使用操作系统的用户名和密码登录到 MariaDB 控制台。 因此,您可以运行以下命令进行登录,而无需提供 MariaDB 的 root 密码。

sudo mariadb -u root

要退出,运行

exit;

检查 MariaDB 服务器版本信息。

mariadb --version

如您所见,我们已经安装了 MariaDB 10.3.22。

mariadb  Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

第四步:安装PHP7.4

PHP7.4 包含在 Ubuntu 20.04 存储库中,与 PHP7.3 相比有轻微的性能改进。 Enter 以下命令安装 PHP7.4 和一些常用扩展。

sudo apt install php7.4 php7.4-fpm php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl

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

PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function xml_parser_create()

安装这些 PHP 扩展可确保您的 CMS 顺利运行。 现在启动php7.4-fpm。

sudo systemctl start php7.4-fpm

在启动时启用自动启动。

sudo systemctl enable php7.4-fpm

检查状态:

systemctl status php7.4-fpm

示例输出:

 php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor pr>
     Active: active (running) since Fri 2020-04-10 14:40:26 UTC; 12s ago
       Docs: man:php-fpm7.4(8)
    Process: 21019 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /ru>
   Main PID: 21012 (php-fpm7.4)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req>
      Tasks: 3 (limit: 9451)
     Memory: 9.4M
     CGroup: /system.slice/php7.4-fpm.service
             ├─21012 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
             ├─21017 php-fpm: pool www
             └─21018 php-fpm: pool www

如果上面的命令运行后没有立即退出。 您需要按“q” 让它退出。

第 5 步:创建 Nginx 服务器块

一个 Nginx 服务器块就像一个虚拟主机 Apache. 我们不会使用默认的 server 块,因为它不足以运行 PHP 代码,如果我们修改它,它就会变得一团糟。 所以删除 default 符号链接 sites-enabled 通过运行以下命令来创建目录。 (它仍然可以作为 /etc/nginx/sites-available/default.)

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

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

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

将以下文本粘贴到文件中。 以下代码段将使 Nginx 使用全能服务器名称侦听 IPv4 端口 80 和 IPv6 端口 80。

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;
  }
}

Save 和 close 文件。 (要在 Nano 文本编辑器中保存文件,请按 Ctrl+O,然后按 Enter 确认。 要退出,请按 Ctrl+X.)

然后测试 Nginx 配置。

sudo nginx -t

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

sudo systemctl reload nginx

第 6 步:测试 PHP

要使用 Nginx Web 服务器测试 PHP-FPM,我们需要创建一个 info.php webroot 目录下的文件。

sudo nano /usr/share/nginx/html/info.php

将以下 PHP 代码粘贴到文件中。

<?php phpinfo(); ?>

Save 和 close 文件。 现在在浏览器地址栏中,输入 server-ip-address/info.php. 代替 sever-ip-address 使用您的实际 IP。 如果您在本地计算机上遵循本教程,请键入 127.0.0.1/info.php 或者 localhost/info.php.

您应该会看到服务器的 PHP 信息。 这意味着 PHP 脚本可以在 Nginx Web 服务器上正常运行。

Ubuntu 20.04 nginx php 7.4

恭喜! 您已经在 Ubuntu 20.04 上成功安装了 Nginx、MariaDB 和 PHP7.4。 为了您服务器的安全,您应该删除 info.php 现在文件以防止黑客看到它。

sudo rm /usr/share/nginx/html/info.php

故障排除提示

如果遇到错误,可以查看Nginx错误日志(/var/log/nginx/error.log) 找出问题所在。

Nginx 自动重启

如果由于任何原因您的 Nginx 进程被终止,您需要运行以下命令来重新启动它。

sudo systemctl restart nginx

无需手动输入此命令,我们可以通过编辑 Nginx 自动重启 nginx.service systemd 服务单元。 为了覆盖默认的 systemd 服务配置,我们创建了一个单独的目录。

sudo mkdir -p /etc/systemd/system/nginx.service.d/

然后在这个目录下创建一个文件。

sudo nano /etc/systemd/system/nginx.service.d/restart.conf

在文件中添加以下几行,这将使Nginx自动重启 5秒 检测到故障后。 默认值为 RetartSec100ms,太小了。 Nginx 可能会抱怨“启动请求重复太快”,如果 RestartSec 不够大。

[Service]
Restart=always
RestartSec=5s

Save 和 close 文件。 然后重新加载 systemd 以使更改生效。

sudo systemctl daemon-reload

要检查这是否有效,请使用以下命令杀死 Nginx:

sudo pkill nginx

然后检查 Nginx 状态。 你会发现 Nginx 自动重启了。

systemctl status nginx

下一步

我希望这个教程对你有帮助 在 Ubuntu 20.04 LTS 上安装 LEMP 堆栈. 您可能需要安装 phpMyAdmin,它是一个免费的开源基于 Web 的数据库管理工具。

  • 如何在 Ubuntu 20.04 LTS 上使用 Nginx (LEMP) 安装 phpMyAdmin

您还可以在 LEMP 堆栈之上安装 WordPress 以创建您自己的网站或博客。

  • 使用 Nginx、MariaDB、PHP7.4 (LEMP) 在 Ubuntu 20.04 上安装 WordPress

与往常一样,如果您发现这篇文章有用,请订阅我们的免费时事通讯以获取更多提示和技巧。 保重?

[ad_2]

Related Posts