在CentOS-6.9配置apache服务(3)---虚拟主机配置
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
一 定义
虚拟主机是指在一台WWW服务器上为多个单独的域名提供web服务产生不同的web界面。每个域名都有特定的目录和配置相当于将一台主机分为多台主机。它满足了对主机数量不足而又想为不同用户提供独立web服务的需求。
二 系统环境
参数 | 值 |
---|---|
主机IP | 10.0.0.100 |
安装的apache版本 | Apache/2.2.15 (Unix) |
操作系统版本 | CentOS release 6.9 (Final) |
操作系统内核 | 2.6.32-696.el6.x86_64 |
三 基于域名
在一个主机创建多个网站采用多个域名进行访问其中域名对应的IP是同一个。
3.1 安装软件
yum安装apache服务
yum install -y httpd
安装完成后会有2个依赖软件包一同被安装。
3.2 修改主配置文件
通过yum安装得到的主配置文件是 /etc/httpd/conf/httpd.conf
在对其修改前首先进行源文件备份。
[root@test ~]# cd /etc/httpd/conf
[root@test conf]# cp httpd.conf httpd.conf.bak
我们对 httpd.conf
进行修改这是apache最终生效的主配置文件。
将 ServerName
后面的IP改成本主机网卡绑定的IP地址。
将 NameVirtualHost
前面的注释符号去掉使其生效。
检查Include这一步在 四
和 五
中同样检查不再赘述
检查 Include conf.d/*.conf
没有注释符号需要生效。
3.3 编写虚拟主机配置文件
首先进入 /etc/httpd/conf.d/
目录下创建 vhost.conf
cd /etc/httpd/conf.d/
touch vhost.conf
配置的域名分别为 www.test1.com
和 www.test2.com
站点目录分别为 /var/www/html/test1
和 /var/www/html/test2
。
[root@test conf.d]# cat vhost.conf
<VirtualHost *:80>
ServerName www.test1.com
DocumentRoot "/var/www/html/test1"
ErrorLog logs/test1.err
CustomLog logs/test1.access common
</VirtualHost>
<VirtualHost *:80>
ServerName www.test2.com
DocumentRoot "/var/www/html/test2"
ErrorLog logs/test2.err
CustomLog logs/test2.access common
</VirtualHost>
修改配置文件后使用 httpd -t
检查httpd服务的配置文件语法是否有错。
3.4 创建站点目录和测试文件
mkdir -p /var/www/html/test{1,2}
echo "www.test1.com" > /var/www/html/test1/index.html
echo "www.test2.com" > /var/www/html/test2/index.html
3.5 设置防火墙访问策略
允许80端口的服务。
添加一行下列内容。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
3.6 编写Linux和Windows的hosts文件
在Linux中编写 /etc/hosts
文件使域名和IP产生映射关系。
在Windows编写 C:\Windows\System32\drivers\etc\hosts
文件。
3.7 重启服务并测试
首先重启防火墙和httpd服务。
service iptables restart
service httpd restart
其次先在Linux测试页面内容可以正常显示。
接着在Windows浏览器测试也可以正常显示。
由此可知基于域名的虚拟主机配置成功。
3.8 报错说明
1如果在日志文件中发现服务器出现下列错误提示
configuration error: couldn't perform authentication. AuthType not set!: /
此处的500错误需要检查是否存在 Require all granted
。
如果出现删除 Require all granted
即可。
2出现下列错误将所有配置文件中多余的NameVirtualHost *:80
参数删除掉即可只保留我们配置的那部分内容。
[warn] NameVirtualHost *:80 has no VirtualHosts
3出现下列错误去掉主配置文件的 ServerName
参数前面的注释使其生效即可。
httpd: apr_sockaddr_info_get() failed for test
四 基于IP
在一个服务器上配置多个IP地址每个IP地址提供不同的web界面每个IP地址都有特定的目录和配置。
4.1 添加网卡
由于本机只有一个网卡IP是10.0.0.100因此需要添加一个网卡IP是10.0.0.101
然后编写 eth1 网卡的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth1
将网卡名eth0改为eth1将IP地址改成新的10.0.0.101并修改mac地址。
得到mac地址输入命令 ip a
最后重启网卡服务即可。
4.2 安装软件
yum安装apache服务
yum install -y httpd
安装完成后会有2个依赖软件包一同被安装。
4.3 编写主配置文件
去掉 ServerName 的注释使其生效。
其他内容不需要改变。
4.4 编写虚拟主机配置文件
[root@test conf.d]# cat vhost.conf
<VirtualHost 10.0.0.100:80>
ServerName 10.0.0.100
DocumentRoot "/var/www/html/test1"
ErrorLog logs/test1.err
CustomLog logs/test1.access common
</VirtualHost>
<VirtualHost 10.0.0.101:80>
ServerName 10.0.0.101
DocumentRoot "/var/www/html/test2"
ErrorLog logs/test2.err
CustomLog logs/test2.access common
</VirtualHost>
编写配置文件后使用 httpd -t
检查语法格式。
4.5 创建站点目录和测试文件
mkdir -p /var/www/html/test{1,2}
echo "10.0.0.100" > /var/www/html/test1/index.html
echo "10.0.0.101" > /var/www/html/test2/index.html
4.6 设置防火墙访问策略
允许80端口的服务。
添加一行下列内容。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
4.7 重启服务并测试
首先重启防火墙和httpd服务。
service iptables restart
service httpd restart
其次先在Linux测试页面内容可以正常显示。
接着在Windows浏览器参数页面也可以正常显示。
综上所述基于IP的虚拟主机配置成功。
五 基于端口
向外网用户提供多个端口的HTTP服务器。
5.1 安装软件
yum安装apache服务
yum install -y httpd
安装完成后会有2个依赖软件包一同被安装。
5.2 编写主配置文件
去掉 ServerName 的注释使其生效。
增加端口号81和82.
其他内容不需要改变。
5.3 编写虚拟主机配置文件
[root@test conf.d]# cat vhost.conf
<VirtualHost *:81>
ServerName www.test1.com
DocumentRoot "/var/www/html/test1"
ErrorLog logs/test1.err
CustomLog logs/test1.access common
</VirtualHost>
<VirtualHost *:82>
ServerName www.test2.com
DocumentRoot "/var/www/html/test2"
ErrorLog logs/test2.err
CustomLog logs/test2.access common
</VirtualHost>
编写后使用 httpd -t
检测配置文件格式正确。
5.4 创建站点目录和测试文件
mkdir -p /var/www/html/test{1,2}
echo "10.0.0.100:81" > /var/www/html/test1/index.html
echo "10.0.0.100:82" > /var/www/html/test2/index.html
5.5 设置防火墙访问策略
允许80端口的服务。
添加一行下列内容。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 81 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 82 -j ACCEPT
5.6 重启服务并测试
首先重启防火墙和httpd服务。
service iptables restart
service httpd restart
其次先在Linux测试页面内容可以正常显示。
接着在Windows浏览器参数页面也可以正常显示。
综上所述基于端口的虚拟主机配置成功。
六 基于IP和端口
配置好第二块网卡后在 五
配置的基础上只将虚拟主机配置文件进行修改成下列格式
就可以配置基于IP和端口的虚拟主机。
测试结果如下