如何在CentOS/RHEL 8上安装和配置Apache

时间:2019-05-19 01:26:34  来源:igfitidea点击:

CentOS 8是CentOS Linux操作系统的最新版本,它基于红帽企业Linux 8。
在本教程中,我们将在CentOS 8或RHEL 8系统上安装具有添加配置和安全性的Apache web服务器。

在CentOS 8上安装Apache

首先,通过SSH登录到CentOS 8或RHEL 8系统。
然后使用以下命令安装Apache2 HTTP服务器包。
这还将在系统上安装额外所需的包。

sudo dnf install httpd

等待安装完成

管理Apache服务

Apache服务是由CentOS/RHEL 8上的systemctl命令行管理的。
安装之后,使用以下命令启用Apache服务,然后启动它。

sudo systemctl enable httpd.service
sudo systemctl start httpd.service

下面是通过命令行停止和重新启动Apache服务的命令。

sudo systemctl stop apache2.service
sudo systemctl restart apache2.service

测试Apache设置

我们可以使用以下命令查看已安装的Apache版本详细信息。

httpd -v

Server version: Apache/2.4.37 (centos)
Server built:   Oct  7 2019 21:42:02

在默认的根目录(/var/www/html)下创建一个测试html页面。

sudo echo "Hello apache" > /var/www/html/index.html

现在可以使用服务器的IP地址或指向服务器IP的域访问Apache服务器。比如

http://服务器ip

创建虚拟主机

让我们在Apache服务器上创建第一个虚拟主机。
在本教程中,我们使用示例域“example.com”。
在这里,我们将在端口80上为example.com创建一个虚拟主机。
在目录中创建一个index.html文件:

sudo mkdir -p /var/www/example.com
echo "hello example.com" | sudo tee /var/www/example.com/index.html

然后创建虚拟主机配置文件并编辑:

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

在配置文件的末尾添加以下内容。
我们可以根据域名更改域名。

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/example.com
    ServerName example.com
    ServerAlias www.example.com

    <Directory /var/www/example.com>
           #Allowoverride all    
    </Directory>

    ErrorLog logs/example.com_error.log
    CustomLog logs/example.com_access.log combined
</VirtualHost>

保存Virtualhost配置文件,并使用以下命令重新加载Apache服务:

sudo systemctl reload httpd.service

配置SSL虚拟主机

如果不需要SSL,可以跳过这一步。
但安全始终是任何网站的首要问题。
要在Apache中使用SSL,请在系统上安装mod_ssl包。

sudo dnf install mod_ssl

对于本教程,我按照这些说明为我们的域生成一个自签名的SSL证书。
我们可以使用 /etc/httpd/conf/ssl
我们也可以为域使用单独的虚拟主机配置文件。
例如:

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

内容如下:

<VirtualHost *:443>
    ServerAdmin [email protected]
    DocumentRoot /var/www/example.com
	
    ServerName example.com
    ServerAlias www.example.com
	
    <Directory /var/www/example.com>
           #Allowoverride all    ###Uncomment if required
    </Directory>

    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/example.com.crt
    SSLCertificateKeyFile /etc/pki/tls/certs/example.com.key
	
    ErrorLog logs/example.com_ssl-error.log
    CustomLog logs/example.com_ssl-access.log combined
</VirtualHost>

以下是用于配置SSL虚拟主机的三个术语:
SSLEngine这个设置为“on”
SSLCertificateFile设置你的SSL证书的路径
SSLCertificateKeyFile这是私钥文件用于生成SSL certificate

然后使用以下命令,启用虚拟主机并重新加载Apache服务:

sudo systemctl reload apache2.service

Apache服务器安全设置

安全性是网站最重要的部分。
编辑Apache主配置文件

sudo vim /etc/httpd/conf/httpd.conf

在文件末尾添加以下值:

ServerTokens Prod
ServerSignature Off
TraceEnable Off

之后编辑Apache默认的SSL配置文件:

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

下面是多个与安全相关的设置。
添加或更新以下设置。
这些设置对于生产服务器非常有用。

#Rules taken from https://cipherli.st/

SSLCipherSuite EECDH+AESGCM:EDH+AESGCM
# Requires Apache 2.4.36 & OpenSSL 1.1.1
SSLProtocol -all +TLSv1.3 +TLSv1.2
SSLOpenSSLConfCmd Curves X25519:secp521r1:secp384r1:prime256v1
# Older versions
# SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off

更改后,重新启动Apache服务以应用新配置。

sudo systemctl reload apache2.service

总结

所有这些操作完成后,我们将在CentOS 8或RHEL 8 Linux系统上运行一个安全的Apache服务器。