云计算百科
云计算领域专业知识百科平台

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

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 k
apr-util x86_64 1.5.2-6.el7 aa 92 k
httpd-tools x86_64 2.4.6-88.el7.centos aa 90 k
mailcap 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/),步骤如下:

  • 创建目录并添加页面:

    [root@zhangyiwei /]# mkdir /html
    [root@zhangyiwei /]# echo "Hello,World" >/var/www/html/index.html

  • 修改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>

  • 重启服务生效:
  • [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 ens33
    valid_lft forever preferred_lft forever
    inet 192.168.100.200/24 brd 192.168.100.255 scope global secondary noprefixroute ens33
    valid_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.com和http://weblisi.example.com分别访问两个站点 在这里插入图片描述

    在这里插入图片描述

    总结

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

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Apache 服务器基础配置与虚拟主机部署
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!