如何在CentOS7上安装Linux、Apache、MySQL、PHP(LAMP)堆栈
介绍
“LAMP”堆栈是一组开源软件,通常安装在一起以使服务器能够托管动态网站和 Web 应用程序。 该术语是一个首字母缩写词,代表 Linux 操作系统,带有 Apache Web 服务器。 站点数据通常存储在 MySQL 数据库中,动态内容由 PHP 处理。
在大多数 Linux 系统上,您可以通过从系统的默认包管理存储库下载 mysql-server
包来安装 MySQL。 然而,在 CentOS 7 上,mysql-server
软件包实际上会安装 MariaDB,这是一个社区开发的 MySQL 关系数据库管理系统的分支,可以作为 MySQL 的替代品。 因此,本教程将概述如何安装由 Linux、Apache、MariaDB 和 P 组成的 LAMP 堆栈CentOS 7 服务器上的 HP。
先决条件
在开始阅读本指南之前,您应该在服务器上设置一个单独的非 root 用户帐户。 您可以按照我们的 CentOS 7 初始服务器设置教程来学习如何执行此操作。
第 1 步 — 安装 Apache Web 服务器
Apache 是一种流行的开源 Web 服务器,用于向访问者显示网页。 您可以将其配置为提供 PHP 页面。
使用 CentOS 的包管理器 yum
安装 Apache。 包管理器允许您从 CentOS 维护的存储库安装大多数软件。
在您的终端中键入此命令以安装 httpd
Apache 软件包:
sudo yum install httpd
出现提示时,输入 Y
以确认 Apache 安装。 安装完成后,使用以下命令启动 Apache 服务器:
sudo systemctl start httpd
您可以通过在 Web 浏览器中输入您的公共 IP 地址或域名来测试您的服务器是否正在运行。
注意:如果您使用 DigitalOcean 作为 DNS 托管服务提供商,您可以查看我们的 产品文档 以获取有关如何设置新域名并将其指向您的服务器的详细说明。
如果您没有指向您的服务器的域名或不知道您的服务器的公共 IP 地址,您可以通过运行以下命令找到它:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
这将打印出几个不同的地址。 您可以在 Web 浏览器中尝试其中的每一个。
另一种方法是使用外部方告诉您它如何看待您的服务器。 您可以通过使用以下命令询问特定服务器您的 IP 地址是什么来做到这一点:
curl http://icanhazip.com
无论您选择哪种方法,在您的网络浏览器中输入您的 IP 地址以验证您的服务器是否正在运行。
http://your_server_IP_address
您将看到默认的 CentOS 7 Apache 登录页面:
您可以启用 Apache 在启动时启动:
sudo systemctl enable httpd.service
第 2 步 — 安装 MySQL (MariaDB)
随着您的 Web 服务器启动并运行,您可以安装 MariaDB。 它将组织并提供对您的站点可以存储信息的数据库的访问。
要安装 MariaDB 软件包,请运行:
sudo yum install mariadb-server
安装完成后,启动 MariaDB:
sudo systemctl start mariadb
您可以使用以下命令启用 MariaDB 在启动时启动:
sudo systemctl enable mariadb.service
为了提高数据库服务器的安全性,建议您运行 MariaDB 预装的安全脚本。 此脚本将删除一些不安全的默认设置并锁定对您的数据库系统的访问。
通过运行启动交互式脚本:
sudo mysql_secure_installation
该脚本将引导您完成一系列提示,您可以在其中对 MariaDB 设置进行一些更改。 第一个提示将要求您输入当前的 数据库根 密码。 不要与 系统根 用户混淆。 数据库根 用户是对数据库系统具有完全权限的管理用户。 因为您刚刚安装了 MariaDB,并且没有进行任何配置更改,所以此密码将为空。 在出现提示时按 ENTER
。
下一个提示询问您是否要设置 数据库根 密码。 键入 N
,然后按 ENTER
。
从那里,您可以按 Y
,然后按 ENTER
,以接受所有后续问题的默认值。 这将删除匿名用户和测试数据库,禁用远程 root 登录,并加载这些新规则,以便服务器立即尊重您所做的更改。
完成后,输入以下命令登录 MariaDB 控制台:
sudo mysql
这会将您作为管理数据库用户 root 连接到 MariaDB 服务器:
OutputWelcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 12 Server version: 5.5.68-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
为了提高安全性,最好为每个数据库设置专用的用户帐户,其权限不那么广泛。 如果您计划在服务器上托管多个数据库,这一点尤其重要。
为了演示这样的设置,创建一个名为 example_database
的数据库和一个名为 example_user 的用户。 您可以将这些名称替换为不同的值。
从 MariaDB 控制台运行以下命令以创建新数据库:
CREATE DATABASE example_database;
您可以创建一个新用户并授予他们对刚刚创建的自定义数据库的完全权限。 以下命令将此用户的密码定义为 password
,但您应该将此值替换为安全密码:
GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
此命令赋予 example_user 用户对 example_database
数据库的完全权限,同时阻止该用户在您的服务器上创建或修改其他数据库。
使用 FLUSH
语句重新加载并保存您刚刚授予 example_user 的权限:
FLUSH PRIVILEGES;
退出 MariaDB 外壳:
exit
您可以通过再次登录 MariaDB 控制台来测试新用户是否具有适当的权限,但使用您在上面创建的 example_user 凭据:
mysql -u example_user -p
请注意此命令中的 -p
标志,它将提示您输入您在创建 example_user 用户时选择的密码。 登录 MariaDB 控制台后,使用以下语句确认您有权访问 example_database
数据库:
SHOW DATABASES;
您的 example_database
应该列在输出中:
Output+--------------------+ | Database | +--------------------+ | example_database | | information_schema | +--------------------+ 2 rows in set (0.000 sec)
要退出 MariaDB shell,请键入:
exit
您的数据库系统已设置好,您可以继续安装 PHP。
第 3 步 — 安装 PHP
你已经安装了 Apache 来提供你的内容和 MariaDB 来存储和管理你的数据。 PHP 将处理代码以向用户显示动态内容。 除了 php
包之外,您还需要 php-mysql
,这是一个 PHP 模块,它允许 PHP 与基于 MySQL 的数据库进行通信。 核心 PHP 包将自动安装为依赖项。
使用此命令安装带有 yum
的 php
和 php-mysql
软件包:
sudo yum install php php-mysql
重新启动 Apache Web 服务器以启用您安装的 PHP 模块:
sudo systemctl restart httpd.service
您的服务器现在配置了 LAMP 堆栈应用程序所需的所有组件。 下一步是测试您的配置以确保一切正常工作。
第 4 步 — 在您的 Apache Web 服务器上测试 PHP
CentOS 7 上的默认 Apache 安装将创建一个位于 /var/www/html
的文档根目录。 您无需对 Apache 的默认设置进行任何更改,以便 PHP 在您的 Web 服务器中正常工作。
但是,您可以进行调整以更改 Apache 文档根文件夹的默认权限设置。 这使您可以使用常规系统用户在该目录中创建和修改文件,而无需在每个命令前加上 sudo
。
以下命令会将默认 Apache 文档根目录的所有权更改为名为 sammy
的用户和组,因此请务必替换此命令中突出显示的用户名和组以反映系统的用户名和组:
sudo chown -R sammy.sammy /var/www/html/
您可以创建一个 PHP 测试文件以确保 Web 服务器按预期工作。 使用您喜欢的文本编辑器创建此文件。 以下示例使用 CentOS 7 中默认的 vi
文本编辑器。
在 var/www/html
目录下创建一个名为 info.php
的 PHP 文件:
vi /var/www/html/info.php
这将在 /var/www/html
目录中打开一个空白 PHP 文件。 在vi
编辑器中按I
进入INSERT
模式。 这允许您在文本编辑器中键入和进行更改。 键入以下 PHP 代码:
/var/www/html/info.php
<?php phpinfo(); ?>
此 PHP 代码显示有关在您的服务器上运行的 PHP 环境的信息。 完成对该文件的更改后,按 ESC
键退出 vi
中的 INSERT
模式。 键入 :x
– 一个分号和小写字母 x – 保存并关闭文件。
您可以通过转到您服务器的公共 IP 地址,然后是 /info.php
来测试您的 Web 服务器是否正确显示 PHP 内容:
http://your_server_IP_address/info.php
您的浏览器中将显示一个类似于下图的网页:
此页面从 PHP 的角度为您提供有关服务器的信息。 它对于调试和确保正确应用您的设置很有用。 在检查您的 PHP 服务器的相关信息后,最好删除此文件,因为它包含有关您的 PHP 环境和您的 CentOS 服务器的敏感信息。
您可以使用 rm
删除此文件:
rm /var/www/html/info.php
如果您以后需要再次访问该信息,您可以随时重新创建此页面。 接下来,您可以使用 PHP 测试数据库连接。
第 5 步 – 使用 PHP 测试数据库连接(可选)
您可以通过创建包含一些测试数据的测试表来测试 PHP 是否连接到 MariaDB 并执行数据库查询。 您可以从 PHP 脚本中查询其内容。
首先,使用您在本指南的 Step 2 中创建的数据库用户连接到 MariaDB 控制台:
mysql -u example_user -p
在 MariaDB 控制台中,运行以下语句以在 example_database
中创建一个名为 todo_list
的表:
CREATE TABLE example_database.todo_list ( item_id INT AUTO_INCREMENT, content VARCHAR(255), PRIMARY KEY(item_id) );
MariaDB 控制台将在每次编辑后通知您有关表的更改。
Query OK, 0 rows affected (0.00 sec)
在测试表中插入几行内容。 您可以使用不同的值重复下一个命令几次,以填充您的测试表:
INSERT INTO example_database.todo_list (content) VALUES ("My first important item");
要确认数据已成功保存到您的表中,请运行:
SELECT * FROM example_database.todo_list;
下面是一个输出示例:
Output+---------+--------------------------+ | item_id | content | +---------+--------------------------+ | 1 | My first important item | | 2 | My second important item | | 3 | My third important item | | 4 | and this one more thing | +---------+--------------------------+ 4 rows in set (0.000 sec)
确认您的测试表中有有效数据后,您可以退出 MariaDB 控制台:
exit
现在您可以创建将连接到 MariaDB 并查询您的内容的 PHP 脚本。 使用您喜欢的编辑器在您的自定义 Web 根目录中创建一个新的 PHP 文件。 此示例使用 vi
:
vi /var/www/html/todo_list.php
通过在 vi
文本编辑器中按 I
添加以下内容,记住将 example_user
和 password
替换为您自己的:
/var/www/html/todo_list.php
<?php $user = "example_user"; $password = "password"; $database = "example_database"; $table = "todo_list"; try { $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password); echo "<h2>TODO</h2><ol>"; foreach($db->query("SELECT content FROM $table") as $row) { echo "<li>" . $row['content'] . "</li>"; } echo "</ol>"; } catch (PDOException $e) { print "Error!: " . $e->getMessage() . "<br/>"; die(); }
完成编辑后,按 ESC
保存并关闭文件,然后在 vi
中键入 :x
。
您现在可以通过访问您的服务器的主机名或公共 IP 地址,然后在 /todo_list.php
后的 Web 浏览器中访问此页面:
http://server_host_or_IP/todo_list.php
下面是一个网页示例,显示了您在测试表中插入的内容:
结论
在本指南中,您为使用 Apache 作为 Web 服务器为访问者提供 PHP 网站和应用程序奠定了灵活的基础。 您已经设置了 Apache 来处理 PHP 请求,并设置了 MariaDB 数据库来存储您网站的数据。