httpd虚拟主机的创建----不同端口和不同IP地址(含脚本)

httpd虚拟主机的创建----不同端口和不同IP地址

一、相同IP和域名不同端口设置虚拟主机

在之前的博客中我已经介绍了不同域名的虚拟主机的制作方法了,这里在此基础之上创建不同端口的虚拟主机。因为在httpd中同一域名或IP地址可以有不同端口提供给客户端访问。在这里我设置httpd的80和8080端口。

和之前的操作一样,如安装bind和httpd配置named和httpd,事先的准备工作参考(https://blog.csdn.net/QwQNightmare/article/details/103518893httpd服务之创建虚拟主机----基于不同域名的虚拟主机(含脚本))。

唯一不同的是需要为不同的主机创建不同的**“家目录”**和配置不同的端口。图1.1
在这里插入图片描述

二、不同IP的虚拟主机

和之前的两个虚拟创建有所不同,不同IP创建需要不止一块网卡,因为有两个IP以上的需求,这里可以不做域名或配置两个及以上域名对应不同的IP地址。其余准备操作可以参考之前的内容。

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

三、脚本分享

#!/bin/bash
#这是httpd添加虚拟主机的脚本
#不同端口号相同IP
#关闭防火墙
systemctl stop firewalld
setenforce 0 &> /dev/null

#判断是否安装了httpd、bind服务
while true
do
rpm -q httpd bind &> /dev/null
if [ $? -eq 0 ];then
echo "已安装了httpd、bind服务"
break
else
echo "正在安装httpd、bind"
yum install httpd bind -y &> /dev/null
rpm -q httpd &> /dev/null
if [ $? -eq 0 ];then
echo "安装成功"
break
else
echo "安装失败"
read -p "是否再次安装?(y/n)" a
if [ $a = "y" ];then
continue
else
echo "退出脚本"
exit 1
fi
fi
fi
done


#备份httpd主配置文件并刷新主配置文件
[ -e /etc/httpd/conf/httpd.conf.bak ]||cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak&&echo "备份httpd主配置文件"
rm -rf /etc/httpd/conf/httpd.conf
cp /etc/httpd/conf/httpd.conf.bak /etc/httpd/conf/httpd.conf


#备份DNS主配置文件
[ -e /etc/named.conf.bak ]||cp -p /etc/named.conf /etc/named.conf.bak&&echo "备份DNS主配置文件"
#备份DNS数据文件
[ -e /etc/named.rfc1912.zones.bak ]||cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bak&&echo "备份DNS数据配置文件"
#DNS主配置文件
sed -i 's/127.0.0.1/any/' /etc/named.conf
sed -i '/allow-query/s/localhost/any/' /etc/named.conf


#删除原有的DNS区域数据文件
rm -rf /var/named/*.com.zone 
#删除DNS数据配置文件

rm -rf /etc/named.rfc1912.zones
cp -p /etc/named.rfc1912.zones.bak /etc/named.rfc1912.zones



#ip地址
echo "获取IP地址。"
ip=`ifconfig | grep "inet" | awk 'NR==1 {print $2}'`

#创建extra
[ -d /etc/httpd/conf/extra ]&&echo "extra目录已存在"||mkdir /etc/httpd/conf/extra


#建立虚拟主机配置文件
[ -e /etc/httpd/conf/extra/vhost.conf ]&&rm -rf /etc/httpd/conf/extra/vhost.conf&&echo "删除原有vhost.conf"||touch /etc/httpd/conf/extra/vhost.conf


read -p "请输入你想要的域名(如,www.xxx.com中的xxx):" name 
l=1
#输入域名
while true
do
#配置虚拟主机
read -p "请输入端口号:" numb
    cat >> /etc/httpd/conf/extra/vhost.conf <<EOF
<VirtualHost *:$numb>
	DocumentRoot "/var/www/html/$name$l/"
	ServerName www.$name.com
	ErrorLog "logs/www.$name$l.com.error_log"
	CustomLog "logs/www.$name$l.com.access_log" common
	<Directory "/var/www/html/">
	  Require all granted
	</Directory>
</VirtualHost>

EOF

#创建家目录
mkdir /var/www/html/$name$l
touch /var/www/html/$name$l/index.html
echo "this is test $name$l" > /var/www/html/$name$l/index.html

#修改httpd主配置文件
sed -i "41aListen $ip:$numb" /etc/httpd/conf/httpd.conf

read -p "是否继续添加端口号(y/n)?" xz
if [ $xz = "y" ];then
let l++
continue
else
break
fi
done

#DNS数据文件
sed -i "12azone \"$name.com\" IN {\n	type master;\n	file \"$name.com.zone\";\n	allow-update { none; };\n};\n" /etc/named.rfc1912.zones

#DNS区域数据文件
cp -p /var/named/named.localhost /var/named/$name.com.zone 
sed -i '10d' /var/named/$name.com.zone 
echo "www IN A	$ip" >> /var/named/$name.com.zone

#配置httpd主配置文件
echo "Include conf/extra/vhost.conf" >> /etc/httpd/conf/httpd.conf
sed -i '/^Listen 80/s/^/#/' /etc/httpd/conf/httpd.conf

#启动
systemctl restart named &> /dev/null
[ $? -eq 0 ]&&echo "DNS启动成功"||echo "DNS启动失败,请输入journalctl -xe查找原因"
systemctl restart httpd &> /dev/null
[ $? -eq 0 ]&&echo "httpd启动成功!"||echo "httpd启动失败,请输入journalctl -xe查找原因"
echo "配置完成"
echo "当前IP地址为$ip"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值