本教程适用于以下操作系统版本

  • Ubuntu 24.04(Noble Numbat)
  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 18.04(Bionic Beaver)
  • Ubuntu 16.04(Xenial Xerus)
  • Ubuntu 15.10(Wily Werewolf)
  • Ubuntu 15.04(Vivid Vervet)

本页内容

  • 准备工作
  • 安装 Apache 网页服务器
  • 安装 MariaDB 数据库服务器
  • 安装 PHP
  • Apache 与 PHP 集成
  • 在 Apache 中创建虚拟主机
  • 测试 Apache 虚拟主机

LAMP 技术栈(Linux、Apache、MySQL/MariaDB 和 PHP)是一套用于构建网站和 Web 应用的开源技术组合。LAMP 栈中的每个组件都是免费的,你可以将其安装在开发环境和生产环境中使用。

在本指南中,你将学习如何在 Ubuntu 24.04「Noble Numbat」服务器上安装 LAMP 技术栈(Linux、Apache、MySQL/MariaDB 和 PHP)。你还将学习如何加固 MariaDB 安全,以及如何使用 Apache 网页服务器创建虚拟主机。

准备工作

在开始本指南之前,请确保你拥有一台运行 Ubuntu 24.04「Noble Numbat」的服务器,并且拥有 root 用户或具备管理员权限的普通用户。

安装 Apache 网页服务器

Apache 是互联网上最流行的网页服务器软件之一。许多大型网站都运行在 Apache 之上,包括维基百科(Wikipedia)、Slack、LinkedIn、《纽约时报》以及众多其他站点。

Apache 网页服务器以其模块化特性而闻名,用户可以通过模块来扩展其功能。在本节中,你将在 Ubuntu 24.04 服务器上安装 Apache 网页服务器。

首先,运行以下命令更新 Ubuntu 软件包列表并获取最新的软件包信息。

sudo apt update

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

现在使用下面的 apt install 命令安装 Apache 网页服务器。输入 Y 确认进行安装。

sudo apt install apache2

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

安装完成后,apache2 服务将启动并在系统开机时自动运行。使用以下命令检查 apache2 服务的状态。

sudo systemctl is-enabled apache2
sudo systemctl status apache2

你会看到 apache2 服务的状态为「enabled(已启用)」,并将在开机时自动运行。当前 apache2 服务的状态为「active (running)(运行中)」。

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

如果你的 Ubuntu 上已启用 UFW(Uncomplicated Firewall,简易防火墙),你需要通过 UFW 允许访问 Apache 网页服务器的流量。

运行以下 ufw 命令,通过「Apache Full」配置文件允许访问 Apache 网页服务器的流量。UFW 上的「Apache Full」配置文件会同时开放 HTTP 和 HTTPS 端口。

sudo ufw allow 'Apache Full'

现在运行以下命令验证 UFW 上的规则列表。你将看到「Apache Full」配置文件的状态为「ALLOW(允许)」。

sudo ufw status

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

最后,打开你的网页浏览器并访问服务器的 IP 地址,例如 http://192.168.5.30/。如果一切顺利,你将看到类似如下的 Apache 网页服务器 index.html 页面:

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

如果你不确定 Ubuntu 服务器的 IP 地址,请运行以下命令查看服务器 IP 地址。

ip a

安装 MariaDB 数据库服务器

MariaDB 是 MySQL 的一个免费开源关系型数据库管理系统(RDBMS)分支。它由 MySQL 的原创开发人员打造,但拥有更多功能、更高的查询速度以及更好的可扩展性。

在本次 LAMP 技术栈安装中,你将使用 MariaDB 而非 MySQL。现在,你将在 Ubuntu 24.04 上安装并加固 MariaDB 数据库服务器。

要在 Ubuntu 上安装 MariaDB 服务器,请运行以下 apt install 命令。输入 Y 继续执行安装。

sudo apt install mariadb-server

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

安装完成后,MariaDB 服务应该已经在运行并在系统中启用。使用以下命令检查 MariaDB 服务的状态。

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

当 mariadb 服务已启用时,你会看到「enabled」的输出。同时你还会看到当前 mariadb 服务的状态为「active (running)(运行中)」。

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

MariaDB 服务器运行后,你需要通过 mariadb-secure-installation 工具来加固其安全性。该工具可以帮助你设置 MariaDB 的 root 密码、禁用 MariaDB root 用户的远程登录认证,并移除 MariaDB 服务器中的默认数据。

运行以下 mariadb-secure-installation 命令来加固你的 MariaDB 服务器部署。

sudo mariadb-secure-installation

当提示输入 MariaDB root 密码时,直接按 ENTER 键。

Enter current password for root (enter for none):
OK, successfully used password, moving on...

当被问及是否切换到 unix_socket 认证时,输入 n。

Switch to unix_socket authentication [Y/n] n
 ... skipping.

输入 Y 来配置 MariaDB root 密码。然后,输入你的新密码并重复确认。

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

输入 Y 以移除 MariaDB 服务器安装中的默认匿名用户。

Remove anonymous users? [Y/n] Y
 ... Success!

输入 Y 以禁止 MariaDB root 用户远程登录。root 用户应始终从 localhost(本地)连接。

Disallow root login remotely? [Y/n] Y
 ... Success!

现在再次输入 Y,以移除 MariaDB 服务器中默认的 test 数据库及其权限。

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

输入 Y 以重新加载权限表,并应用你到目前为止所做的所有更改。

Reload privilege tables now? [Y/n] Y
 ... Success!

完成后,你将看到如下信息:

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

安装 PHP

PHP 是一种用于 Web 开发的开源编程语言。它也为最流行的内容管理系统(CMS,如 WordPress 和 Drupal)提供支持。在本节中,你将安装 PHP 以及下面的一些扩展:

  • libapache2-mod-php:该软件包用于启用 Apache 网页服务器与 PHP 之间的集成。
  • php-mysql:PHP 的 MySQL/MariaDB 驱动。你必须安装此软件包,尤其是在以 MySQL/MariaDB 为数据库开发或部署 PHP Web 应用时。
  • php-opcache 和 php-apcu:这些软件包可提升 PHP Web 应用的缓存性能。

首先,使用以下命令在 Ubuntu 上安装 PHP 软件包。输入 Y 确认进行安装。

sudo apt install php libapache2-mod-php php-mysql php-curl php-gd php-json php-intl php-bcmath php-opcache php-apcu php-mbstring php-fileinfo php-xml php-soap php-tokenizer php-zip

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

安装完成后,运行以下 nano 编辑器命令来修改 PHP 配置文件 php.ini。

sudo nano /etc/php/8.3/apache2/php.ini

使用以下配置修改默认 PHP 设置,并确保将 date.timezone 调整为你的服务器时区,将 memory_limit 调整为 Ubuntu 服务器的最大内存。

date.timezone = Europe/Paris
memory_limit = 256M
upload_max_file_size = 64M
max_execution_time = 300

保存文件并退出。

最后,运行以下命令重启 apache2 服务,使你的 PHP 配置更改生效。

sudo systemctl restart apache2

Apache 与 PHP 集成

为了验证 Apache 与 PHP 的集成,你将创建一个 PHPINFO 文件,用于显示 PHP 安装的详细信息。你的 PHPINFO 文件应位于默认的 DocumentRoot 目录 /var/www/html。

使用以下命令创建一个新的 info.php 文件。

echo "<?php phpinfo(); ?>" > /var/www/html/info.php

打开网页浏览器并访问 http://192.168.5.30/info.php。如果你的 Apache 和 PHP 安装成功,你将看到如下的 PHPINFO 页面:

如你所见,PHP 8.3 正通过 Apache Handler 与 Apache 网页服务器一起运行。

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

向下滚动页面,你还会看到已安装的 PHP mysql 模块。

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

最后,还可以查看通过 APC 实现的 PHP 缓存模块,如下所示。

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

在 Apache 中创建虚拟主机

虚拟主机(Virtual Host)是指在同一台服务器上托管多个网站(例如 site1.com 和 site2.com)的技术。在本节中,你将学习如何在 Apache 网页服务器上配置虚拟主机。

首先,运行以下命令创建一个新的 DocumentRoot 目录 /var/www/mysite/public_html 以及一个自定义的 index.html 页面。

mkdir -p /var/www/mysite/public_html
echo "Welcome to mysite.com" > /var/www/mysite/public_html/index.html

现在运行以下命令,将 /var/www/mysite 目录的所有权更改为 www-data 用户。

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

之后,使用以下 nano 编辑器命令创建一个新的 Apache 虚拟主机配置文件 /etc/apache2/sites-available/mysite.conf。

sudo nano /etc/apache2/sites-available/mysite.conf

插入以下虚拟主机配置。请务必将 ServerName 选项改为你的域名,并将 DocumentRoot 目录改为路径 /var/www/mysite/public_html。

<VirtualHost *:80>
 ServerAdmin 
[email protected]
 ServerName mysite.com
 ServerAlias www.mysite.com
 DocumentRoot /var/www/mysite/public_html
 ErrorLog ${APACHE_LOG_DIR}/mysite-error.log
 CustomLog ${APACHE_LOG_DIR}/mysite-access.log combined
</VirtualHost>

保存并退出文件。

接下来,运行以下命令来启用虚拟主机文件 mysite.conf 并验证 Apache 配置语法。

sudo a2ensite mysite.conf
sudo apachectl configtest

如果你的 Apache 语法正确无误,你将看到「Syntax OK(语法正确)」的输出。

现在运行以下命令重启 apache2 服务,使新的虚拟主机配置生效。

sudo systemctl restart apache2

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

测试 Apache 虚拟主机

要访问你的虚拟主机域名,你可以修改本地系统的 hosts 文件。

  • Windows 用户:以管理员身份编辑文件 C:\Windows\System32\drivers\etc\hosts。
  • Linux 或 macOS 用户:使用 sudo/root 权限编辑 /etc/hosts 文件。

输入你的虚拟主机域名(例如 mysite.com)以及你的 Ubuntu 服务器 IP 地址。

192.168.5.30 mysite.com

保存文件并退出编辑器。

现在打开网页浏览器并访问 http://mysite.com/。如果你的虚拟主机配置成功,你将看到如下自定义的 index.html 页面:

在 Ubuntu 24.04 上搭建 LAMP 环境(Apache+MariaDB+PHP)

你已完成在 Ubuntu 24.04「Noble Numbat」服务器上安装 LAMP 技术栈(Linux、Apache、MySQL/MariaDB 和 PHP)。