CentOS 7 是一个广泛使用的 Linux 发行版,其内置的 HTTPD(Apache HTTP Server)是最常用的 Web 服务器之一,本文将详细讲解如何在 CentOS 7 上安装、配置和管理 HTTPD,包括启动、停止、重启和配置虚拟主机等操作。
一、安装与启动HTTPD
1. 安装HTTPD
在 CentOS 7 上,可以使用yum
包管理器来安装 HTTPD:
sudo yum install httpd y
此命令会从默认的软件源中安装最新版本的 HTTPD。
2. 启动HTTPD服务
安装完成后,可以通过以下命令启动 HTTPD 服务:
sudo systemctl start httpd.service
要设置 HTTPD 开机自启,可以使用以下命令:
sudo systemctl enable httpd.service
3. 检查HTTPD状态
可以使用以下命令查看 HTTPD 服务的状态:
sudo systemctl status httpd.service
如果需要停止或重启 HTTPD 服务,可以使用以下命令:
sudo systemctl stop httpd.service # 停止HTTPD服务 sudo systemctl restart httpd.service # 重启HTTPD服务
二、配置HTTPD
1. 更改网站数据目录
默认情况下,HTTPD 的网站根目录为/var/www/html
,如需更改,可以编辑配置文件/etc/httpd/conf/httpd.conf
:
sudo vim /etc/httpd/conf/httpd.conf
找到并修改以下内容:
DocumentRoot "/home/wwwroot" <Directory "/home/wwwroot"> AllowOverride None Require all granted </Directory>
保存并退出后,重启 HTTPD 服务使更改生效:
sudo systemctl restart httpd.service
2. 配置个人用户主页
可以通过启用mod_userdir
模块来允许用户在其主目录下发布网页,编辑配置文件/etc/httpd/conf.d/userdir.conf
:
sudo vim /etc/httpd/conf.d/userdir.conf
取消注释以下行:
IncludeOptional conf.d/*.conf UserDir enabled languang UserDir public_html
为用户创建public_html
目录并设置权限:
mkdir p /home/languang/public_html chmod Rf 755 /home/languang/public_html
重启 HTTPD 服务:
sudo systemctl restart httpd.service
三、配置基于IP地址的虚拟主机功能
1. 配置网络ip地址
假设有三台虚拟机,IP 地址分别为192.168.0.104
、192.168.0.105
和192.168.0.106
,首先配置网络 IP 地址:
sudo nmtui
完成配置后,重启网络服务:
sudo systemctl restart network
2. 创建网站文件目录和内容
在/home/wwwroot
下创建相应的目录并添加测试页面:
sudo mkdir p /home/wwwroot/104 /home/wwwroot/105 /home/wwwroot/106 echo "192.168.0.104" > /home/wwwroot/104/index.html echo "192.168.0.105" > /home/wwwroot/105/index.html echo "192.168.0.106" > /home/wwwroot/106/index.html
3. 配置虚拟主机
编辑/etc/httpd/conf/httpd.conf
文件,添加以下内容:
<VirtualHost *:80> ServerName 192.168.0.104 DocumentRoot /home/wwwroot/104 </VirtualHost> <VirtualHost *:80> ServerName 192.168.0.105 DocumentRoot /home/wwwroot/105 </VirtualHost> <VirtualHost *:80> ServerName 192.168.0.106 DocumentRoot /home/wwwroot/106 </VirtualHost>
保存并退出后,重启 HTTPD 服务:
sudo systemctl restart httpd.service
通过浏览器访问http://192.168.0.104
、http://192.168.0.105
和http://192.168.0.106
,可以看到对应的测试页面。
四、配置SSL证书
1. 获取SSL证书
推荐使用免费的 Let's Encrypt SSL 证书,首先安装certbot
:
sudo yum install epelrelease y sudo yum install certbot python2certbotapache y
然后运行以下命令获取证书:
sudo certbot apache d yourdomain.com d www.yourdomain.com
按照提示完成域名验证和证书生成。
2. 配置SSL虚拟主机
编辑/etc/httpd/conf/httpd.conf
文件,添加以下内容:
<VirtualHost *:443> ServerName yourdomain.com:443 DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem ErrorLog logs/ssl_error_log CustomLog logs/ssl_request_log combined</VirtualHost>
保存并退出后,重启 HTTPD 服务:
sudo systemctl restart httpd.service
通过浏览器访问https://yourdomAIn.com
,可以看到已成功启用 SSL。
五、常见问题及解答(FAQs)
Q1: HTTPD 服务无法启动怎么办?
A1: HTTPD 服务无法启动,可以检查错误日志以获取更多信息:
sudo tail f /var/log/httpd/error_log
常见的问题包括配置文件错误、端口被占用等,确保配置文件语法正确,并且没有其他服务占用 HTTPD 使用的端口(如 80 和 443)。
Q2: 如何更改HTTPD的监听端口?
A2: 编辑/etc/httpd/conf/httpd.conf
文件,找到以下行并更改端口号:
Listen 80
更改为所需的端口号,例如8080
:
Listen 8080
然后重启 HTTPD 服务:
sudo systemctl restart httpd.service
还需要确保防火墙开放新的端口:
sudo firewallcmd permanent addport=8080/tcp sudo firewallcmd reload