Apache網頁伺服器是一個開源且流行的HTTP網頁伺服器,在主機業界擁有廣泛的市場份額。它搭載了許多功能,包括模組增強、多協議支援、簡化配置和多語言支援等等。
閱讀更多: 如何在CentOS 8上安裝Nginx
在本指南中,我們將指導您在CentOS 8和RHEL 8上設置Apache網頁伺服器以及虛擬主機環境。在撰寫本教程時,最新版本的Apache是Apache 2.2.43。
安裝Apache網頁伺服器
首先,請使用以下dnf指令更新您的CentOS 8或RHEL 8系統套件清單。
$ sudo dnf update
更新完成後,執行以下命令安裝Apache網頁伺服器。
$ 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
还要调整Web根目录的权限,如所示。
$ 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 Web服務器的主配置文件,並指示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/