Apache构建虚拟主机配置(基于域名、端口、IP)

mark

简介


虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中的每个站点实际并不独立占用整个服务器,因此被称为“虚拟”Web主机。通过虚拟Web主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。

使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能同事支撑大量的Web站点。

httpd服务支持的虚拟主机类型包括以下三种:

基于域名:为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的;

基于IP地址:为每个虚拟主机使用不同的域名,其各自对应的IP地址也不相同;

基于端口:这种方式并不使用域名、IP地址来区分不同的站点内容,而是使用不同的TCP端口,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

这几种虚拟Web主机中,基于域名的虚拟主机是使用最为广泛的;基于IP地址和基于端口的虚拟主机一般只适用于公司内部。

一:虚拟Web主机

  • 在同一台服务器运行多个Web点,其中每一个站点并不独立占用一台真正的计算机

1.1:基于域名主机的虚拟主机实现步骤:

  • 为虚拟主机提供域名解析

  • 首先需要搭建DNS服务以便提供域名解析,搭建DNS服务

1.2:httpd支持的虚拟主机类型

- 基于域名的虚拟主机

- 基于IP地址的虚拟主机

- 基于端口的虚拟主机

二:构建虚拟基于域名的虚拟主机

实验步骤

添加两块网卡

IP分别为
20.0.0.41
20.0.0.50
mark

配置网卡信息

#配置一下双网卡下面做基于IP用得到

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
.....
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=20.0.0.50
PREFIX=24
GATEWAY=20.0.0.2
DNS1=20.0.0.2

[root@localhost network-scripts]#systemctl start network   #重启网卡

安装Apache跟DNS服务

[root@localhost ~]# yum install bind httpd -y
...省略内容

配置DNS

  • /etc/named.conf ##主配置文件
  • /etc/named.rfc1912.zones ##区配置文件
  • /var/named/named.localhost ##区域数据配置文件

配置dns全局配置文件/etc/named.conf

[root@localhost ~]# vim /etc/named.conf
 
 options {
        listen-on port 53 { any; };  ##进来后把监听地址改为any
  .....省略

       allow-query     { any; };    ##把localhost改为any 任何都可以访问地址

配置区域配置文件

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "abc.com" IN {
        type master;
        file "abc.com.zone";
        allow-update { none; };
};
zone "dba.com" IN {
        type master;
        file "dba.com.zone";
        allow-update { none; };
};

配置区域数据文件

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
benet.com.zone  dynamic       named.ca     named.localhost  slaves
data            kgc.com.zone  named.empty  named.loopback
[root@localhost named]# cp -p named.localhost abc.com.zone
[root@localhost named]# vim abc.com.zone 
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www IN  A       20.0.0.41                  #添加解析地址

[root@localhost named]# cp -p abc.com.zone dba.com.zone

重启网卡关闭防护功能

[root@localhost named]# setenforce 0
[root@localhost named]# iptables -F
[root@localhost named]# systemctl start named

客户机测试是否生效

mark

mark

创建虚拟主机的配置文件

  • 目录文件在/etc/httpd/conf/extra/,简单设置文件名为vhost.conf
#切换到httpd目录
[root@localhost named]# ls /etc/httpd/conf.d

autoindex.conf  README  userdir.conf  welcome.conf
[root@localhost httpd]# ll
总用量 0
drwxr-xr-x. 2 root root  37 77 13:35 conf
drwxr-xr-x. 2 root root  82 77 13:35 conf.d
drwxr-xr-x. 2 root root 146 77 13:35 conf.modules.d
lrwxrwxrwx. 1 root root  19 77 13:35 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root  29 77 13:35 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root  10 77 13:35 run -> /run/httpd
#/var/log/httpd是日志文件目录   logs是软连接

#这里注意的是服务没启动是没有文件的
[root@localhost httpd]# systemctl start httpd
[root@localhost httpd]# ls /var/log/httpd/
access_log  access_log-20200802  error_log  error_log-20200802
[root@localhost httpd]# ls logs/
access_log  access_log-20200802  error_log  error_log-20200802

/etc/httpd/conf/extra/vhost.conf文件中

  • 指的是所有的ip地址同过80端口都可以访问
  • DocumentRoot “是web站点目录”
  • ServerName “站点服务域名”
  • Errorlog “指定错误日志路径”
  • Customlog “指定访问日志路径” 后面跟common扩展工具
  • 指定详细配置的目录名,可以发现是web站点目录的父目录
    允许所有用户主机的所有访问权限 //后面由此还会扩展更多的配置属性
[root@localhost httpd]# cd conf
[root@localhost conf]# ls
httpd.conf  magic
[root@localhost conf]# mkdir shuai
[root@localhost conf]# ls
httpd.conf  magic  shuai
[root@localhost shuai]# vim vhost.conf
<VirtualHost *:80>
  DocumentRoot "/var/www/html/abc"        ‘网站目录’
  ServerName www.abc.com                  ‘站点域名’
  ErrorLog "logs/www.abc.com.error_log"   ‘错误日志’
  CustomLog "logs/www.abc.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot "/var/www/html/dba"
  ServerName www.dba.com
  ErrorLog "logs/www.dba.com.error_log"
  CustomLog "logs/www.dba.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

创建两个web页面的站点

  • 首页文件index.html在/var/www/html的站点目录
[root@localhost shuai]# cd /var/www/html/

[root@localhost html]# mkdir abc dba      ‘分别创建两个站点’

[root@localhost html]# cd abc/            ‘进入站点编辑网页内容’
[root@localhost abc]# vim index.html
<h1>this is abc web</h1>

[root@localhost abc]# cd ../dba/
[root@localhost dba]# vim index.html
<h1>this is dba web</h1>

需要把shuai的路径加入到主配置文件,启动要去读取才能识别

[root@localhost kgc]# cd /etc/httpd/conf
[root@localhost conf]# ls
httpd.conf  magic  shuai
[root@localhost conf]# cd shuai/
[root@localhost shuai]# ls
vhost.conf
[root@localhost shuai]# vim /etc/httpd/conf/httpd.conf

Include conf/shuai/vhost.conf

启动服务,查看端口

[root@localhost shuai]# systemctl start httpd
[root@localhost shuai]# netstat -natp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      28532/httpd         

下一步客户机进行验证

mark

mark

实验二:基于端口的构建虚拟主机

  • 修改虚拟web主机的配置文件,增加一项8080的端口参数,为了区别站点,需要把站点文件修改区分,不会覆盖
[root@localhost ~]# vim /etc/httpd/conf/shuai/vhost.conf 

<VirtualHost *:8080>                                     #修改端口信息
  DocumentRoot "/var/www/html/dba02"
  ServerName www.dba.com                                 #域名续用abc的
  ErrorLog "logs/www.dba02.com.error_log"
  CustomLog "logs/www.dba02.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>

创建站点

[root@localhost ~]# mkdir /var/www/html/dba02
[root@localhost ~]# vim /var/www/html/dba02/index.html

<h1>this is dba02</h1>

配置监听端口

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

mark

强烈建议,修改端口信息,千万不能修改为1~1024之间的端口,因为这些端口已经被系统服务所使用

重启服务,验证端口是否开启

root@localhost ~]# systemctl restart httpd      #重载httpd服务
[root@localhost ~]# netstat -ntap | grep httpd   #两个监听端口已开启
tcp        0      0 20.0.0.41:8080          0.0.0.0:*               LISTEN      31057/httpd         
tcp        0      0 20.0.0.41:80            0.0.0.0:*               LISTEN      31057/httpd         

查看验证,IP地址一样,端口不一样

mark

三:构建虚拟主机基于IP实验

  • 构建2个虚拟Web站点
  1. www.abc.com,IP地址为20.0.0.41

  2. www.abc01.com,IP地址为20.0.0.50

修改虚拟web主机的配置文件

当服务器中使用不同IP的虚拟web主机时,/etc/httpd/conf/extra/vhost.conf文件中的IP地址需要具象到一个固定的IP地址,不可以再用*通配符号,以免混淆
<VirtualHost 20.0.0.41:80>
  DocumentRoot "/var/www/html/abc"
  ServerName www.abc.com
  ErrorLog "logs/www.abc.com.error_log"
  CustomLog "logs/www.abc.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost 20.0.0.50:80>
  DocumentRoot "/var/www/html/dba"
  ServerName www.dba.com
  ErrorLog "logs/www.dba.com.error_log"
  CustomLog "logs/www.dba.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

创建新建虚拟web站点

[root@localhost html]# cat abc/index.html 
<h1>this is abc web</h1>
[root@localhost html]# cat dba/index.html 
<h1>this is dba web</h1>

修改主配置文件,添加监听地址

Listen 20.0.0.41:80
Listen 20.0.0.50:80
#Listen 80

重启httpd服务

[root@localhost html]# systemctl restart httpd
[root@localhost html]# netstat -ntap | grep httpd
tcp        0      0 20.0.0.50:80            0.0.0.0:*               LISTEN      92579/httpd         
tcp        0      0 20.0.0.41:80            0.0.0.0:*               LISTEN      92579/httpd         

客户机验证

mark

mark

四:创建站点内的超链接

修改主页文件

[root@localhost html]# vim /var/www/html/abc/index.html

<html>
<head>
 <titele>hello boy</tite>
</head>
<body>
<h1><a href="http://www.abc.com/index.html">hello world</a></h1>
</body>
</html>

重启服务

[root@localhost html]# systemctl restart httpd

客户机验证

在这里插入图片描述
在这里插入图片描述

四:创建站点内的超链接

修改主页文件

[root@localhost html]# vim /var/www/html/abc/index.html

<html>
<head>
 <titele>hello boy</tite>
</head>
<body>
<h1><a href="http://www.abc.com/index.html">hello world</a></h1>
</body>
</html>

重启服务

[root@localhost html]# systemctl restart httpd

mark

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Ubuntu 上配置基于域名虚拟主机,需要进行以下步骤: 1. 安装 Apache 服务器 在终端中输入以下命令安装 Apache 服务器: ``` sudo apt update sudo apt install apache2 ``` 2. 创建虚拟主机目录 在终端中输入以下命令创建虚拟主机目录: ``` sudo mkdir /var/www/example.com ``` 其中 example.com 是你要设置的虚拟主机域名。 3. 设置虚拟主机权限 在终端中输入以下命令设置虚拟主机权限: ``` sudo chown -R $USER:$USER /var/www/example.com sudo chmod -R 755 /var/www/example.com ``` 4. 创建虚拟主机配置文件 在终端中输入以下命令创建虚拟主机配置文件: ``` sudo nano /etc/apache2/sites-available/example.com.conf ``` 在文件中输入以下内容: ``` <VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> ``` 其中,ServerName 和 ServerAlias 分别是你要设置的虚拟主机域名和别名,DocumentRoot 是你要设置的虚拟主机目录。 5. 启用虚拟主机 在终端中输入以下命令启用虚拟主机: ``` sudo a2ensite example.com.conf ``` 6. 重启 Apache 服务器 在终端中输入以下命令重启 Apache 服务器: ``` sudo service apache2 restart ``` 现在你已经成功配置了基于域名虚拟主机。你可以在浏览器中输入你设置的虚拟主机域名访问你的网站

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值