本教程将向您展示如何在 Ubuntu 20.04 LTS 上安装 LAMP 堆栈。软件栈是一组捆绑在一起的软件工具。LAMP 代表 Linux、Apache、MariaDB/MySQL 和 PHP,所有这些都是开源且免费使用的。它是支持动态网站和 Web 应用程序的 null 常见的软件堆栈。Linux 是操作系统;Apache 是网络服务器;MariaDB/MySQL 是数据库服务器,PHP 是负责生成动态网页的服务器端脚本语言。
要学习本教程,您需要在本地计算机或远程服务器上运行 Ubuntu 20.04 操作系统。
如果您正在寻找 VPS(虚拟专用服务器),那么您可以通过此特殊链接在 Vultr 注册一个帐户,以获得 50 美元的免费赠金。(仅限新用户)。如果您已经是 Vultr 用户,那么您可以通过此特殊链接在 Vultr 上注册一个帐户,以获得 50 美元的免费赠金(仅限新用户)。
如果你需要用域名设置 LAMP 堆栈,我建议从 Godaddy 购买域名,因为价格低廉,并且他们提供终身免费的 whois 隐私保护。
在我们安装 LAMP 堆栈之前, null 好更新存储库和软件包。在 Ubuntu 20.04 操作系统上运行以下命令。
sudo apt update
sudo apt upgrade
输入以下命令来安装 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
再次运行该命令,您将不会看到上述错误消息。
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 是 PHP 的 null 新稳定版本,与 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 Web 服务器运行 PHP 代码:
上面的步骤中使用了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 的数据库管理工具。