腳本實現httpd創建虛擬主機

概述


本文使用腳本實現基于主機名的虛擬主機按需創建:

  • 腳本可接受參數,提供獨立站點目錄;

  • 生成獨立站點首頁;

  • 腳本可接受參數,參數虛擬主機名稱;

  • 每虛擬使用單獨的配置文件;

  • 腳本可接受參數,參數虛擬主機名稱;

環境


系統基于CentOS7.2,并通過yum安裝httpd 2.4.6

建議關閉防火墻和selinux。

演示


 1475915355333086.gif

客戶機將域名解析寫入/etc/hosts文件中

GIF3.gif

腳本


#!/usr/bin/env bash
#
# Author: jacky18676887374@aliyun.com   QQ-18676887374
# date: 20161007-14:05:25
# Vervion: 0.0.1
# Description:
# Synopsis:
# 
# 快速創建虛擬網站,站點測試頁。
# create a test web
webtest(){
cat <<EOF > $2/index.html
<html>
<head>It's only a test web</head>
<body><h1>$1</h1></body>
</html>
EOF
}
# 生成vhost配置文件
vhost() {
    cat <<EOF > /etc/httpd/conf.d/$1.conf
<VirtualHost *:80>
    ServerName $1
    DocumentRoot "$2"
    <Directory "$2">
        Options None
        AllowOverride None
        Require all granted
    </Directory>
    ErrorLog "/var/log/httpd/error_log_$1"
    LogLevel warn
    CustomLog "/var/log/httpd/access_log_$1" combinedio
</VirtualHost>
EOF
}
# get website variable
getvar(){
    read -p 'Input a Directory for this VirtualHost: ' vdiretory
    read -p 'Input a hostname for this VirtualHost: ' vhostname
}
# 禁用selinux
if [ `getenforce` != Disabled ];then
    sed -i '/^SELINUX=/s/^.*$/SELINUX=disabled/' /etc/selinux/config
    echo "change selinux=disabled,you must reboot."
fi
PS3='Input your choice:1)create; 2)quit  '
select i in create quit ;do
    case $i in
        create)
            getvar
            mkdir -p $vdiretory
            vhost $vhostname $vdiretory
            webtest  $vhostname $vdiretory
            if `httpd -t` ;then
                systemctl reload httpd
                echo -e "Create complete.\nyour  website url:$vhostname"
            else
                mv $vdiretory/index.html{,.errorr}
                mv /etc/httpd/conf.d/vhostname.conf{,.error}
                echo 'Error'
            fi
            ;;
        quit)
            exit
            ;;
    esac
done

原創文章,作者:昭其,如若轉載,請注明出處:http://www.www58058.com/50153

(0)
昭其昭其
上一篇 2016-10-08 15:22
下一篇 2016-10-08 17:03

相關推薦

  • 馬哥教育網絡班21期+第12周課程練習

    1、請描述一次完整的http請求處理過程; 建立或處理請求:接受請求或拒絕請求; 接收請求:接收來自于網絡的請求報文中對某資源的一次請求的過程; 處理請求:對請求報文進行解析,并獲取請求的資源及請求方法等相關信息; 訪問資源:獲取請求報文中請求的資源; 構建相應報文; 發送響應報文; 記錄日志 2、httpd所支持的處理模型有哪些,他們分別適用于哪些環境。 …

    Linux干貨 2016-10-24
  • Linux的文件查找之find的使用

    文件查找   本章節內容:   使用locate命令   使用find命令   使用Gnome搜索工具    一、文件的查找(find和locate的對比): 文件查找:是在文件系統上查找符合條件的文件。 locate find 查找時效性 非實時查找 實時查找 文件索引數據庫 需要依賴查詢系統上預…

    Linux干貨 2016-08-15
  • 網絡配置的常用工具

    一、網絡配置的常用工具     例如:                ifcfg:ifconfig、route、netstat    &nb…

    Linux干貨 2016-09-09
  • python快速入門之數據類型

        Python 是 90 年代初由 Guido Van Rossum 為了打發圣誕節而創建的語言。如今它已是當前最流行的程序語言之一.     Python的關鍵要素有以下幾點:1.基本數據類型;2.對象引用;3.組合數據類型;4.邏輯操作符;5.控制流語句;6.算數操作符…

    Python干貨 2015-12-10
  • mongodb數據庫切分

    前言:  相信維護過有大數據的MySQL的運維人員一定對sharding這個非常了解,MySQL數據庫切分自身沒有工具需要借助第三方工具進行;MySQL切片是一件非常頭疼而又難做的一件事,一旦切分錯誤,不僅不能優化數據庫,反而會加劇數據庫負載;mongodb相對于MySQL來說,數據庫切分是mongodb與生俱來的功能,mongodb會自動切分數據…

    Linux干貨 2015-09-05
  • 11. vim備查の小手札

    三種模式 命令模式(默認)      command mode:移動光標,剪切/粘貼文本 插入(編輯)模式         edit mode:修改文本 擴展命令模式 extend…

    Linux干貨 2016-08-18
欧美性久久久久