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

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

先决条件

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

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

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

步骤 1:更新软件包

在我们安装 LAMP 堆栈之前,好更新存储库和软件包。在 Ubuntu 20.04 操作系统上运行以下命令。

sudo apt update
sudo apt upgrade

第 2 步:安装 Apache Web 服务器

输入以下命令来安装 Apache Web 服务器。该 apache2-utils 软件包将安装一些有用的实用程序,例如 Apache HTTP 服务器基准测试工具 (ab)。

sudo apt install -y apache2 apache2-utils

安装后,Apache 应该会自动启动。用 来检查它的状态systemctl

systemctl status apache2

示例输出:

● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-04-11 11:31:31 CST; 2s ago   Docs: https://httpd.apache.org/docs/2.4/Process: 53003 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 53011 (apache2)  Tasks: 55 (limit: 19072) Memory: 6.4M CGroup: /system.slice/apache2.service         ├─53011 /usr/sbin/apache2 -k start         ├─53012 /usr/sbin/apache2 -k start         └─53013 /usr/sbin/apache2 -k start

提示:如果上述命令没有立即退出,您可以按 Q 键重新获得对终端的控制权。

如果它没有运行,请使用 systemctl 启动它。

sudo systemctl start apache2

让 Apache 在系统启动时自动启动也是一个好主意。

sudo systemctl enable apache2

检查Apache版本:

apache2 -v

输出:

Server version: Apache/2.4.41 (Ubuntu)
Server built:   2020-03-05T18:51:00

现在在浏览器地址栏中输入 Ubuntu 20.04 服务器的公共 IP 地址。您应该会看到“它有效!” Web 页面,这意味着 Apache Web 服务器运行正常。如果您在本地 Ubuntu 20.04 计算机上安装 LAMP,请 在浏览器地址栏中输入 127.0.0.1 或 localhost

Apache Web 服务器
Apache Web 服务器

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

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

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

sudo ufw allow http

现在我们需要将www-data (Apache 用户)设置 为文档根目录(也称为 web 根目录)的所有者。默认情况下,它由 root 用户拥有。

sudo chown www-data:www-data /var/www/html/ -R

默认情况下,Apache 使用系统主机名作为其全局ServerName. 如果系统主机名无法在 DNS 中解析,那么您可能会在运行sudo apache2ctl -t命令后看到以下错误。

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

为了解决这个问题,我们可以ServerName在Apache中设置一个全局。使用 Nano 命令行文本编辑器创建新的配置文件。

sudo nano /etc/apache2/conf-available/servername.conf

在此文件中添加以下行。

ServerName localhost

保存并关闭文件。要在 Nano 文本编辑器中保存文件,请按Ctrl+O,然后按 Enter 确认。要退出,请按Ctrl+X。然后启用这个配置文件。

sudo a2enconf servername.conf

重新加载 Apache 以使更改生效。

sudo systemctl reload apache2

现在,如果您sudo apache2ctl -t再次运行该命令,您将不会看到上述错误消息。

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

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

sudo apt install mariadb-server mariadb-client

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

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 密码。然后输入y来设置 MariaDB 服务器的 root 密码。

 MariaDB 服务器的 root 密码
MariaDB 服务器的 root 密码

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

MariaDB 数据库安全
MariaDB 数据库安全

默认情况下,Ubuntu 上的 MariaDB 包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 是 PHP 的新稳定版本,与 PHP7.3 相比具有较小的性能优势。输入以下命令安装PHP7.4和一些常用的PHP模块。

sudo apt install php7.4 libapache2-mod-php7.4 php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline

启用 Apache php7.4 模块,然后重新启动 Apache Web 服务器。

sudo a2enmod php7.4
sudo systemctl restart apache2

检查 PHP 版本信息。

php --version

输出:

PHP 7.4.3 (cli) (built: Mar 26 2020 20:24:23) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologieswith Zend OPcache v7.4.3, Copyright (c), by Zend Technologies

要使用Apache 服务器测试PHP 脚本,我们需要info.php 在文档根目录中创建一个 文件。

sudo nano /var/www/html/info.php

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

<?php phpinfo(); ?>

要在 Nano 文本编辑器中保存文件,请按Ctrl+O,然后按 Enter 确认。要退出,请按Ctrl+X。现在在浏览器地址栏中,输入 server-ip-address/info.php. 替换 server-ip-address 为您的实际 IP。如果您在本地计算机上遵循本教程,请键入 127.0.0.1/info.php 或 localhost/info.php

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

如何使用 Apache 运行 PHP-FPM

基本上有两种方法可以使用 Apache Web 服务器运行 PHP 代码:

  • Apache PHP 模块
  • PHP-FPM。

上面的步骤中使用了Apache PHP7.4模块来处理PHP代码,通常是可以的。但在某些情况下,您需要使用 PHP-FPM 运行 PHP 代码。就是这样。

禁用 Apache PHP7.4 模块。

sudo a2dismod php7.4

安装 PHP-FPM。

sudo apt install php7.4-fpm

启用proxy_fcgisetenvif模块。

sudo a2enmod proxy_fcgi setenvif

启用/etc/apache2/conf-available/php7.4-fpm.conf配置文件。

sudo a2enconf php7.4-fpm

重新启动 Apache 以使更改生效。

sudo systemctl restart apache2

现在,如果您info.php在浏览器中刷新 页面,您会发现 Server API 由 更改Apache 2.0 HandlerFPM/FastCGI,这意味着 Apache Web 服务器会将 PHP 请求传递给 PHP-FPM。

PHP-FPM
PHP-FPM

恭喜!您已经在 Ubuntu 20.04 上成功安装了 LAMP 堆栈(Apache、MariaDB 和 PHP7.4)。为了您的服务器的安全,您应该立即删除info.php文件以防止窥探。

sudo rm /var/www/html/info.php

下一步

我希望本教程可以帮助您在 Ubuntu 20.04 LTS 上安装 LAMP 堆栈。您可能想要安装phpMyAdmin,它是一个免费的开源基于 Web 的数据库管理工具。

滚动至顶部