如何在 Ubuntu 18.04 上安装 Linux、Apache、MySQL、PHP (LAMP)如何在 Ubuntu 18.04 上安装 Linux、Apache、MySQL、PHP (LAMP)如何在 Ubuntu 18.04 上安装 Linux、Apache、MySQL、PHP (LAMP)如何在 Ubuntu 18.04 上安装 Linux、Apache、MySQL、PHP (LAMP)
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 18.04 上安装 Linux、Apache、MySQL、PHP (LAMP)

介绍

“LAMP”堆栈是一组开源软件,通常安装在一起以使服务器能够托管动态网站和网络应用程序。该术语实际上是代表 Linux 操作系统和 Apache 网络服务器的首字母缩写词。站点数据存储在 MySQL 数据库中,动态内容由 PHP 处理。

在本指南中,我们将在 Ubuntu 18.04 服务器上安装 LAMP 堆栈。

先决条件

为了完成本教程,您需要有一个 Ubuntu 18.04 服务器,该服务器具有非根 sudo 启用的用户帐户和配置的基本防火墙。要进行设置,您可以按照我们的 Ubuntu 18.04 初始服务器设置指南进行操作。

第 1 步 — 安装 Apache 并更新防火墙

Apache Web 服务器是一种流行的开源 Web 服务器,可以与 PHP 一起使用来托管动态网站。它有据可查,并且在网络的大部分历史中都被广泛使用。

首先,确保您的 apt 缓存更新为:

  1. sudo apt update

如果这是您第一次在此会话中使用 sudo,系统将提示您提供普通用户的密码以验证您的权限。

更新缓存后,您可以使用以下命令安装 Apache:

  1. sudo apt install apache2

输入此命令后,apt 会告诉您它计划安装哪些软件包以及它们将占用多少额外磁盘空间。按 Y 并按 ENTER 确认,安装将继续。

调整防火墙以允许网络流量

接下来,假设您已按照初始服务器设置说明进行操作并启用了 UFW 防火墙,请确保您的防火墙允许 HTTP 和 HTTPS 流量。您可以检查 UFW 是否具有 Apache 的应用程序配置文件,如下所示:

  1. sudo ufw app list
Output
Available applications: Apache Apache Full Apache Secure OpenSSH

如果您查看 Apache Full 配置文件详细信息,您会看到它启用了到端口 80 和 443 的流量:

  1. sudo ufw app info "Apache Full"
Output
Profile: Apache Full Title: Web Server (HTTP,HTTPS) Description: Apache v2 is the next generation of the omnipresent Apache web server. Ports: 80,443/tcp

要允许此服务器的传入 HTTP 和 HTTPS 流量,请运行:

  1. sudo ufw allow "Apache Full"

您可以通过在 Web 浏览器中访问服务器的公共 IP 地址,立即进行抽查以验证一切是否按计划进行(如果您没有此信息,请参阅下一个标题下的注释以了解您的公共 IP 地址是什么)已经):

http://your_server_ip

您将看到默认的 Ubuntu 18.04 Apache 网页,该网页用于提供信息和测试目的。它应该看起来像这样:

如果您看到此页面,则您的 Web 服务器现在已正确安装并可通过防火墙访问。

如何查找服务器的公共 IP 地址

如果您不知道服务器的公共 IP 地址是什么,可以通过多种方式找到它。通常,这是您用来通过 SSH 连接到服务器的地址。

有几种不同的方法可以从命令行执行此操作。首先,您可以使用 iproute2 工具通过键入以下内容来获取您的 IP 地址:

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

这会给你两三行。它们都是正确的地址,但您的计算机可能只能使用其中一个,所以请随意尝试每一个。

另一种方法是使用 curl 实用程序联系外部方,告诉您它如何查看您的服务器。这是通过询问特定服务器您的 IP 地址是什么来完成的:

  1. sudo apt install curl
  2. curl http://icanhazip.com

无论您使用何种方法获取 IP 地址,将其输入 Web 浏览器的地址栏以查看默认的 Apache 页面。

第 2 步 — 安装 MySQL

现在您已经启动并运行了 Web 服务器,是时候安装 MySQL 了。 MySQL是一个数据库管理系统。基本上,它将组织并提供对您的站点可以存储信息的数据库的访问。

同样,使用 apt 获取并安装此软件:

  1. sudo apt install mysql-server

注意:在这种情况下,您不必在命令之前运行 sudo apt update。这是因为您最近在上面的命令中运行它来安装 Apache。您计算机上的软件包索引应该已经是最新的。

此命令也会向您显示将要安装的软件包列表,以及它们将占用的磁盘空间量。输入 Y 继续。

安装完成后,运行一个简单的安全脚本,该脚本预装了 MySQL,它将删除一些危险的默认设置并锁定对数据库系统的访问。通过运行以下命令启动交互式脚本:

  1. sudo mysql_secure_installation

这将询问您是否要配置 VALIDATE PASSWORD PLUGIN。

注意:启用此功能是一种判断调用。如果启用,不符合指定条件的密码将被 MySQL 拒绝并报错。如果您将弱密码与自动配置 MySQL 用户凭据的软件(例如 phpMyAdmin 的 Ubuntu 软件包)结合使用,这将导致问题。禁用验证是安全的,但您应该始终为数据库凭据使用强而独特的密码。

回答 Y 表示是,或者回答任何其他内容以继续而不启用。

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

如果您回答“是”,系统会要求您选择一个密码验证级别。请记住,如果您输入 2 作为最强级别,您将在尝试设置任何密码时收到错误消息不包含数字、大小写字母和特殊字符的密码,或基于常用词典单词的密码。

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

无论您是否选择设置 VALIDATE PASSWORD PLUGIN,您的服务器接下来都会要求您选择并确认 MySQL root 用户的密码。这不要与系统根混淆。数据库根用户是对数据库系统具有完全权限的管理用户。尽管 MySQL root 用户的默认身份验证方法免除了使用密码,但即使设置了密码,您也应该在此处定义一个强密码作为额外的安全措施。我们稍后会讨论这个。

如果您启用了密码验证,您将看到您刚刚输入的 root 密码的密码强度,并且您的服务器将询问您是否要更改该密码。如果您对当前密码满意,请在提示符处输入 N 表示“否”:

Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n

对于其余问题,请按 Y 并在每次出现提示时按 ENTER 键。这将删除一些匿名用户和测试数据库,禁用远程 root 登录,并加载这些新规则,以便 MySQL 立即尊重您所做的更改。

完成后,测试是否可以通过键入以下内容登录到 MySQL 控制台:

  1. sudo mysql

这将作为管理数据库用户 root 连接到 MySQL 服务器,这是通过在运行此命令时使用 sudo 推断出来的。你应该看到这样的输出:

Output
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5 Server version: 5.7.34-0ubuntu0.18.04.1 (Ubuntu) Copyright (c) 2000, 2021, Oracle and/or its affiliates. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

要退出 MySQL 控制台,请键入:

  1. exit

请注意,即使您在运行 mysql_secure_installation 脚本时定义了密码,您也无需提供密码即可作为 root 用户进行连接。这是因为管理 MySQL 用户的默认身份验证方法是 unix_socket 而不是 password。尽管一开始这看起来像是一个安全问题,但它使数据库服务器更加安全,因为唯一允许以 MySQL 根用户身份登录的用户是具有 sudo 权限的系统用户,这些用户从控制台连接或通过使用相同的特权。实际上,这意味着您将无法使用管理数据库根用户从您的 PHP 应用程序进行连接。为根 MySQL 帐户设置密码作为一种保护措施,以防默认身份验证方法从 unix_socket 更改为 password。

为了提高安全性,最好为每个数据库设置具有较少扩展权限的专用用户帐户,特别是如果您计划在服务器上托管多个数据库。有关如何创建 MySQL 用户和配置数据库访问权限的详细说明,请参阅我们关于如何在 MySQL 上创建新用户和授予权限的指南。

您的 MySQL 服务器现已安装并受到保护。接下来,我们将安装 PHP,这是 LAMP 堆栈中的最后一个组件。

第 3 步 — 安装 PHP

PHP 是您的设置组件,它将处理代码以显示动态内容。它可以运行脚本,连接到您的 MySQL 数据库以获取信息,并将处理后的内容交给您的 Web 服务器,以便它可以向您的访问者显示结果。

再次利用 apt 系统安装 PHP。除了 php 包之外,您还需要 libapache2-mod-php 将 PHP 集成到 Apache 中,以及 php-mysql 包允许 PHP 连接到 MySQL 数据库。运行以下命令以安装所有三个包及其依赖项:

  1. sudo apt install php libapache2-mod-php php-mysql

这应该可以毫无问题地安装 PHP。我们稍后会对此进行测试。

更改 Apache 的目录索引(可选)

在某些情况下,您需要修改 Apache 在请求目录时提供文件的方式。目前,如果用户从服务器请求目录,Apache 将首先查找名为 index.html 的文件。我们想告诉 Web 服务器优先选择 PHP 文件而不是其他文件,让 Apache 首先查找 index.php 文件。如果您不这样做,则放置在应用程序文档根目录中的 index.html 文件将始终优先于 index.php 文件。

要进行此更改,请在您选择的文本编辑器中打开 dir.conf 配置文件。在这里,我们将使用 nano:

  1. sudo nano /etc/apache2/mods-enabled/dir.conf

它看起来像这样:

<IfModule mod_dir.c>
    DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

将 PHP 索引文件(上面突出显示的)移动到 DirectoryIndex 规范之后的第一个位置,如下所示:

<IfModule mod_dir.c>
    DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>

完成后,按 CTRL+X 保存并关闭文件。通过键入 Y 确认保存,然后点击 ENTER 以验证文件保存位置。

在此之后,重新启动 Apache Web 服务器以便识别您的更改。您可以使用以下命令执行此操作:

  1. sudo systemctl restart apache2

您还可以使用 systemctl 检查 apache2 服务的状态:

  1. sudo systemctl status apache2
Sample Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/apache2.service.d └─apache2-systemd.conf Active: active (running) since Thu 2021-07-15 09:22:59 UTC; 1h 3min ago Main PID: 3719 (apache2) Tasks: 55 (limit: 2361) CGroup: /system.slice/apache2.service ├─3719 /usr/sbin/apache2 -k start ├─3721 /usr/sbin/apache2 -k start └─3722 /usr/sbin/apache2 -k start Jul 15 09:22:59 ubuntu1804 systemd[1]: Starting The Apache HTTP Server... Jul 15 09:22:59 ubuntu1804 apachectl[3694]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' di Jul 15 09:22:59 ubuntu1804 systemd[1]: Started The Apache HTTP Server.

按 Q 退出此状态输出。

安装 PHP 扩展(可选)

要扩展 PHP 的功能,您可以选择安装一些附加模块。要查看 PHP 模块和库的可用选项,请将 apt search 的结果通过管道传输到 less 中,这是一个可让您滚动浏览其他命令输出的分页器:

  1. apt search php- | less

使用箭头键上下滚动,然后按 Q 退出。

结果是您可以安装的所有可选组件。它会给你一个简短的描述:

bandwidthd-pgsql/bionic 2.0.1+cvs20090917-10ubuntu1 amd64
  Tracks usage of TCP/IP and builds html files with graphs

bluefish/bionic 2.2.10-1 amd64
  advanced Gtk+ text editor for web and software development

cacti/bionic 1.1.38+ds1-1 all
  web interface for graphing of monitoring systems

ganglia-webfrontend/bionic 3.6.1-3 all
  cluster monitoring toolkit - web front-end

golang-github-unknwon-cae-dev/bionic 0.0~git20160715.0.c6aac99-4 all
  PHP-like Compression and Archive Extensions in Go

haserl/bionic 0.9.35-2 amd64
  CGI scripting program for embedded environments

kdevelop-php-docs/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php

kdevelop-php-docs-l10n/bionic 5.2.1-1ubuntu2 all
  transitional package for kdevelop-php-l10n
…
:

要详细了解每个模块的功能,您可以在互联网上搜索有关它们的更多信息。或者,通过键入以下内容查看包的详细描述:

  1. apt show package_name

将会有很多输出,其中一个名为 Description 的字段将对模块提供的功能进行更详细的解释。

例如,要了解 php-cli 模块的功能,您可以键入:

  1. apt show php-cli

除了大量其他信息外,您还会发现如下内容:

Output
… Description: command-line interpreter for the PHP scripting language (default) This package provides the /usr/bin/php command interpreter, useful for testing PHP scripts from a shell or performing general shell scripting tasks. . PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open source general-purpose scripting language that is especially suited for web development and can be embedded into HTML. . This package is a dependency package, which depends on Ubuntu's default PHP version (currently 7.2). …

如果在研究之后,您决定要安装一个软件包,您可以像安装其他软件一样使用 apt install 命令来安装。

如果您确定 php-cli 是您需要的东西,您可以输入:

  1. sudo apt install php-cli

如果你想安装多个模块,你可以按照 apt install 命令列出每个模块,用空格分隔,如下所示:

  1. sudo apt install package1 package2 ...

此时,您的 LAMP 堆栈已安装和配置。在您执行任何其他操作之前,我们建议您设置一个 Apache 虚拟主机,您可以在其中存储服务器的配置详细信息。

第 4 步 — 设置虚拟主机(推荐)

使用 Apache Web 服务器时,您可以使用虚拟主机(类似于 Nginx 中的服务器块)来封装配置详细信息,并从一台服务器托管多个域。我们将设置一个名为 your_domain 的域,但您应该将其替换为您自己的域名。要了解有关使用 DigitalOcean 设置域名的更多信息,请参阅我们的 DigitalOcean DNS 简介。

Ubuntu 18.04 上的 Apache 默认启用一个服务器块,该服务器块配置为提供来自 /var/www/html 目录的文档。虽然这适用于单个站点,但如果您托管多个站点,它可能会变得笨拙。我们不修改 /var/www/html,而是在 /var/www 中为 your_domain 站点创建一个目录结构,留下 /var/www/html 将作为默认目录提供服务。

为 your_domain 创建目录,如下所示:

  1. sudo mkdir /var/www/your_domain

接下来,使用引用当前登录用户的 $USER 环境变量分配目录的所有权:

  1. sudo chown -R $USER:$USER /var/www/your_domain

如果你没有修改它的 umask 值,你的网站根目录的权限应该是正确的,但你可以通过键入以下内容来确保:

  1. sudo chmod -R 755 /var/www/your_domain

接下来,使用 nano 或您喜欢的编辑器创建示例 index.html 页面:

  1. nano /var/www/your_domain/index.html

在内部,添加以下示例 HTML:

<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

完成后保存并关闭文件。

为了让 Apache 提供这些内容,有必要使用正确的指令创建一个虚拟主机文件。我们不要直接修改位于 /etc/apache2/sites-available/000-default.conf 的默认配置文件,而是在 /etc/apache2/sites-available/ 创建一个新配置文件你的域.conf:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

粘贴以下配置块,它与默认配置类似,但针对我们的新目录和域名进行了更新:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

请注意,我们已将 DocumentRoot 更新为我们的新目录,将 ServerAdmin 更新为 your_domain 站点管理员可以访问的电子邮件。我们还添加了两个指令:ServerName,它建立了应该匹配这个虚拟主机定义的基本域,以及 ServerAlias,它定义了应该匹配的更多名称,就好像他们是基本名称。

完成后保存并关闭文件。

让我们使用 a2ensite 工具启用该文件:

  1. sudo a2ensite your_domain.conf

禁用 000-default.conf 中定义的默认站点:

  1. sudo a2dissite 000-default.conf

接下来,让我们测试配置错误:

  1. sudo apache2ctl configtest

您应该看到以下输出:

Output
Syntax OK

重新启动 Apache 以实施您的更改:

  1. sudo systemctl restart apache2

Apache 现在应该为您的域名提供服务。您可以通过导航到 http://your_domain 来测试它,您应该会在其中看到如下内容:

这样,您的虚拟主机就完全设置好了。不过,在进行更多更改或部署应用程序之前,主动测试您的 PHP 配置会很有帮助,以防出现任何需要解决的问题。

第 5 步 — 在您的 Web 服务器上测试 PHP 处理

为了测试您的系统是否针对 PHP 进行了正确配置,请创建一个名为 info.php 的 PHP 脚本。为了让 Apache 找到这个文件并正确提供它,它必须保存到您的 Web 根目录中。

通过运行以下命令在您在上一步中创建的 Web 根目录中创建文件:

  1. sudo nano /var/www/your_domain/info.php

这将打开一个空白文件。在文件中添加以下文本,这是有效的 PHP 代码:

<?php
phpinfo();

完成后,保存并关闭文件。

现在您可以测试您的 Web 服务器是否能够正确显示此 PHP 脚本生成的内容。要尝试这一点,请在您的网络浏览器中访问此页面。您将再次需要服务器的公共 IP 地址或域名。

您要访问的地址是:

http://your_domain/info.php

你来到的页面应该是这样的:

此页面从 PHP 的角度提供有关您的服务器的一些基本信息。它对于调试和确保正确应用您的设置很有用。

如果您可以在浏览器中看到此页面,那么您的 PHP 正在按预期工作。

您可能希望在此测试后删除此文件,因为它实际上可能将有关您的服务器的信息提供给未经授权的用户。为此,请运行以下命令:

  1. sudo rm /var/www/your_domain/info.php

如果以后需要再次访问信息,您可以随时重新创建此页面。

结论

现在您已经安装了 LAMP 堆栈,您可以选择下一步做什么。您已经安装了一个平台,可以让您在服务器上安装大多数类型的网站和网络软件。

作为紧接着的下一步,您应该通过 HTTPS 为它们提供服务,以确保与您的 Web 服务器的连接是安全的。按照我们关于如何使用 Let's Encrypt 保护 Apache 的指南,使用免费的 TLS/SSL 证书保护您的站点。

其他一些流行的选择是:

  • 安装互联网上最流行的内容管理系统 WordPress。
  • 设置 PHPMyAdmin 以帮助从网络浏览器管理您的 MySQL 数据库。
  • 了解如何使用 SFTP 与您的服务器传输文件。

©2015-2025 艾丽卡 support@alaica.com