云网牛站
所在位置:首页 > Linux云服务器 > 在RHEL 8上安装配置Apache、mod_ssl、mod_http2的方法

在RHEL 8上安装配置Apache、mod_ssl、mod_http2的方法

2019-03-10 21:59:41作者:游俊梧稿源:云网牛站

本文介绍在RHEL 8系统上安装mod_ssl及mod_http2,以及安装Apache服务器,在Red Hat Enterprise 8中,Apache HTTP Server已更新至2.4.33版,以下图片是新功能截图,下面将讲详细的操作方法。

在RHEL 8上安装配置Apache、mod_ssl、mod_http2的方法

 

在RHEL 8上安装Apache

RHEL 8中的Apache Web服务器包称为httpd,此包及其工具通过Application Stream存储库分发,使用下面命令在RHEL 8上安装httpd模块:

$ sudo yum install @httpd

在RHEL 8上安装配置Apache、mod_ssl、mod_http2的方法

其它系统安装请参考如何在CentOS 7系统下安装Apache

注:以上命令将安装以下httpd包:

httpd:Apache HTTP Web服务器。

httpd-filesystem:包含Apache HTTP服务器的基本目录布局,包括对目录的正确权限。

httpd-tools:包含可与Apache HTTP服务器一起使用的工具。

mod_http2:Apache httpd模块,它在libnghttp2之上为httpd 2.4服务器实现HTTP2协议(h2+h2c)。

mod_ssl:通过安全套接字层(SSL)和传输层安全性(TLS)协议为Apache Web服务器提供强大的加密。

和其他所需的依赖– apr*。

默认情况下,httpd服务从以下位置读取配置:

/etc/httpd/conf/httpd.conf - 这是主要的httpd配置文件。

/etc/httpd/conf.d/ - 这是主配置文件中包含的配置文件的辅助目录,可以将VirtualHosts之类的配置文件放在此目录中。

/etc/httpd/conf.modules.d/ - 包含加载RHEL中打包的动态模块的配置文件,首先处理此目录中的配置文件。

/usr/lib64/httpd/modules/ - 带有httpd模块的目录。

 

在RHEL 8上管理httpd服务

下面介绍如何管理Apache HTTP服务状态:启动、停止、重新启动和检查当前状态。

1、启动httpd服务

sudo systemctl start httpd.service

使用以下命令启用httpd服务在引导时自动启动:

sudo systemctl enable httpd.service

下面的单个命令可用于启动并使服务在引导时启动:

sudo systemctl enable --now httpd.service

确认服务是否设置为在引导时启动:

$ sudo systemctl is-enabled  httpd.service

enabled

2、停止httpd服务

要停止正在运行的httpd服务,请输入以下命令:

sudo systemctl stop httpd.service

要防止服务在引导时自动启动,请输入:

sudo systemctl disable httpd.service

3、重新启动httpd服务

重启httpd服务有两种选择:

1].停止正在运行的httpd服务并立即重新启动它 - 在安装或删除动态加载的模块(如PHP)后很有用:

sudo systemctl restart httpd.service

2].重新加载配置而不影响活动请求 - 正在运行的httpd服务将仅重新加载其配置文件,并且当前正在处理的所有请求将继续使用旧配置:

sudo systemctl reload httpd.service

要检查配置是否存在可能的错误,请输入:

$ sudo apachectl configtest

Syntax OK

如果配置文件没有错误,应该获得Syntax OK的提示。

 

加载SSL模块

我们安装了mod_ssl模块,但必须先使用LoadModule指令加载模块,然后才能使用它。

要加载加载mod_ssl DSO,请在httpd.conf配置文件的末尾添加以下行:

LoadModule ssl_module modules/mod_ssl.so

见下面的截图:

在RHEL 8上安装配置Apache、mod_ssl、mod_http2的方法

加载模块后重新启动Web服务器以重新加载配置:

sudo systemctl restart httpd

默认的SSL配置文件/etc/httpd/conf.d/ssl.conf,可以通过修改此文件中的SSLProtocol指令来禁用SSL版本2和SSL版本3:

SSLProtocol all -SSLv2 -SSLv3

下面的行将禁用除TLS 1和Up之外的所有SSL和TLS协议:

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

进行更改后重新启动Apache守护程序:

sudo systemctl restart httpd

要检查启用或禁用了哪些版本的SSL和TLS,可以使用openssl s_client -connect命令:

openssl s_client -connect <hostname>:<port> -<protocol>

协议可以是-ssl2, -ssl3,-tls1,-tls1_1,-tls1_2。

见下面的例子:

# Test if SSLv3 is enabled

$ openssl s_client -connect localhost:443 -ssl3

# Test if TLSv1.2 is enable

$ openssl s_client -connect localhost:443 -tls1_2

样本输出如下:

在RHEL 8上安装配置Apache、mod_ssl、mod_http2的方法

配置SSL密钥和证书的指令是:

SSLCertificateFile /etc/pki/tls/certs/server.crt

SSLCertificateKeyFile /etc/pki/tls/private/server.key

 

配置防火墙

如果正在运行firewalld服务,请允许端口80和443:

$ sudo firewall-cmd --add-service={http,https} --permanent

success

$ sudo firewall-cmd --reload

success

$ firewall-cmd --list-services

cockpit dhcpv6-client http https ssh

参考:第8章 Iptables与Firewalld防火墙

 

加载HTTP/2 Module – mod_http2

通过加载mod_http2模块启用对HTTP/2的支持:

LoadModule http2_module modules/mod_http2.so

另外在Protocols指令中添加以下内容:

Protocols h2 h2c http/1.1

Protocols指令参数的含义:

h2 - 指示Apache通过SSL/TLS支持HTTP/2协议。

h2c - 指示Apache通过TCP支持HTTP/2。

http/1.1 - 如果客户端不接受HTTP/2,则通过HTTP/1.1提供请求。

重新启动Apache Web服务器以实现重新加载配置:

sudo systemctl restart httpd

 

配置虚拟主机

Apache HTTP Server具有内置虚拟主机,允许根据请求的IP地址,主机名或端口提供信息,将VirtualHost配置文件放在/etc/httpd/conf.d/目录中。

这是一个例子:

sudo vim /etc/httpd/conf.d/example.conf

数据类似于下面的数据:

<VirtualHost *:80>

ServerAdmin admin@example.com

DocumentRoot "var/www/html/example"

ServerName ywnz.com

ServerAlias ywnz.com

ErrorLog "/var/log/httpd/example-error_log"

CustomLog "/var/log/httpd/example-access_log" common

</VirtualHost>

注:ServerName必须是分配给托管站点的服务器的有效DNS名称。

重新启动httpd服务以激活新创建的虚拟主机:

sudo systemctl restart httpd

至此,配置完成。

 

相关主题

在RHEL 8系统中安装Apache Maven的方法

精选文章
热门文章