CentOS 7 安装 Apache, MySQL, PHP 指南

导语

一个 LAMP 软件栈通常由多个开源软件组合而成,它们合力驱动一个服务器去运行 web 站点和应用。LAMP 这个术语实际上是一个由 Linux 操作系统,Apache web 服务器,MySQL 数据库服务器,以及 PHP 编程环境组合缩略而成的。

在这篇指南中,我们将为一个搭载 CentOS 7 操作系统的服务器安装 LAMP 软件栈。CentOS 已经满足了 LAMP 软件栈的第一个需求:一个 Linux 操作系统。


预备条件

在继续阅读这篇指南之前,请确认你使用具有 root 权限的用户登录了 CentOS。如果对于当前用户如何取得 root 权限存在疑问,请咨询服务器的管理人员。


第一步 —— 安装 Apache

Apache 是目前世界上最广泛使用的 web 服务器,这使得它成为运行网站的绝佳选择。

利用 CentOS 的软件安装包管理系统 yum,我们可以轻易地安装 Apache。它为我们提供了无痛式地从 CentOS 维护的仓库获取并安装绝大多数软件的方式。你可以前往这里 (https://www.digitalocean.com/community/tutorials/how-to-set-up-and-use-yum-repositories-on-a-centos-6-vps) 获取更多如何使用 yum 安装包管理系统的指导。

对于我们的目的而言,安装 Apache 只需要在 CentOS 命令终端敲入这条命令就行了:

$ sudo yum install httpd

由于使用了 sudo 命令,这些操作将以 root 权限执行。如果当前用户的身份不是 root,CentOS 将会要求你输入当前用户的密码,以验证你的意图。

不用一会儿,你的 web 服务器就安装好了。

一旦安装成功,你就可以设置服务器启动时就开启 Apache 服务:

$ sudo systemctl enable httpd.service

你可以通过重新启动服务器,然后在命令行终端中敲入这条命令来验证 Apache 服务是否在服务器启动时自动开启了:

$ sudo systemctl is-enabled httpd.service

如果你看到了这样的响应:

enabled

则说明 Apache 服务已经配置为在服务器启动时自动开启了。

在服务器上启动 Apache 服务的命令为:

$sudo systemctl start httpd.service

重新启动 Apache:

$sudo systemctl restart httpd.service

停止 Apache:

$sudo systemctl stop httpd.service

以及

如果你的服务器正在运行防火墙,请运行下列命令以允许它进行 HTTP 和 HTTPS 通信:

$sudo firewall-cmd --permanent --zone=public --add-service=http

$sudo firewall-cmd --permanent --zone=public --add-service=https

$sudo firewall-cmd --reload

在 Apache 启动的情况下,你可以在浏览器里访问服务器的公网 IP 地址以验证一切如计划那样顺利地进行(如果你现在还不知道如何获取服务器的公网 IP 地址,请参考下一标题中的内容):

http://<服务器的公网 IP 地址>/

你将会看到一个出于通知和测试目的而存在的默认 CentOS 7 Apache 网页。它应该长这样子:

如果你看到了这个页面,那么你的 web 服务器现在已经正确地安装了。

如何找到服务器的公网 IP 地址

如果你不知道服务器的公网 IP 地址是什么,你可以使用多种方式找到它。通常情况下,它就是你通过 SSH 用以连接服务器的地址。

在命令行终端中,你有多种方式找到它。首先,你可以通过下面这条命令,让 iproute2 工具帮你找出服务器的 IP 地址:

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

这将会返回一到两行结果。它们都是正确的 IP 地址,但是你的计算机可能只能使用其中的一条,所以随意试试其中的每一条。

另一种方法是让一个外部组织告诉你它是怎样找到你的服务器的,你可以通过询问特定的服务器来获知自己的 IP 地址:

$ curl http://icanhazip.com


第二步 —— 安装 MySQL

MySQL 是一个 web 服务器上流行的数据库管理系统。然而,从 CentOS 7 的软件仓库不再提供 MySQL 的安装包,转而提供 MariaDB 作为默认的数据库管理系统。MariaDB 作为 MySQL 的简易替代品,足以胜任通常意义上你对的数据库系统的需求 (https://mariadb.com/kb/en/mariadb/mariadb-vs-mysql-compatibility/)。你可以前往这里 (https://www.linode.com/docs/databases/mariadb/how-to-install-mariadb-on-centos-7) 获取在 CentOS 7 上安装 MariaDB 的指导。

如果你不论如何都更需要 MySQL 作为 web 服务器上的数据管理系统,那么请继续阅读下面这部分指南,它将指引你如何在运行 CentOS 7 的服务器上安装并配置 MySQL 数据库。

开始安装 MySQL 之前,请更新系统上的软件到最新版:

$ sudo yum update

由于 CentOS 7 的软件仓库不再提供 MySQL 的安装包,我们必须从 MySQL 社区仓库 (https://dev.mysql.com/downloads/repo/yum/) 获取 MySQL 安装包。

首先,获取 MySQL 社区仓库:

$ wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm

载入 MySQL 社区仓库:

$ sudo yum install mysql57-community-release-el7-8.noarch.rpm

更新系统上的软件到最新版:

$ sudo yum update

在更新过程中,你会被询问是否想接受这个 .rpm 文件 GPG 校验得出的结果,如果没有错误或者不匹配出现,请输入 y 以完成更新。

接着,我们就能一如往常一样安装 MySQL 了:

$ sudo yum install mysql-server

接下来,请按照这里的指南,重置 MySQL root 账户的密码为你能够记住的密码:

http://stackoverflow.com/questions/33510184/change-mysql-root-password-on-centos7

然后,启动 MySQL 服务:

$ sudo systemctl start mysqld

现在 MySQL 数据库已经开始运行了。我们希望运行一个安全防御脚本,将一些危险的默认配置移除掉,并为我们的数据库系统加上一点安全机制。请在命令行终端里运行下面这一条命令:

$ sudo mysql_secure_installation

命令行终端将会提示你输入 MySQL 内 root 用户的密码。键入上面重置 MySQL root 密码后的新密码。然后,命令行终端将会要求你更新 root 用户的密码。

Enter current password for root:

The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:

The 'validate_password' plugin is installed on the server.

The subsequent steps will run with the existing configurationof the plugin.

Using existing password for root.

对于命令行终端接下来给出的选择,你应该敲击 ENTER 键选择忽略修改 root 密码,接着键入 y 同意移除掉出于示例目的而存在的用户,而后键入 y 同意禁用远程登录 root 用户,再次键入 y 同意移除测试数据库,最后键入 y 载入这些新的规则使得 MySQL 立即响应我们做的变更。

最后,如果希望 MySQL 服务在服务器启动时自动开启,那么你应该使用这一条的命令:

$ sudo systemctl enable mysqld.service

你可以通过重新启动服务器,然后在命令行终端中敲入这条命令来验证MySQL 服务是否在服务器启动时自动开启了:

$ sudo systemctl is-enabled mysqld.service

如果你看到了这样的响应:

enabled

则说明 MySQL 服务已经配置为在服务器启动时自动开启了。

现在,你的数据库系统已经安装妥当,我们可以继续后面的内容了。


第三步 —— 安装 PHP

在我们的 web 软件栈中,PHP 是一个能够处理业务逻辑和数据,并动态生成内容展现给用户的软件。它可以运行脚本,连接到 MySQL 数据库以存取数据,以及将处理过的内容递交给 web 服务器来显示。

我们可以再次利用 yum 安装包管理系统来安装我们的组件。现在,我们打算将 php-mysql 也加入到我们将要安装的软件序列中:

$ sudo yum install php php-mysql

这里安装 PHP 应该不会有任何问题。我们需要重新启动 Apache web 服务器以便它能够与 PHP 协作。你可以通过这条命令达到目的:

$ sudo systemctl restart httpd.service

安装 PHP 模块

为了增强 PHP 的功能,我们可以选择性地安装一些额外的模块。

在命令行终端敲入这条命令,你就可以找到所有可以获取到的 PHP 模块选项和库:

$ yum search php

响应的结果就是所有你能够选择安装的组件。其中包含了每个可选组件的描述:

php-bcmath.x86_64 : A module for PHP applications for using the bcmath library

php-cli.x86_64 : Command-line interface for PHP

php-common.x86_64 : Commonfiles for PHP

php-dba.x86_64 : Adatabase abstraction layer module for PHP applications

php-devel.x86_64 : Filesneeded for building PHP extensions

php-embedded.x86_64 : PHPlibrary for embedding in applications

php-enchant.x86_64 : Enchantspelling extension for PHP applications

php-fpm.x86_64 : PHPFastCGI Process Manager

php-gd.x86_64 : Amodule for PHP applications for using the gd graphics library

. . .

如果需要获取每个模块更多的信息,你可以通过互联网搜索,或者直接在命令行终端中敲入这条命令查看:

$ yum info package_name

响应中将会包含许多的信息,其中一个名为 Description 的域包含了这个模块提供的功能更为详尽的描述。

举个例子,如果要获知 php-fpm 模块的功能,我们只要在命令行终端中敲入下列指令就可以了:

$ yum info php-fpm

顺着众多其他信息往下看,你将会找到形如这样的信息:

. . .

Summary    : PHPFastCGI Process Manager

URL            : http://www.php.net/

License       : PHPand Zend and BSD

Description : PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI

                   : implementation with some additional features useful for sites of

                   : any size, especially busier sites.

在考究之后,如果你决定要安装一个模块包,你可以像我们之前安装其他软件时的做法一样,使用 yum install 命令达到目的。

如果我们决定了 php-fpm 就是我们需要的,那么我们可以在命令行终端键入:

$ sudo yum install php-fpm

如果你想安装多于 1 个的模块包,你可以在命令行终端中键入 yum install 后,列出你想安装的每个模块包,并使用空格区分,就像下面这样子:

$ sudo yum install package1 package2…

现在,你的 LAMP 软件栈已经安装并配置妥当了。但我们仍需要测试一下 PHP。


第四步 —— 测试你 Web 服务器上的 PHP 处理程序

为了测试系统已经配置得适合 PHP 运行,我们可以创建一个非常简易的 PHP 脚本。

我们将这个脚本命名为 info.php。为了让 Apache 能够正确地找到并为之服务,它必须保存在一个称为『web 目录』特殊的目录中。

在 CentOS 7 中,这个目录位于 /var/www/html/。我们可以通过下面这条命令在此创建一个文件:

$ sudo vi /var/www/html/info.php

这将会打开一个空白文件,敲击小写字母 I 即可进行编辑。我们想在文件中输入下列 PHP 代码组成的文本:

<?php phpinfo(); ?>

然后,敲击 ESC 键并键入 :wq! 即可保存并关闭这个文件。

现在我们可以测试 web 服务器是否能够正确地显示由 PHP 脚本生成的内容了。我们可以尝试通过 web 浏览器访问这个页面。你需要再次获取服务器的公网 IP 地址。

你希望访问的地址就是:

http://<服务器的公网 IP 地址>/info.php

你看到的页面应该像下面这样子:

如果你的浏览器成功地显示了这个页面,那么你的 PHP 就像预期中的那样正常工作了。

你很可能想要在测试之后移除掉这个文件,因为它事实上可以将服务器的信息展现给未授权的用户。为此,我们需要在命令行终端中键入下面这条命令:

$ sudo rm /var/www/html/info.php

以后若需要,你总能重新创建这个页面来获取这些信息。


结论

现在我们已经安装了 LAMP 软件栈,对于下一步需要做什么,你有许多的选择。大体上,你已经安装了一个允许你在服务器上部署各种各样网站和 web 软件的平台。


参考链接

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7

https://www.linode.com/docs/databases/mysql/how-to-install-mysql-on-centos-7

http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容