Yum安装Apache实现单服务器托管多网站(完整教程)
Yum安装的Apache(httpd)具有标准化目录结构和系统服务管理,配置更简洁,以下涵盖基于域名、基于端口、基于IP三种核心托管模式,步骤适配CentOS/RHEL系统,可直接落地。
一、前期准备
1. 确认Yum安装Apache的核心目录(固定路径)
无需手动配置路径,Yum已标准化:
- 主配置文件:
/etc/httpd/conf/httpd.conf - 虚拟主机配置目录:
/etc/httpd/conf.d/(所有.conf后缀文件自动生效,优先推荐) - 网站根目录:
/var/www/html/(默认) - 日志目录:
/var/log/httpd/(自动生成日志文件,无需手动创建) - 服务管理:
systemctl(默认已配置systemd服务) - 语法检查:直接使用
httpd -t命令
2. 启用虚拟主机功能(默认已启用)
Yum安装的Apache默认加载虚拟主机模块,无需手动配置,仅需确认:
bash
# 查看是否加载虚拟主机模块
httpd -M | grep vhost_alias
输出vhost_alias_module (shared)表示模块已启用,若未输出,需编辑主配置文件启用:
bash
vi /etc/httpd/conf/httpd.conf
添加/取消注释以下内容:
plain
LoadModule vhost_alias_module modules/mod_vhost_alias.so
保存退出(ESC→:wq)。
3. 提前检查配置语法
bash
httpd -t
输出Syntax OK表示配置无误,若报错需先修正。
二、模式1:基于域名的虚拟主机(最常用)
同一IP+80端口,通过不同域名区分多网站,适合对外提供公网站点服务。
1. 配置域名解析(前提条件)
- 公网服务器:在域名服务商后台,将多个域名(如
site1.com、site2.com)解析到服务器公网IP。 - 内网/测试环境:修改服务器或客户端
hosts文件,添加域名映射:
bash
vi /etc/hosts
# 添加内容(替换为你的服务器IP)
192.168.1.100 site1.com www.site1.com
192.168.1.100 site2.com www.site2.com
2. 创建虚拟主机配置文件
Yum安装优先在/etc/httpd/conf.d/目录创建独立配置文件(便于管理):
bash
# 创建域名虚拟主机配置文件(后缀必须为.conf)
vi /etc/httpd/conf.d/domain_vhosts.conf
添加两个域名对应的虚拟主机配置:
plain
# 站点1:site1.com
<VirtualHost *:80>
# 主域名
ServerName site1.com
# 域名别名
ServerAlias www.site1.com
# 网站根目录(需手动创建)
DocumentRoot "/var/www/html/site1"
# 管理员邮箱(可选)
ServerAdmin admin@site1.com
# 目录权限配置(避免403错误)
<Directory "/var/www/html/site1">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# 独立日志(便于单个站点排错)
ErrorLog "/var/log/httpd/site1_error.log"
CustomLog "/var/log/httpd/site1_access.log" combined
</VirtualHost>
# 站点2:site2.com
<VirtualHost *:80>
ServerName site2.com
ServerAlias www.site2.com
DocumentRoot "/var/www/html/site2"
ServerAdmin admin@site2.com
<Directory "/var/www/html/site2">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "/var/log/httpd/site2_error.log"
CustomLog "/var/log/httpd/site2_access.log" combined
</VirtualHost>
3. 创建网站根目录与测试页面
bash
# 创建两个站点目录
mkdir -p /var/www/html/site1
mkdir -p /var/www/html/site2
# 写入测试页面
echo "这是域名站点1:site1.com(Yum安装Apache)" > /var/www/html/site1/index.html
echo "这是域名站点2:site2.com(Yum安装Apache)" > /var/www/html/site2/index.html
# 赋予Apache运行用户权限(关键:避免403错误)
chown -R apache:apache /var/www/html/
chmod -R 755 /var/www/html/
4. 配置生效与验证
bash
# 1. 检查配置语法
httpd -t
# 2. 平滑重载Apache(不中断现有连接,推荐)
systemctl reload httpd
# 3. 验证站点
# 本地验证
curl http://site1.com
curl http://site2.com
# 远程验证:浏览器访问 http://site1.com、http://site2.com
三、模式2:基于端口的虚拟主机(无需域名)
同一IP,通过不同端口区分多网站,适合内网测试、多站点隔离,无需配置域名解析。
1. 配置Apache监听多端口
编辑端口配置文件(Yum安装专属):
bash
vi /etc/httpd/conf/ports.conf
# 若该文件不存在,编辑主配置文件:vi /etc/httpd/conf/httpd.conf
找到Listen 80,在下方添加自定义端口(如8080、8081):
plain
# 保留默认80端口
Listen 80
# 添加额外监听端口(1024以上,避免端口冲突)
Listen 8080
Listen 8081
保存退出。
2. 创建端口虚拟主机配置文件
bash
vi /etc/httpd/conf.d/port_vhosts.conf
添加不同端口对应的虚拟主机配置:
plain
# 80端口站点
<VirtualHost *:80>
ServerName web80
DocumentRoot "/var/www/html/web80"
<Directory "/var/www/html/web80">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "/var/log/httpd/web80_error.log"
CustomLog "/var/log/httpd/web80_access.log" combined
</VirtualHost>
# 8080端口站点
<VirtualHost *:8080>
ServerName web8080
DocumentRoot "/var/www/html/web8080"
<Directory "/var/www/html/web8080">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "/var/log/httpd/web8080_error.log"
CustomLog "/var/log/httpd/web8080_access.log" combined
</VirtualHost>
# 8081端口站点
<VirtualHost *:8081>
ServerName web8081
DocumentRoot "/var/www/html/web8081"
<Directory "/var/www/html/web8081">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "/var/log/httpd/web8081_error.log"
CustomLog "/var/log/httpd/web8081_access.log" combined
</VirtualHost>
3. 创建网站目录与测试页面
bash
# 创建3个端口对应的目录
mkdir -p /var/www/html/web80
mkdir -p /var/www/html/web8080
mkdir -p /var/www/html/web8081
# 写入测试内容
echo "这是80端口站点(Yum Apache)" > /var/www/html/web80/index.html
echo "这是8080端口站点(Yum Apache)" > /var/www/html/web8080/index.html
echo "这是8081端口站点(Yum Apache)" > /var/www/html/web8081/index.html
# 赋予权限
chown -R apache:apache /var/www/html/
chmod -R 755 /var/www/html/
4. 开放防火墙端口(关键)
bash
# 永久开放8080、8081端口
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=8081/tcp
# 重新加载防火墙规则
firewall-cmd --reload
# 验证端口是否开放
firewall-cmd --list-ports
5. 配置生效与验证
bash
# 1. 检查语法
httpd -t
# 2. 平滑重载Apache
systemctl reload httpd
# 3. 验证站点
# 本地验证
curl http://127.0.0.1:80
curl http://127.0.0.1:8080
curl http://127.0.0.1:8081
# 远程验证:浏览器访问 http://服务器IP:80、http://服务器IP:8080、http://服务器IP:8081
四、模式3:基于IP的虚拟主机(多IP场景)
服务器绑定多个独立IP,每个IP对应一个网站,适合需要独立IP的场景(如专属SSL证书部署)。
1. 为服务器绑定多个IP
先确认网卡名称(如ens33),添加额外IP:
bash
# 临时添加(重启网卡失效,用于测试)
ifconfig ens33:0 192.168.1.101 netmask 255.255.255.0 up
ifconfig ens33:1 192.168.1.102 netmask 255.255.255.0 up
# 永久添加(CentOS为例)
vi /etc/sysconfig/network-scripts/ifcfg-ens33:0
添加以下配置(按需修改):
plain
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.1.101
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=223.5.5.5
重启网卡生效:
bash
systemctl restart network
2. 创建IP虚拟主机配置文件
bash
vi /etc/httpd/conf.d/ip_vhosts.conf
添加不同IP对应的虚拟主机配置:
plain
# IP1:192.168.1.100(80端口)
<VirtualHost 192.168.1.100:80>
ServerName web100
DocumentRoot "/var/www/html/web100"
<Directory "/var/www/html/web100">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "/var/log/httpd/web100_error.log"
CustomLog "/var/log/httpd/web100_access.log" combined
</VirtualHost>
# IP2:192.168.1.101(80端口)
<VirtualHost 192.168.1.101:80>
ServerName web101
DocumentRoot "/var/www/html/web101"
<Directory "/var/www/html/web101">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog "/var/log/httpd/web101_error.log"
CustomLog "/var/log/httpd/web101_access.log" combined
</VirtualHost>
3. 创建网站目录与测试页面
bash
mkdir -p /var/www/html/web100
mkdir -p /var/www/html/web101
echo "这是IP 192.168.1.100 站点(Yum Apache)" > /var/www/html/web100/index.html
echo "这是IP 192.168.1.101 站点(Yum Apache)" > /var/www/html/web101/index.html
chown -R apache:apache /var/www/html/
chmod -R 755 /var/www/html/
4. 配置生效与验证
bash
# 1. 检查语法
httpd -t
# 2. 平滑重载Apache
systemctl reload httpd
# 3. 验证站点
curl http://192.168.1.100
curl http://192.168.1.101
# 远程浏览器访问对应IP即可
五、日常管理常用操作(Yum安装专属)
1. 添加新站点
- 按托管模式完成前置配置(域名解析/添加监听端口/绑定新IP);
- 在
/etc/httpd/conf.d/下创建新的.conf配置文件,添加<VirtualHost>块; - 创建对应网站目录与页面,赋予
apache:apache权限; - 检查语法(
httpd -t)→ 平滑重载(systemctl reload httpd); - (端口模式)开放防火墙新端口。
2. 修改现有站点
- 编辑
/etc/httpd/conf.d/下对应站点的.conf文件; - 检查语法 → 平滑重载(无需重启,不影响业务)。
3. 停用站点
- 重命名对应配置文件(后缀改为非.conf,如
site1.conf.bak),Apache将不再加载:
bash
mv /etc/httpd/conf.d/site1.conf /etc/httpd/conf.d/site1.conf.bak
- (端口模式)注释
ports.conf中的对应监听端口; - 检查语法 → 平滑重载;
- (可选)关闭防火墙对应端口/删除域名解析。
4. 故障排查
bash
# 1. 查看Apache服务状态
systemctl status httpd
# 2. 实时查看站点错误日志(以site1为例)
tail -f /var/log/httpd/site1_error.log
# 3. 查看Apache监听端口
netstat -tulpn | grep httpd
# 4. 重新检查配置语法
httpd -t
# 5. 重启Apache(配置错误导致服务异常时使用)
systemctl restart httpd
六、Yum安装Apache的专属注意事项
- 配置文件规范:虚拟主机配置优先放在
/etc/httpd/conf.d/目录,后缀必须为.conf,主配置文件httpd.conf尽量不修改; - 运行用户:默认以
apache用户/组运行,网站目录必须赋予apache:apache权限,否则出现403错误; - 日志自动生成:
/var/log/httpd/目录无需手动创建日志文件,Apache会自动生成对应站点日志; - 开机自启:Yum安装后Apache默认未开机自启,可通过
systemctl enable httpd设置开机自启; - 端口冲突:避免使用系统默认端口(22、3306、8080等),可通过
ss -tulpn查看端口占用情况; - 模块管理:如需启用SSL等模块,可通过
yum install mod_ssl安装,无需手动编译加载。
总结
Yum安装Apache托管多网站的核心流程:
- 确认虚拟主机模块已启用,无需额外配置;
- 选择托管模式,完成前置准备(域名解析/监听端口/多IP绑定);
- 在
/etc/httpd/conf.d/创建对应.conf配置文件,编写虚拟主机配置; - 创建网站目录,赋予
apache:apache权限,添加测试页面; - 检查语法 → 平滑重载 → 验证站点;
- 日常管理通过
systemctl和配置文件重命名实现,便捷高效。