CentOS安装Apache和PHP

作者 拓荒 日期 2017-05-17

导语

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

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

第一步——安装Apache

安装 Apache 只需要在 CentOS 命令终端敲入这条命令就行了:

$ sudo yum install httpd -y

安装成功后执行下面的命令来开启 Apache 服务:

$ sudo systemctl enable httpd.service

CentOS7.0以下版本需要如下命令:

chkconfig --level 3 httpd on //开机启动

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

  1. reboot
  2. shutdown -r now 立刻重启(root用户使用)
  3. shutdown -r 10 过10分钟自动重启(root用户使用)
  4. shutdown -r 20:35 在时间为20:35时候重启(root用户使用)
    如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启
    然后:
    $ 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

CentOS7.0以下版本需要如下命令:

service httpd start 启动
service httpd restart 重新启动
service httpd stop 停止服务

如果你的服务器正在运行防火墙,请运行下列命令以允许它进行 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 网页。它应该长这样子:
Apache信息页面
如果你使用的是阿里云服务器的网络是专有网络则可能访问不成功,因为阿里云的专有网络需要在在安全组里面放行80端口如下:
安全组页面
如果不是阿里云的专有网络则可能是服务器默认开启了防火墙,且防火墙没有设置80端口:
开启防火墙:

firewalld的配置

1、firewalld的基本使用

启动: systemctl start firewalld
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld

2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl –failed

3.配置firewalld-cmd

查看版本: firewall-cmd –version
查看帮助: firewall-cmd –help
显示状态: firewall-cmd –state
查看所有打开的端口: firewall-cmd –zone=public –list-ports
更新防火墙规则: firewall-cmd –reload
查看区域信息: firewall-cmd –get-active-zones
查看指定接口所属区域: firewall-cmd –get-zone-of-interface=eth0
拒绝所有包:firewall-cmd –panic-on
取消拒绝状态: firewall-cmd –panic-off
查看是否拒绝: firewall-cmd –query-panic

4.添加、查看、删除端口

添加

firewall-cmd --zone=public --add-port=80/tcp --permanent    //(--permanent永久生效,没有此参数重启后失效)

重新载入

firewall-cmd --reload

查看

firewall-cmd --zone= public --query-port=80/tcp

删除

firewall-cmd --zone= public --remove-port=80/tcp --permanent

第二步 —— 安装 PHP

执行下面的命令安装php

$yum install php -y

安装成功后执行如下命令查看php的版本和php的模块

php -v
php -m

为了增强 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 php-mysql php-gd libjpeg* php-imap php-ldap php-odbc php-pear php-xml php-iconv php-xmlrpc php-mbstring php-mcrypt php-bcmath php-mhash libmcrypt -y

现在,你的 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

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

phpInfo