前言
在安装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欢迎页面,如下所示:
使用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版本号于已经没有了。