Apache Web服务器是一款开源且流行的HTTP Web服务器,在托管行业仍然拥有大量市场份额。它具有许多功能,包括模块增强、多协议支持、简化配置和多语言支持等。
阅读更多: 如何在CentOS 8上安装Nginx
在本指南中,我们将带领您在CentOS 8和RHEL 8 上安装Apache 2.2.43的Web服务器,并创建一个虚拟主机环境。在撰写本教程时,最新版本的Apache是Apache 2.2.43。
安装Apache Web服务器
首先,使用以下dnf命令更新您的CentOS 8或RHEL 8系统软件包列表。
$ sudo dnf update
更新完成后,执行以下命令安装Apache Web服务器。
$ sudo dnf install httpd
安装完成后,您可以通过运行rpm命令来验证Apache的版本。
$ rpm -qi httpd

该命令将打印出版本、发布日期、构建和软件包的架构等一系列信息。
要启动Apache HTTP网络服务,请运行systemctl命令。
$ sudo systemctl start httpd
要确认服务是否在运行,请执行。
$ sudo systemctl status httpd

从输出中,‘active’状态显示为绿色,表明Apache网络服务器正在运行。
为了消除对网络服务器是否在运行的任何疑问,通过浏览您服务器的IP地址或如图所示的域名来请求Apache的测试页面。
http://server-ip
您可以通过运行ifconfig命令来获取您的服务器IP。如果您的服务器托管在云上,您可以通过运行curl命令来获取公共IP。
$ curl ifconfig.me OR $ curl -4 icanhazip.com

当您浏览服务器的IP地址时,您应该会看到以下网页显示。

这是确信网络服务器正在运行的确凿确认。
管理Apache网络服务器
安装并运行Apache后,您可以使用systemctl检查工具来管理Apache。
例如,要停止Apache,请运行以下命令:
$ sudo systemctl stop httpd
要再次启动服务,请执行:
$ sudo systemctl start httpd
如果您已对其配置文件进行了更改,并且需要重启以应用更改,请执行命令:
$ sudo systemctl restart httpd
重启服务通常会导致服务中断。一个更好的选择是简单地重新加载,而不会中断连接。
$ sudo systemctl reload httpd
要在启动或重启时自动启动Apache Web服务器,请运行以下命令。这将确保Apache在没有您干预的情况下自动启动。
$ sudo systemctl enable httpd
如果您选择不在启动时自动启动服务,请运行:
$ sudo systemctl disable httpd
设置Apache虚拟主机
默认情况下,Apache Web服务器被配置为仅服务或托管一个网站。如果您只想托管一个网站,那么这一步不是必需的。但是如果您计划在服务器上托管多个域,则需要配置Apache虚拟主机。
A virtual host is a separate file that contains configurations that allow you to set up a separate domain from the default one. For this guide, we will set up a virtual host for the domain crazytechgeek.info.
默认的虚拟主机位于/var/www/html
目录。这只适用于单个站点。为了为我们的域创建一个单独的虚拟主机,我们将在/var/www
目录中创建另一个目录结构,如下所示。
$ sudo mkdir -p /var/www/crazytechgeek.info/html
另外,您还可以创建一个目录来存储日志文件。
$ sudo mkdir -p /var/www/crazytechgeek.info/log
接下来,如下所示编辑文件权限,使用$USER
环境变量。
$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html
同时,如下所示调整webroot目录的权限。
$ sudo chmod -R 755 /var/www
接下来,如下所示创建一个示例index.html
文件。
$ sudo vim /var/www/crazytechgeek.info/html/index.html
按键盘上的'i'
字母,并粘贴一些示例内容,如下所示,这些内容将在测试虚拟主机时显示在Web浏览器上。
<html> <head> <title>Welcome to crazytechgeek.info!</title> </head> <body> <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1> </body> </html>
保存并退出配置文件。
创建示例索引文件和站点目录后,现在可以继续创建虚拟主机文件。虚拟主机文件将包含您域名的站点配置,并指导Apache如何响应客户端的请求。
虚拟主机文件将包含您域名的站点配置,并指导Apache如何响应客户端的请求。但在继续之前,您需要创建2个目录:`sites-available` 和 `sites-enabled` 目录。
虚拟主机文件将存储在`sites-available`目录中,而`sites-enabled`目录将包含指向虚拟主机的符号链接。
按照下面所示创建这两个目录。
$ sudo mkdir /etc/httpd/sites-available $ sudo mkdir /etc/httpd/sites-enabled
接下来,修改Apache网页服务器的主配置文件,并指示Apache在`sites-enabled`目录内定位虚拟主机。
$ sudo vim /etc/httpd/conf/httpd.conf
在配置文件的最末追加如下一行。
IncludeOptional sites-enabled/*.conf
保存并退出。
现在按照以下所示创建虚拟主机文件:
$ sudo vim /etc/httpd/sites-available/crazytechgeek.info
粘贴下面的内容,并将`crazytechgeek.info`替换为您自己的域名。
<VirtualHost *:80> ServerName www.crazytechgeek.info ServerAlias crazytechgeek.info DocumentRoot /var/www/crazytechgeek.info/html ErrorLog /var/www/crazytechgeek.info/log/error.log CustomLog /var/www/crazytechgeek.info/log/requests.log combined </VirtualHost>
保存并退出文件。
现在通过在`sites-enabled`目录中创建符号链接来启用虚拟主机文件。
$ sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf
调整虚拟主机的SELinux权限。
CentOS 8 和 RHEL 8 预装了 SELinux,这是用于加固 Linux 系统安全性的安全模块。由于您在上一步中配置了自定义 日志 目录,您需要更新一些 SELinux 策略,以指示 Apache Web 服务器写入该目录。
调整 SELinux Apache 策略有两种方法:调整全局策略和目录策略。后者更受欢迎,因为它更受欢迎。
调整目录上的 SELinux 策略
编辑 SELinux 权限以控制 Apache Web 服务器的策略。这种方法非常冗长,需要您手动为虚拟主机配置文件中指定的其他目录配置上下文类型。
开始之前,请先确认 SELinux 分配给日志目录的上下文类型:
$ sudo ls -dlZ /var/www/crazytechgeek.info/log/
输出应类似于我们下面的内容。

从输出中,设置的上下文是 httpd_sys_content_t。这表明 Web 服务器只能读取日志目录中的文件。您需要将此上下文更改为 httpd_log_t 以使 Apache 能够生成并将日志条目添加到目录中。
因此,执行以下命令:
$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
如果您遇到以下错误“semanage: command not found”。
这意味着未安装提供semanage命令的软件包。要解决此错误,您需要安装这些软件包。但首先,请通过运行以下命令检查哪些软件包提供了 semanage 命令:
$ sudo dnf whatprovides /usr/sbin/semanage
输出会给出提供 semanage 命令的软件包,即 policycoreutils-python-utils。
现在,按照使用 DNF 软件包管理器的示例安装软件包。
$ sudo dnf install policycoreutils-python-utils
更改上下文的命令现在应该可以工作了。
$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
要保存更改并使其持久化,请发出 restorecon 命令如下:
$ sudo restorecon -R -v /var/www/crazytechgeek.info/log
您可以再次运行命令来确认更改:
$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

请注意,上下文类型已更改为 httpd_log_t
,如输出所示。
重新启动 Apache 以应用更改。
$ sudo systemctl restart httpd
您现在可以通过列出其内容来确认 Apache 是否在日志目录中保存日志文件,如下所示:
$ ls -l /var/www/crazytechgeek.info/log/
您应该能够看到两个日志文件,如错误日志和请求日志文件所示。

测试 Apache 虚拟主机
最后,请确保 Apache Web 服务器正在提供您的虚拟主机文件。要执行此操作,请打开您的浏览器,然后转到服务器的 IP 地址或域名:
http://domain-name

完美!这表明一切顺利,我们的虚拟主机正如预期的那样被服务。
结论
在本指南中,我们学习了如何在CentOS 8和RHEL 8上安装Apache网络服务器,以及如何配置虚拟主机文件,为额外的域名提供内容。随意配置多个虚拟主机文件,以适应更多的域名。
如果您想设置完整的托管堆栈,我建议您在CentOS 8上安装LAMP堆栈。
Source:
https://www.tecmint.com/install-apache-with-virtual-host-on-centos-8/