前言

在安装Apache前,推荐先阅读Apache 文档,了解一下 Apache 2.x 服务器,以及详细的安装参数。

安装Apache

Apache可以使用Centos7的yum命令安装,Apache软件包和服务称为httpd。 要安装软件包,请运行以下命令:

yum -y install httpd

启动Apache服务

安装完成后,启用并启动Apache服务:

systemctl enable httpd
systemctl start httpd

如果您正在运行防火墙(firewalld),则还需要打开HTTP和HTTPS端口80和443:

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

我们可以通过以下方式检查Apache服务的状态和版本:

systemctl status httpd

输出:

● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2019-03-10 14:14:53 CST; 4min 6s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1062 (httpd)
   Status: "Total requests: 15; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─1062 /usr/sbin/httpd -DFOREGROUND
           ├─1170 /usr/sbin/httpd -DFOREGROUND
           ├─1171 /usr/sbin/httpd -DFOREGROUND
           ├─1172 /usr/sbin/httpd -DFOREGROUND
           ├─1173 /usr/sbin/httpd -DFOREGROUND
           ├─1174 /usr/sbin/httpd -DFOREGROUND
           ├─1221 /usr/sbin/httpd -DFOREGROUND
           ├─1222 /usr/sbin/httpd -DFOREGROUND
           └─1223 /usr/sbin/httpd -DFOREGROUND

再输入如下命令:

httpd -v

输出:

Server version: Apache/2.4.6 (CentOS)
Server built:   Nov  5 2018 01:47:09

验证安装

要验证安装,在您所选择的浏览器中打开您的服务器IP地址,您将看到默认的Apache欢迎页面,如下所示:

centOS7 卸载samba centos7 卸载Apache_centOS7 卸载samba

使用systemctl管理Apache服务

我们可以像任何其他系统单元一样管理Apache服务。

要停止Apache服务,请运行:

systemctl stop httpd

要再次启动,请键入:

systemctl start httpd

重新启动Apache服务:

systemctl restart httpd

在进行一些配置更改后重新加载Apache服务:

systemctl reload httpd

如果您想禁用Apache服务以在启动时启动:

systemctl disable httpd

并重新启用它:

systemctl enable httpd

配置Apache

Apache配置文件路径默认位于/etc/httpd

httpd.conf

httpd.conf配置文件位于:/etc/httpd/conf/httpd.conf

配置扩展名解析成 PHP

关于安装PHP,请查看《Centos7.4 编译安装PHP7.2(Apache篇)》 在httpd.conf尾部加入下面的配置,然后重启Apache服务,使其生效。

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

支持.htaccess规则重写

先检查rewrite模块是否打开,模块配置文件位于:/etc/httpd/conf.modules.d/00-base.conf 使用vim命令打开文件:

vim /etc/httpd/conf.modules.d/00-base.conf

在文件里搜索rewrite_module modules/mod_rewrite.so,在所在行前面是否有#,如果有的话,将#删除,然后保存文件。 查看httpd.conf文件是否已打开允许重写功能

vim /etc/httpd/conf/httpd.conf

在文件里搜索.htaccess,我们找到 如下注释对应的AllowOverride None

#
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

然后将

AllowOverride None

改成

AllowOverride All

注意改动的位置 因为该文件 有多处 AllowOverride None,只有找到正确的位置才有效。

检查完前面两步,重启Apache服务

systemctl restart httpd

虚拟主机

Apache默认项目读取目录位于var/www/html,可通过httpd.conf配置文件里的DocumentRoot参数进行修改。

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"

关于虚拟主机项目配置文件,位于/etc/httpd/conf.d目录,建议一个域名一个配置文件 虚拟主机配置文件规范:[域名].conf

虚拟主机配置文件范例:

<VirtualHost *:80>
    ServerName [域名]
    ServerAlias [域名]
    DocumentRoot "/var/www/html/[项目目录]"
</VirtualHost>

安全配置

隐藏HTTP请求头web服务器信息

没作任何设置前,查看web服务器请求文件头:

Connection:Keep-Alive
Date:Sun, 10 Mar 2019 17:15:20 GMT
ETag:"18-583bffda946f5"
Keep-Alive:timeout=5, max=100
Server:Apache/2.4.6 (CentOS)

几乎把web服务器详细信息都暴出来了,如果没个版本的apache和php爆出严重漏洞,会给攻击者提供最有攻击价值的安全信息,这是非常危险的。

将Apache的配置文件加上:

# 禁止在http请求头暴露服务器信息
ServerTokens ProductOnly
ServerSignature Off

然后重启Apache服务,再次发出Apache头信息请求:

Connection:Keep-Alive
Date:Sun, 10 Mar 2019 17:18:52 GMT
ETag:"18-583bffda946f5"
Keep-Alive:timeout=5, max=100
Server:Apache

可以看到apache版本号于已经没有了。