如何在 CentOS 7 上安装 Linux、Apache、MySQL、PHP(LAMP)协议栈

介绍

LAMP堆栈是一组开源软件,通常被安装在一起,使服务器能够托管动态网站和Web应用程序. 这个术语是代表 L inux操作系统的缩写,与 ** A** pache Web 服务器。

在大多数Linux系统中,您可以通过从系统的默认包管理存储库下载mysql-server包来安装MySQL,但是在CentOS 7上,mysql-server包实际上会安装MariaDB,这是MySQL关系数据库管理系统的一个社区开发的叉子,它作为MySQL的插入替代品。

前提条件

在您开始使用本指南之前,您应该在您的服务器上设置一个单独的非根用户帐户,您可以通过遵循我们的 CentOS 7 的初始服务器设置教程来了解如何做到这一点。

步骤 1 – 安装 Apache Web Server

Apache 是一个流行的开源 Web 服务器,用于向访问者显示 Web 页面,您可以将其配置为服务 PHP 页面。

使用CentOS的包管理器yum安装Apache. 包管理器允许您从CentOS维护的存储库中安装大多数软件。

在您的终端中输入此命令来安装httpd Apache 包:

1sudo yum install httpd

当被提示时,请输入Y,以确认Apache安装。 一旦安装完成,请使用以下命令启动Apache服务器:

1sudo systemctl start httpd

您可以通过在您的 Web 浏览器中输入您的公共 IP 地址或域名来测试您的服务器是否正在运行。

<$>[注] :如果您正在使用DigitalOcean作为DNS托管提供商,您可以检查我们的 产品文件 有关如何设置新域名并将其指向您的服务器的详细说明。

如果您没有指向您的服务器的域名或不知道您的服务器的公共IP地址,您可以通过运行以下命令来找到它:

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

這將打印出幾個不同的地址,您可以在您的網頁瀏覽器中嘗試每一個。

另一种方法是使用外部方来告诉你它如何看待你的服务器,你可以这样做,通过问一个特定的服务器你的IP地址是用这个命令:

1curl http://icanhazip.com

无论您选择哪种方法,请在 Web 浏览器中输入您的 IP 地址,以确认您的服务器正在运行。

1http://your_server_IP_address

You will be presented with the default CentOS 7 Apache landing page: CentOS 7 Apache’s default web server status landing page after initial installation.

您可以启用 Apache 启动:

1sudo systemctl enable httpd.service

第2步:安装MySQL(MariaDB)

随着您的 Web 服务器的运行,您可以安装 MariaDB. 它将组织并提供访问您的网站可以存储信息的数据库。

要安装 MariaDB 软件包,请运行:

1sudo yum install mariadb-server

安装完成后,请启动 MariaDB:

1sudo systemctl start mariadb

您可以使用此命令启动 MariaDB 启动:

1sudo systemctl enable mariadb.service

为了提高您的数据库服务器的安全性,建议您运行预先安装的安全脚本 MariaDB. 此脚本将删除一些不安全的默认设置,并锁定访问您的数据库系统。

通过运行开始交互式脚本:

1sudo mysql_secure_installation

此脚本将带您通过一系列提示,您可以对您的 MariaDB 设置做出一些更改。 第一条提示将要求您输入当前的 database root 密码。 这不应该与 ** system root** 用户混淆。 该 ** database root** 用户是一个管理用户,对数据库系统具有完整的权限。 因为您刚刚安装了 MariaDB 并且没有进行任何配置更改,此密码将是空的。

下一个提示会问你是否想设置一个 数据库根 密码. 输入N,然后按ENTER

从那里,您可以按Y,然后按ENTER,以接受所有后续问题的默认值. 这将删除匿名用户和测试数据库,禁用远程 root 登录,并加载这些新规则,以便服务器立即尊重您所做的更改。

完成后,请通过输入以下方式登录 MariaDB 控制台:

1sudo mysql

这将您连接到 MariaDB 服务器作为管理数据库用户 root :

1[secondary_label Output]
2Welcome to the MariaDB monitor. Commands end with ; or \g.
3Your MariaDB connection id is 12
4Server version: 5.5.68-MariaDB MariaDB Server
5
6Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
7
8Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

为了提高安全性,最好为每个数据库设置具有较少扩展权限的专用用户帐户,这尤其重要,如果您计划在服务器上托管多个数据库。

要演示此设置,请创建一个名为example_database的数据库和一个名为 example_user 的用户。

从 MariaDB 控制台运行以下命令来创建新数据库:

1CREATE DATABASE example_database;

您可以创建一个新的用户,并在您刚刚创建的自定义数据库中授予他们完整的权限. 以下命令将该用户的密码定义为密码,但您应该用安全密码替换此值:

1GRANT ALL ON example_database.* TO 'example_user'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

此命令赋予 example_user 用户对example_database数据库的完整权限,同时阻止该用户在您的服务器上创建或修改其他数据库。

使用FLUSH语句重新加载并保存您刚刚向 example_user 授予的权限:

1FLUSH PRIVILEGES;

退出 MariaDB 壳:

1exit

您可以通过再次登录到 MariaDB 控制台来测试新用户是否具有适当的权限,但使用您上面创建的 example_user 凭证:

1mysql -u example_user -p

请注意这个命令中的p旗,该命令会提示您在创建 example_user 用户时选择的密码。登录到MariaDB控制台后,请通过此语句确认您可以访问example_database数据库:

1SHOW DATABASES;

您的example_database应列出输出中:

1[secondary_label Output]
2+--------------------+
3| Database           |
4+--------------------+
5| example_database   |
6| information_schema |
7+--------------------+
82 rows in set (0.000 sec)

要退出 MariaDB 壳,键入:

1exit

您的数据库系统已设置,您可以继续安装PHP。

步骤三:安装PHP

你安装了Apache来服务你的内容,MariaDB来存储和管理你的数据。PHP将处理代码来向用户显示动态内容。除了php包外,你还需要php-mysql,一个PHP模块,允许PHP与基于MySQL的数据库进行通信。

使用此命令安装phpphp-mysql包与yum:

1sudo yum install php php-mysql

重新启动 Apache Web 服务器以启用您安装的 PHP 模块:

1sudo systemctl restart httpd.service

您的服务器现在已配置为您的 LAMP 堆栈应用程序所需的所有组件,下一步是测试您的配置,以确保一切正常工作。

步骤 4 – 在您的 Apache Web 服务器上测试 PHP

在 CentOS 7 上的默认 Apache 安装将创建位于 /var/www/html 的文档根,您不需要对 Apache 的默认设置进行任何更改,以便 PHP 在您的 Web 服务器中正常工作。

但是,您可以进行调整,以更改您的Apache文档根文件夹的默认权限设置,这允许您在正常的系统用户中创建和修改该目录中的文件,而无需以sudo为前缀每个命令。

以下命令会将默认的 Apache 文档根的所有权更改为名为sammy的用户和组,因此请确保在该命令中更换突出的用户名和组以反映您的系统的用户名和组:

1sudo chown -R sammy.sammy /var/www/html/

您可以创建一个 PHP 测试文件,以确保 Web 服务器按预期工作. 使用您偏好的文本编辑器创建此文件. 以下示例使用 CentOS 7 中的默认文本编辑器 vi

var/www/html目录中创建一个名为info.php的PHP文件:

1vi /var/www/html/info.php

这将打开一个空白的PHP文件在/var/www/html目录中。 按I进入INSERT模式在vi编辑器中。 这允许您在文本编辑器中键入并进行更改。 输入以下PHP代码:

1[label /var/www/html/info.php]
2<?php phpinfo(); ?>

此PHP代码显示了在您的服务器上运行的PHP环境的信息.当您完成对该文件的更改时,请按ESC键退出INSERT模式在vi中。

您可以通过访问您的服务器的公共 IP 地址来测试您的 Web 服务器是否正确地显示 PHP 内容,然后是 /info.php:

1http://your_server_IP_address/info.php

A web page, similar to the one below, will be displayed in your browser: CentOS 7 default PHP information web page containing information about the current PHP configuration

此页面为您提供从PHP的角度了解您的服务器的信息,它有助于调试并确保您的设置得到正确应用。 检查有关您的PHP服务器的相关信息后,最好删除此文件,因为它包含有关您的PHP环境和您的CentOS服务器的敏感信息。

您可以使用「rm」來刪除此檔案:

1rm /var/www/html/info.php

您可以随时重新创建此页面,如果需要稍后再次访问信息,然后您可以使用PHP测试数据库连接。

步骤 5 – 使用 PHP 测试数据库连接(可选)

您可以通过创建一个测试表和一些测试数据来测试是否 PHP 连接到 MariaDB 并执行数据库查询,您可以从 PHP 脚本中查询其内容。

首先,与您在 [步骤 2](# step-2-%E2%80%94-installing-mariadb)中创建的数据库用户连接到 MariaDB 控制台:

1mysql -u example_user -p

从 MariaDB 控制台中运行以下语句,在您的例子数据库中创建一个名为todo_list的表:

1CREATE TABLE example_database.todo_list (
2    item_id INT AUTO_INCREMENT,
3    content VARCHAR(255),
4    PRIMARY KEY(item_id)
5);

MariaDB 控制台将在每次编辑后通知您对表的更改。

1Query OK, 0 rows affected (0.00 sec)

在测试表中插入几个内容行. 您可以重复下一个命令几次,使用不同的值,填充测试表:

1INSERT INTO example_database.todo_list (content) VALUES ("My first important item");

若要确认数据已成功保存到表中,请运行:

1SELECT * FROM example_database.todo_list;

下面是出口的例子:

 1[secondary_label Output]
 2+---------+--------------------------+
 3| item_id | content                  |
 4+---------+--------------------------+
 5|       1 | My first important item  |
 6|       2 | My second important item |
 7|       3 | My third important item  |
 8|       4 | and this one more thing  |
 9+---------+--------------------------+
104 rows in set (0.000 sec)

在确认您在测试表中有有效数据后,您可以退出 MariaDB 控制台:

1exit

现在,您可以创建将连接到MariaDB的PHP脚本,并查询您的内容。 使用您喜爱的编辑器创建一个新的PHP文件在您的自定义Web根目录中。

1vi /var/www/html/todo_list.php

在文本编辑器中按下I来添加以下内容,记住用自己的代替example_userpassword:

 1[label /var/www/html/todo_list.php]
 2<?php
 3$user = "example_user";
 4$password = "password";
 5$database = "example_database";
 6$table = "todo_list";
 7
 8try {
 9  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
10  echo "<h2>TODO</h2><ol>"; 
11  foreach($db->query("SELECT content FROM $table") as $row) {
12    echo "<li>" . $row['content'] . "</li>";
13  }
14  echo "</ol>";
15} catch (PDOException $e) {
16    print "Error!: " . $e->getMessage() . "<br/>";
17    die();
18}

当您完成编辑时,将文件保存并关闭,按ESC,然后在vi中键入:x

您现在可以通过访问您的服务器的主机名称或公共 IP 地址访问您的 Web 浏览器中的此页面,然后是 /todo_list.php:

1http://server_host_or_IP/todo_list.php

Below is an example of the web page, revealing the content you've inserted in your test table: Example of the PHP web page outputting the data that was inserted into the test table in MariaDB

结论

在本指南中,您已经建立了一个灵活的基础,为您的访问者提供PHP网站和应用程序,使用Apache作为Web服务器,您已经设置了Apache来处理PHP请求,并设置了一个MariaDB数据库来存储您的网站数据。

Published At
Categories with 技术
comments powered by Disqus