本教程将向您展示如何在 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
。
如果连接被拒绝或无法完成,则可能有防火墙阻止传入请求到 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 密码。
接下来,您可以按 Enter 回答所有剩余的问题,这将删除匿名用户、禁用远程 root 登录和删除测试数据库。这一步是 MariaDB 数据库安全的基本要求。(注意 Y 是大写的,这意味着它是默认答案。)
默认情况下,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 Technologies
with 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_fcgi
和setenvif
模块。
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 Handler
为FPM/FastCGI
,这意味着 Apache Web 服务器会将 PHP 请求传递给 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 的数据库管理工具。