2.2yum安装--单服务器托管多网站

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.comsite2.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. 添加新站点

  1. 按托管模式完成前置配置(域名解析/添加监听端口/绑定新IP);
  2. /etc/httpd/conf.d/下创建新的.conf配置文件,添加<VirtualHost>块;
  3. 创建对应网站目录与页面,赋予apache:apache权限;
  4. 检查语法(httpd -t)→ 平滑重载(systemctl reload httpd);
  5. (端口模式)开放防火墙新端口。

2. 修改现有站点

  1. 编辑/etc/httpd/conf.d/下对应站点的.conf文件;
  2. 检查语法 → 平滑重载(无需重启,不影响业务)。

3. 停用站点

  1. 重命名对应配置文件(后缀改为非.conf,如site1.conf.bak),Apache将不再加载:
bash 复制代码
mv /etc/httpd/conf.d/site1.conf /etc/httpd/conf.d/site1.conf.bak
  1. (端口模式)注释ports.conf中的对应监听端口;
  2. 检查语法 → 平滑重载;
  3. (可选)关闭防火墙对应端口/删除域名解析。

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的专属注意事项

  1. 配置文件规范:虚拟主机配置优先放在/etc/httpd/conf.d/目录,后缀必须为.conf,主配置文件httpd.conf尽量不修改;
  2. 运行用户:默认以apache用户/组运行,网站目录必须赋予apache:apache权限,否则出现403错误;
  3. 日志自动生成:/var/log/httpd/目录无需手动创建日志文件,Apache会自动生成对应站点日志;
  4. 开机自启:Yum安装后Apache默认未开机自启,可通过systemctl enable httpd设置开机自启;
  5. 端口冲突:避免使用系统默认端口(22、3306、8080等),可通过ss -tulpn查看端口占用情况;
  6. 模块管理:如需启用SSL等模块,可通过yum install mod_ssl安装,无需手动编译加载。

总结

Yum安装Apache托管多网站的核心流程:

  1. 确认虚拟主机模块已启用,无需额外配置;
  2. 选择托管模式,完成前置准备(域名解析/监听端口/多IP绑定);
  3. /etc/httpd/conf.d/创建对应.conf配置文件,编写虚拟主机配置;
  4. 创建网站目录,赋予apache:apache权限,添加测试页面;
  5. 检查语法 → 平滑重载 → 验证站点;
  6. 日常管理通过systemctl和配置文件重命名实现,便捷高效。
相关推荐
郝学胜-神的一滴1 天前
线程同步:并行世界的秩序守护者
java·linux·开发语言·c++·程序人生
龘龍龙1 天前
Python基础学习(十)
服务器·python·学习
Linux技术芯1 天前
浅谈nvme协议版本的发展
linux
释怀不想释怀1 天前
Linux(复习常见命令)
linux·运维·服务器
Wpa.wk1 天前
接口自动化 - 解决大量响应数据字段的格式断言 -Json-schema
运维·经验分享·测试工具·自动化·json·接口测试
_F_y1 天前
负载均衡在线oj(文件版)
linux·运维·负载均衡
Chase_______1 天前
【Linux指南】:vi编辑器
linux·运维·编辑器
2501_916766541 天前
Springboot+vue前后端分离项目部署到云服务器
服务器
Dxy12393102161 天前
Nginx中的worker_processes如何设置:从“盲目填数”到“精准调优”
运维·nginx