如何在CentOS/RHEL 8上安装和配置Apache
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服务器。