CentOS8下的阿帕奇

一,CentOS下的apache安装方法。

1,阿帕奇(Apache)—httpd

  • httpd是Apahce的超文本传输协议(HTTP)服务器的主程序,设计为一个独立允许的后台进程,它会建立一个处理请求的子进程或线程,通常在Unix系统通过apachectl来调用,在windows系统中作为一个服务运行。

2,httpd常用的版本。

  • 在CentOS6系列(包括5)的版本默认提供的是httpd-2.2版本的rpm包

  • 在CentOS8系列(包括7)的版本默认提供的是httpd-2.4版本各自的特性。

  • 两个版本各自的特性

    • httpd-2.2

      事先创建进程
      按需维持适当的进程
      模块化设计,核心比较小,各种功能通过模块添加(包括PHP),支持运行时配置,支持单独编译模块
      支持多种方式的虚拟主机(web网站)配置,如基于ip的虚拟主机,基于端口的虚拟主机,基于域名的虚拟主机等
      网站三种类型:
      相同IP,不同端口
      相同端口,不同IP
      相同IP,相同端口,不同域名
      支持https协议(通过mod_ssl模块实现)
      支持用户认证
      支持基于IP或域名的ACL访问控制机制
      支持每目录的访问控制(用户访问默认主页时不需要提供用户名和密码,但是用户访问某特定目录时需要提供用户名和密码)
      支持URL重写
      支持MPM(Multi Path Modules,多处理模块)。用于定义httpd的工作模型(单进程、单进程多线程、多进程、多进程单线程、多进程多线程)

    • httpd-2.4(相对于2.2新增的特性,且包含2.2的特性)

      httpd-2.4的新特性:
      MPM支持运行DSO机制(Dynamic Share Object,模块的动态装/卸载机制),以模块形式按需加载
      支持event MPM,eventMPM模块生产环境可用 称为事件驱动。
      支持异步读写
      支持每个模块及每个目录分别使用各自的日志级别
      每个请求相关的专业配置,使用来配置
      增强版的表达式分析器
      支持毫秒级的keepalive timeout (长连接超时时间)
      基于FQDN的虚拟主机不再需要NameVirtualHost指令端口(2.2需要配置,2.4不需要配置)
      支持用户自定义变量
      支持新的指令(AllowOverrideList)
      降低对内存的消耗

工作模型 工作方式
prefork 多进程模型,预先生成进程,一个请求用一个进程相应
一个主进程负责生成n各子进程,子进程也等于工作进程
每个子进程处理一个用户请求,即使没有用户请求,也会预先生成空闲进程,最大不会超过1024各
worker 基于线程工作,一个请求用一个线程响应
event 基于事件的驱动,一个进程处理多个请求
  • 在httpd-2.4新增的模块
模块 功能
mod_proxy_fcgi(fastcgi通用网关接口) 反向代理时支持apache服务器后端协议的模块
mod_ratelimit 提供速率限制功能的模块
mod_remoteip 基于ip的访问控制机制被改变,不在支持使用Order,deny,allow来进行访问控制

3,安装方法:

1, 可以通过yum程序直接下载安装。

  • 第一步,检查自己的yum网络源仓库是否成功搭建。(搭建网络源仓库可参考黄狗更新管理器第七节

    • 启用的阿里云网络源仓库CentOS8下的阿帕奇
  • 第二步, 通过yum命令安装Apache。

    • 执行命令:yum -y install httpd
    • 网络源安装下载成功后看到以下界面。CentOS8下的阿帕奇

2,通过源码编译安装


二,httpd

1,httpd配置时可能用到的程序有以下几种:

  • htpasswd,基于文件实现,用到的账号密码生成工具
  • apachectl,服务控制脚本,类似systemctl

2,httpd程序环境

  • 站点文档目录/var/www/html/index.html一般这里存放的都是网页文件。
  • 模块文件路径/usr/lib64/httpd/modules/存放加载的模块文件。
  • 主配置文件路径/etc/httpd/conf/httpd.conf,服务的主配置文件。
  • 模块的主配置文件路径/etc/httpd/conf.modules.d/*.conf 在该目录下的文件都是需要加载的。
  • 辅助的配置文件路径/tac/httpd/conf.d/*.conf
    CentOS8下的阿帕奇

3,查看httpd安装完成后的一些程序信息

  • 查看加载的模块,启用的模块列表,检查语法是否存在错误。

CentOS8下的阿帕奇

  • 查看版本信息,CentOS8默认安装的是2.4的版本,(小v查看版本信息,大V查看明细)
    • CentOS8下的阿帕奇查看版本信息,CentOS6默认安装的是2.2的版本,(小v查看版本信息,大V查看明细)
    • CentOS8下的阿帕奇

三,httpd2.4版本进行配置服务。

1,httpd常用的配置

1,在httpd2.4中可以切换使用MPM模块

  • prefork:多进程工作模型;
  • event:基于线程工作,一个请求一个线程响应;
  • worker:基于事件驱动工作方式;
    • 三种模块CentOS8下的阿帕奇

2,在httpd2.4中配置访问控制。

  • 第一步,进入主配置文件/etc/httpd/conf/httpd.conf
  • 第二步,检查80端口是否正常侦听,检查网站主文件目录的路径。
  • CentOS8下的阿帕奇

CentOS8下的阿帕奇
CentOS8下的阿帕奇

  • 未进行访问控制前正常访问。CentOS8下的阿帕奇
  • 在文件的行尾添加文件目录的访问控制代码;
    • 拒绝特定IP访问,允许其他主机访问。
      CentOS8下的阿帕奇

    • 配置完成后,检查一下语法是否错误,重启服务进程。 查看80端口正常侦听。
      CentOS8下的阿帕奇

  • 注意,此时查看无法访问的,因为我们的防火墙和SElinux并没有关闭,所以下一步先配置防火墙允许端口通过,SElinux的策略暂时允许。

    firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=10.10.255.0/24 service name=http accept’ --permanent //配置永久策略,允许10.10.255.0这个网段的主机来访问本地的service服务
    firewall-cmd --reload //配置完成后重新加载防火墙的配置
    firewall-cmd --list-all //查看当前rule规则列表。CentOS8下的阿帕奇
    进入SElinux的配置i文件/etc/selinux/config。修改SELINUX=disable关闭策略。
    CentOS8下的阿帕奇
    重启之后除特定的主机不能访问网页,其他的都可以访问网页。CentOS8下的阿帕奇

    • 到此,网页的访问控制就成功了。(httpd2.4默认拒绝所有主机访问的)
    • 语使用规则如下下表
代码语法 功能
Require all granted 允许所有的主机访问
Require all deny 拒绝所有主机访问
Require ip IPADDR 授权特定IP的主机访问
Require not ip IPADDR 拒绝指定IP的主机访问
Require host HOSTNAME 授权指定来源主机名的主机访问
Require not host HOSTNAME 拒绝指定来源主机名的主机访问

3,httpd2.4虚拟主机的配置

  • 1,可以通过cp /usr/share/doc/httpd/httpd-vhosts.conf 下的虚拟主机文件到/etc/httpd/conf.d/目录下,进行虚拟主机的配置。
  • 2,打开httpd-vhosts.conf配置文件:
    • 虚拟主机有三种类:
      • 相同IP不同端口
      • 不同IP相同端口
      • 相同IP相同端口不同域名
    • 2.1.打开配置文件,配置相同IP不同端口。
    • 配置文件脚本如下:CentOS8下的阿帕奇
    • 配置完成后检查语法是否正确,重启服务查看端口是否正常侦听。CentOS8下的阿帕奇
      • 打开浏览器正常访问网页。CentOS8下的阿帕奇
      • 如果查看81端口无法访问时切记防火墙是否放行相应的端口。如果没有,执行一下命令放行端口:firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=10.10.255.0/24 port port=81 protocol=tcp accept’ --permanent
        CentOS8下的阿帕奇
    • 2.2,打开配置文件,配置不同IP相同端口;
    • 配置文件脚本如下:
      CentOS8下的阿帕奇
      • 然后需要为本地的网卡新增一个ip地址。
        命令如下:ip addr add 10.1.4.63/24 dev eth0
        重启服务。
        CentOS8下的阿帕奇
        CentOS8下的阿帕奇
    • 2.3,相同ip相同端口不同域名来进行访问
    • 配置文件脚本如下: CentOS8下的阿帕奇
    • CentOS8下的阿帕奇
      CentOS8下的阿帕奇

2,基于SSL的httpd

1,CA证书的配置

  • CA(Certificate Authority)是数字证书认证中心的简称,是指发放、管理、废除数据证书的机构。

  • CA的作用是检查证书持有者身份的合法性,并签发证书(在证书上签字),以防证书被伪造或篡改,以及对证书和**进行管理

  • 配置本地私有CA:

  • 进入/etc/pki/CA目录下,生成**对。

    命令如下:
    第一步
    (umask 077;openssl genrsa -out private/cakey.pem 2048) (括号及括号的内容一定要带)// 生成**对
    openssl rsa -in private/cakey.pem -pubout //提取公钥信息。
    第二步:服务器生成**
    openssl req -new -x509 -key cakey.pem -out cacert.pem -days 365 //生成自签署证书CentOS8下的阿帕奇
    openssl x509 -text -in cacert.pem // 读除Cacert.pem证书的内容
    CentOS8下的阿帕奇
    mkdir certs newcerts crl
    touch index.txt && echo 01 >serial //创建相关目录,并生成相应的***。
    客户端进行配置:
    cd /etc/httpd && mkdir ssl && cd ssl //创建相关目录,并进入相关目录下。
    (umask 077;openssl genrsa -out httpd.key 2048) //生成**对。
    CentOS8下的阿帕奇
    openssl req -new -key httpd.key -days 365 -out httpd.csr //客户端生成证请求
    openssl ca -in httpd.csr -out httpd.crt -days 365 //CA签署客户端提交上来的证书
    然后删除目录下的httpd.csr
    到此私有CA证书已经部署完毕。

2,启用SSL模块,实现SSL加密访问

  • 通过配置httpd2.4的配置文件来实现基于443端口的证书加密访问。

  • 如果没有安装ssl模块,通过yum进行模块的安装:

    • yum -y install mod-ssl,
    • 安装完成后应该在 /etc/httpd/conf.modules.d/00-ssl.conf/etc/httpd/conf.d/ssl.conf存有这两个文件
  • 启用模块:vim/etc/httpd/conf.modules.d/00-base.conf文件,添加下面这个或取消注释;LoadModule ssl_module modules/mod_ssl.so CentOS8下的阿帕奇

  • 进入/etc/httpd/conf.d/ssl.conf文件,配置以下内容。
    CentOS8下的阿帕奇
    CentOS8下的阿帕奇

  • 配置完成后通过httpd -t检查语法是否正确,然后重启服务,查看443端口是否正常侦听。
    CentOS8下的阿帕奇

  • 通过https访问网站

    CentOS8下的阿帕奇
    CentOS8下的阿帕奇