Apache 服务器基础配置与虚拟主机部署

在这里插入图片描述

Apache 的核心定位与作用:

Apache 的核心功能是处理 HTTP 请求并提供 Web 资源,是客户端(如浏览器)与 Web 服务器之间的 “中间人”:

接收客户端通过 HTTP/HTTPS 协议发送的请求(如访问网页、提交表单)。
解析请求内容(如请求的文件路径、方法类型 GET/POST)。
从服务器本地或后端服务(如 PHP、Python 应用)获取资源。
将资源封装为 HTTP 响应,返回给客户端。

简单来说,当用户在浏览器输入http://example.com时,Apache 负责将服务器上的index.html文件(或动态生成的内容)发送到用户的浏览器中。

1. 安装与启动服务

(1)安装 Apache

通过 YUM 源安装 Apache(前提已配置好本地或网络 YUM 源):

[root@zhangyiwei /]# yum -y install httpd
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
aa                                                       | 3.6 kB     00:00     
(1/2): aa/group_gz                                         | 166 kB   00:00     
(2/2): aa/primary_db                                       | 3.1 MB   00:00     
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-88.el7.centos 将被 安装
--> 正在处理依赖关系 httpd-tools = 2.4.6-88.el7.centos,它被软件包 httpd-2.4.6-88.el7.centos.x86_64 需要
--> 正在处理依赖关系 /etc/mime.types,它被软件包 httpd-2.4.6-88.el7.centos.x86_64 需要
--> 正在处理依赖关系 libaprutil-1.so.0()(64bit),它被软件包 httpd-2.4.6-88.el7.centos.x86_64 需要
--> 正在处理依赖关系 libapr-1.so.0()(64bit),它被软件包 httpd-2.4.6-88.el7.centos.x86_64 需要
--> 正在检查事务
---> 软件包 apr.x86_64.0.1.4.8-3.el7_4.1 将被 安装
---> 软件包 apr-util.x86_64.0.1.5.2-6.el7 将被 安装
---> 软件包 httpd-tools.x86_64.0.2.4.6-88.el7.centos 将被 安装
---> 软件包 mailcap.noarch.0.2.1.41-2.el7 将被 安装
--> 解决依赖关系完成依赖关系解决================================================================================Package            架构          版本                          源         大小
================================================================================
正在安装:httpd              x86_64        2.4.6-88.el7.centos           aa        2.7 M
为依赖而安装:apr                x86_64        1.4.8-3.el7_4.1               aa        103 kapr-util           x86_64        1.5.2-6.el7                   aa         92 khttpd-tools        x86_64        2.4.6-88.el7.centos           aa         90 kmailcap            noarch        2.1.41-2.el7                  aa         31 k事务概要
================================================================================
安装  1 软件包 (+4 依赖软件包)总下载量:3.0 M
安装大小:10 M
Downloading packages:
--------------------------------------------------------------------------------
总计                                               110 MB/s | 3.0 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安装    : apr-1.4.8-3.el7_4.1.x86_64                                  1/5 正在安装    : apr-util-1.5.2-6.el7.x86_64                                 2/5 正在安装    : httpd-tools-2.4.6-88.el7.centos.x86_64                      3/5 正在安装    : mailcap-2.1.41-2.el7.noarch                                 4/5 正在安装    : httpd-2.4.6-88.el7.centos.x86_64                            5/5 验证中      : httpd-tools-2.4.6-88.el7.centos.x86_64                      1/5 验证中      : apr-1.4.8-3.el7_4.1.x86_64                                  2/5 验证中      : mailcap-2.1.41-2.el7.noarch                                 3/5 验证中      : httpd-2.4.6-88.el7.centos.x86_64                            4/5 验证中      : apr-util-1.5.2-6.el7.x86_64                                 5/5 已安装:httpd.x86_64 0:2.4.6-88.el7.centos                                            作为依赖被安装:apr.x86_64 0:1.4.8-3.el7_4.1                 apr-util.x86_64 0:1.5.2-6.el7    httpd-tools.x86_64 0:2.4.6-88.el7.centos     mailcap.noarch 0:2.1.41-2.el7    完毕!
(2)启动服务并设置自启
[root@zhangyiwei /]# systemctl restart httpd
[root@zhangyiwei /]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
(3)关闭干扰项(测试环境)

为避免防火墙和 SELinux 拦截访问,测试环境可临时关闭:

[root@zhangyiwei /]# systemctl stop firewalld
[root@zhangyiwei /]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
(4)配置DNS服务器,将客户端(192.168.100.20)的 DNS 服务器 IP指向它。

​ #详见DNS(域名系统)详解与 BIND 服务搭建

2. 基础站点配置

Apache 默认站点根目录为/var/www/html/,可直接在该目录下创建网页文件:

# 创建默认首页
[root@zhangyiwei /]# echo "Hello,World" > /var/www/html/index.html

#重启服务后

[root@zhangyiwei /]# systemctl restart httpd    #重启httpd服务

#在客户端过服务器 IP(http://192.168.100.10)访问,即可看到页面内容。

在这里插入图片描述

3. 自定义站点目录(可选)

若需将站点目录修改为自定义路径(如/html/),步骤如下:

  1. 创建目录并添加页面

    [root@zhangyiwei /]# mkdir /html
    [root@zhangyiwei /]# echo "Hello,World" >/var/www/html/index.html
  2. 修改Apache 服务主配置文件

    [root@zhangyiwei /]# vim /etc/httpd/conf/httpd.conf 
    

#Apache 服务主配置文件核心部分

ServerRoot "/etc/httpd"                           # 定义Apache服务器的根目录,存放配置文件和模块
Listen 80                                         # 设置服务器监听的端口,这里为HTTP默认端口80
Include conf.modules.d/*.conf                     # 包含指定目录下所有.conf文件,用于加载功能模块
User apache                                       # 指定Apache进程运行的用户,增强安全性
Group apache                                      # 指定Apache进程所属的用户组
DocumentRoot "/var/www/html"                      # 设置网站文件的根目录,网页内容默认存放在此
<Directory "/var/www">                            # 对/var/www目录进行访问控制配置AllowOverride None                             # 禁止使用.htaccess文件覆盖当前目录配置# Allow open access:Require all granted                            # 允许所有客户端访问该目录下的资源Require all granted                            # 允许所有客户端访问该目录下的资源
</Directory>

调整DocumentRoot和目录权限配置:

DocumentRoot "/html"
<Directory "/html">Require all granted  # 允许所有访问
</Directory>
  1. 重启服务生效
[root@zhangyiwei /]# systemctl restart httpd

验证:访问服务器 IP查看页面内容

在这里插入图片描述

二、虚拟主机部署(多站点方案)

虚拟主机允许在同一服务器通过不同方式区分多个站点,常见的三种部署方式如下:

方式一:相同 IP、不同端口

(1)准备虚拟主机配置文件

Apache 提供虚拟主机模板,复制到配置目录:

[root@zhangyiwei /]# cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf /etc/httpd/conf.d/#可以用find -name "*vhosts*".conf命令查找虚拟主机模板
(2)创建多站点目录及页面
# 创建两个站点目录
[root@zhangyiwei /]# mkdir -p /var/www/zhangsan /var/www/lisi# 添加测试页面
[root@zhangyiwei /]# echo "zhangsan" > /var/www/zhangsan/index.html
[root@zhangyiwei /]# echo "lisi" > /var/www/lisi/index.html
(3)配置虚拟主机(端口区分)
[root@zhangyiwei /]# vim /etc/httpd/conf.d/httpd-vhosts.conf

添加以下配置():

# 第一个站点:IP+80端口(zhangsan)
<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/baidu"
</VirtualHost># 第二个站点:IP+8080端口(lisi,需声明监听端口)
Listen 8080
<VirtualHost 192.168.100.10:8080>DocumentRoot "/var/www/taobao"
</VirtualHost>

虚拟主机配置模板

<VirtualHost *:@@Port@@>         # 定义虚拟主机,监听所有IP的@@Port@@端口(通常为80或443)ServerAdmin webmaster@dummy-host2.example.com   # 网站管理员的邮箱地址,用于接收错误通知DocumentRoot "@@ServerRoot@@/docs/dummy-host2.example.com"  # 该虚拟主机的网页文件存放路径ServerName dummy-host2.example.com   # 绑定的域名,客户端通过此域名访问该虚拟主机ErrorLog "/var/log/httpd/dummy-host2.example.com-error_log"  # 错误日志文件路径CustomLog "/var/log/httpd/dummy-host2.example.com-access_log" common  # 访问日志文件路径,使用common格式记录
</VirtualHost>
(4)重启服务并开放端口
[root@zhangyiwei /]# systemctl restart httpd

#开放80和8080端口(生产环境)

firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
(5)访问测试
  • 通过http://192.168.100.10访问 zhangsan 站点

  • 在这里插入图片描述

  • 通过http://192.168.100.10:8080访问 lisi 站点
    在这里插入图片描述

方式二:不同 IP、相同端口(80 端口)

(1)为服务器配置多 IP

在网卡配置文件中添加第二个 IP(以ens33为例):

[root@zhangyiwei /]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
# 添加第二个IP,写入这两行
IPADDR1=192.168.100.200
PREFIX1=24
# 重启网络
[root@zhangyiwei /]# systemctl restart network

查看IP地址:

 inet 192.168.100.10/24 brd 192.168.100.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 192.168.100.200/24 brd 192.168.100.255 scope global secondary noprefixroute ens33valid_lft forever preferred_lft forever
(2)配置虚拟主机(IP 区分)
vim /etc/httpd/conf.d/httpd-vhosts.conf

添加以下配置:

# 第一个站点:IP=192.168.100.10(baidu)
<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/baidu"
</VirtualHost># 第二个站点:IP=192.168.100.200(taobao)<VirtualHost 192.168.100.200:80>DocumentRoot "/var/www/lisi"
</VirtualHost>
(3)重启服务
systemctl restart httpd
(4)访问测试
  • 通过http://192.168.100.10访问 baidu 站点

  • 在这里插入图片描述

  • 通过http://192.168.100.200访问 taobao 站点
    在这里插入图片描述

方式三:相同 IP、相同端口、不同域名(FQDN)

(1)配置 DNS 解析(关键)

在 DNS 服务器中为两个域名配置正向解析(指向同一 IP):

# 编辑DNS正向解析文件(本机为zhang3.com)
[root@zhangyiwei /]# vim /var/named/zhang3.com # 添加A记录
webzhangsan IN  A       192.168.100.10
weblisi IN      A       192.168.100.10# 重启DNS服务
systemctl restart named
(2)配置虚拟主机(域名区分)
[root@zhangyiwei /]# vim /etc/httpd/conf.d/httpd-vhosts.conf

添加以下配置(通过ServerName绑定域名):

# 第一个站点:webzhangsan.example.com
<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/baidu"ServerName webzhangsan.example.com
</VirtualHost># 第二个站点:weblisi.example.com
<VirtualHost 192.168.100.10:80>DocumentRoot "/var/www/taobao"ServerName weblisi.example.com
</VirtualHost>
(3)重启服务
[root@zhangyiwei /]# systemctl restart httpd
(4)访问测试
  • 客户端需将 DNS 指向配置解析的服务器
  • 通过http://webzhangsan.example.comhttp://weblisi.example.com分别访问两个站点
    在这里插入图片描述

在这里插入图片描述

总结

Apache 虚拟主机通过端口、IP 或域名三种方式实现多站点部署,其中域名区分是最符合互联网访问习惯的方式(需配合 DNS 解析)。从基础配置到虚拟主机搭建,核心步骤包括:安装服务、配置站点目录、定义虚拟主机规则、重启服务并验证访问。实际应用中,需根据业务需求选择合适的部署方式,并注意权限与安全配置(如防火墙、SELinux)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/95310.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95310.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/95310.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性代数 · 矩阵 | 最小多项式

注&#xff1a;本文为 “矩阵 | 最小多项式” 相关合辑。 略作重排&#xff0c;如有内容异常&#xff0c;请看原文。 最小多项式 橘子蜂蜜 于 2019-05-22 22:48:25 发布 根据哈密顿 - 凯莱&#xff08;Hamilton - Cayley&#xff09;定理&#xff0c;任给数域 PPP 上的一个 …

docter的使用、vscode(cursor)和docker的连接,详细分析说明

目录 一、基本命令 二、用案例来学习使用方法 &#x1f680; Pull Python 3.11 镜像并创建命名容器 &#x1f4cb; 其他有用命令 在容器中安装依赖 三、直接在镜像中安装依赖&#xff08;创建自己定制的镜像&#xff09; 四、在 cursor 中选用容器作为编译器 五、对于整…

如何使用AI大语言模型解决生活中的实际小事情?

我们总以为AI是遥不可及的未来科技&#xff0c;却忽视了它早已成为生活中最实用的“隐形助手”。在信息爆炸的今天&#xff0c;我们每天被无数生活琐事包围&#xff1a;一封专业邮件反复修改措辞、孩子突如其来的数学难题、冰箱里仅剩的食材如何搭配、旅行行程的繁琐规划……这…

关于微信小程序的笔记

1.需要获取demo素材图片方法&#xff08;2,3&#xff09;2.使用逆向工具进行解包没有安装node的需要安装一下安装npm i -g wedecode0.8.0-beta.3获取小程序文件存放路径/Users/lin/Library/Containers/com.tencent.xinWeChat/Data/.wxapplet/packages/wx060ecb4f74eac0da根据具…

课堂笔记:吴恩达的AI课(AI FOR EVERYONE)-W2 AI项目工作流程

课堂笔记&#xff1a;吴恩达的AI课&#xff08;AI FOR EVERYONE&#xff09;-W2 AI项目工作流程 一、如何开始一个AI项目&#xff1f; 1、建设项目工作流程 2、选择合适的AI项目 3、为这个项目收集数据和组织团队二、AI项目的工作流程 &#xff08;1&#xff09;机器学习项目的…

逐际动力开源运控 tron1-rl-isaacgym 解读与改进

文章目录概览基础框架解读线速度估计观测结构仿真实验点足式步态设计步态相位与接触状态建模步态接触奖励动作延迟我的改进Point-goal Locomotion观测修改奖励修改预训练地形编码器Sliced Wasserstein AutoEncoder模型训练与结果参考材料概览 这篇博客记录了我参加逐际动力创学…

人工智能-python-机器学习-线性回归与梯度下降:理论与实践

文章目录线性回归与梯度下降&#xff1a;理论与实践1. 引言2. 回归分析2.1 什么是回归&#xff1f;2.2 线性回归2.3 损失函数2.4 多参数回归3. 参数求解&#xff1a;最小二乘法3.1 最小二乘法 MSE3.2 最小二乘法的优缺点优点&#xff1a;缺点&#xff1a;4. 梯度下降4.1 梯度下…

前端,elment-plus组件:表格,分页,对话框,表单

Element Plus 核心特性组件体系&#xff1a;表单、表格、弹窗、导航等高频组件设计理念主题定制&#xff1a;Sass 变量覆盖与暗黑模式无缝切换国际化支持&#xff1a;多语言动态切换的实现机制TypeScript 支持&#xff1a;完整的类型定义与开发友好性快速上手指南安装与基础配置…

【LeetCode】6. Z 字形变换

文章目录6. Z 字形变换题目描述示例 1&#xff1a;示例 2&#xff1a;示例 3&#xff1a;提示&#xff1a;解题思路算法分析问题本质分析Z字形排列过程详解Z字形排列可视化方向控制策略数学规律法详解各种解法对比算法流程图边界情况处理时间复杂度分析空间复杂度分析关键优化点…

spring文件下载的方式

spring文件下载的方式方式一:通过ResponseEntity<Resource> 方式来下载方式二:通过ResponseEntity<StreamingResponseBody> 方式来下载方式三:通过Servlet原生下载方式四:通过ResponseEntity<byte[]> 方式来下载四种下载方式的对比1、核心特性对比2、典型场景…

写一个redis客户端软件,参考 Another Redis Desktop Manager 的设计风格。

一个基于 Electron 开发的现代化 Redis 桌面客户端&#xff0c;参考 Another Redis Desktop Manager 的设计风格。 github仓库地址 https://github.com/henkuoai/redis-man-pc

Web3: DeFi借贷的安全基石, 了解喂价与清算机制的原理与重要性

今天我们要聊一个DeFi世界里至关重要&#xff0c;但又时常被误解的话题&#xff1a;为什么DeFi协议需要定期更新喂价和执行清算&#xff1f; 如果大家参与过DeFi借贷&#xff0c;大家可能看到过“清算”这个词&#xff0c;甚至会有点谈虎色变。但实际上&#xff0c;清算和为其提…

「iOS」————响应者链与事件传递链

iOS学习响应者链和事件传递链传递链&#xff1a;hitTest:withEvent**pointInside:withEvent**响应链第一响应者和最佳响应者触摸事件&#xff08;UITouch&#xff09;UIGestureRecognizer&#xff08;手势识别器&#xff09;响应者链和事件传递链 iOS事件的主要由&#xff1a;…

修复图像、视频和3D场景的AI工具–Inpaint Anything

TL; DR&#xff1a;用户可以通过单击来选择图像中的任何对象。借助强大的视觉模型&#xff0c;例如SAM、LaMa和稳定扩散 (SD)&#xff0c;Inpaint Anything能够顺利地移除对象&#xff08;即Remove Anything&#xff09;。此外&#xff0c;在用户输入文本的提示下&#xff0c;I…

java -jar xxx.jar 提示xxx.jar中没有主清单属性报错解决方案

xxx.jar 中没有主清单属性 &#xff08;no main manifest attribute&#xff09;解决方案 java -jar xxx.jar 提示xxx.jar中没有主清单属性报错解决方案 这个错通常出现在你用 java -jar xxx.jar 启动&#xff0c;但 JAR 的 META-INF/MANIFEST.MF 里没有 Main-Class 条目&#…

Myqsl建立库表练习

目录 一、windows中选择一种方式安装Mysql8.0 二、新建产品库mydb6_product 1. 新建3张表如下&#xff1a; 1&#xff09;employees表 2&#xff09;orders表 3&#xff09;invoices表 三、新建员工库mydb8_worker&#xff0c;添加自定义表内容并插入数据 1. 新建库表 2. 插…

STM32 输入捕获,串口打印,定时器,中断综合运用

实验目的 使用定时器 2 通道 2 来捕获按键 2 按下时间&#xff0c;并通过串口打印。 计一个数的时间&#xff1a;1us&#xff0c;PSC71&#xff0c;ARR65535 下降沿捕获、输入通道 2 映射在 TI2 上、不分频、不滤波输入捕获原理定时器输入捕获实验配置步骤测量按键按下时长思路…

Nacos-2--Nacos1.x版本的通信原理

在Nacos 1.x版本中&#xff0c;客户端长轮询&#xff08;Long Polling&#xff09;和服务端UDP主动推送是两种不同的机制&#xff0c;分别用于配置管理和服务发现场景。它们的核心目标都是实现动态更新的实时感知&#xff0c;但实现方式、数据内容和适用场景完全不同。 1、长轮…

机器学习——09 聚类算法

1 聚类算法聚类算法&#xff1a; 是一种无监督学习算法&#xff0c;它不需要预先知道数据的类别信息&#xff0c;而是根据样本之间的相似性&#xff0c;将样本划分到不同的类别中&#xff1b;不同的相似度计算方法&#xff0c;会得到不同的聚类结果&#xff0c;常用的相似度计算…

生成式AI应用生态的爆发与专业化演进:从零和博弈到正和共赢

2025年,生成式AI产业规模已突破7000亿元,全球生成式AI市场规模预计在2028年达到2842亿美元(IDC数据)。在这场技术革命中,AI基础模型的分化已证明:差异化竞争而非同质化替代,才是推动产业发展的核心逻辑。如今,这一规律正从基础模型层向应用生成平台层蔓延——Lovable、…