RHEL / CentOS 7 用 Ubuntu 的方式管理 Virtual Host


在 Ubuntu 開啟及關閉虛擬主機, 會用 a2ensite 及 a2dissite 指令, 這個方法在管理多個 Virtual Host 時方便很多, 以下是在 RHEL 7 及 Centos 7 下, 設定類似 Ubuntu 管理 Virtual Host 的方法。

Ubuntu 在 /etc/httpd 目錄下建立兩個目錄, 分別是 sites-available 及 sites-enabled, 將每個 Virtual Host 的設定放在 sites-available 目錄, 當開啟 vhosts 時, 將 Virtual Host 的設定檔從 sites-available 搬到 sites-enabled 目錄, 而 Apache 會讀取 sites-enabled 的 Virtual Host 設定.

關於安裝 Apache 的步驟, 可參考以下文章:

RHEL 及 CentOS 7 安裝 Apache, MariaDB, PHP(LAMP)

首先建立儲存 Virtual Host 的目錄:

/linux/vhosts

  • # cd /etc/httpd
    # mkdir sites-available sites-enabled

然後開啟 httpd.conf 設定檔, 設定 Apache 自動讀取 /etc/httpd/sites-enabled/ 目錄下所有 .conf 結尾的檔案。

/linux/vhosts

  • # vi /etc/httpd/conf/httpd.conf

在 httpd.conf 最後加入以下一行:

IncludeOptional sites-enabled/*.conf

現在建立 Virtual Host 的檔案, 建立了一個檔案後, 以下會以 opencli.com 為例子, 並假設 DocumentRoot 放在 /var/www/opencli.com, 建立 vhosts 的設定檔:

/linux/vhosts

  • # vi /etc/httpd/sites-available/opencli.com.conf

加入以下內容:

建立 DocumentRoot 目錄, 用作儲存網頁:

/linux/vhosts

  • # mkdir -p /var/www/opencli.com

現在建立 a2ensite 及 a2dissite 的 Shell Script, 以上名稱可以自訂, 方便自己記憶便好了:

建立 a2ensite:

/linux/a2ensite

  • # vi /usr/local/bin/a2ensite

加入以下內容:

建立 a2dissite:

/linux/a2dissite

  • # vi /usr/local/bin/a2dissite

加入以下內容:

建立 a2ensite 及 a2dissite 後, 用 chmod 給以上 Shell Script 可執行權限:

/linux/a2ensite-a2dissite

  • # chmod +x /usr/local/bin/a2*

現在可以用以下指令開啟及關閉 vhosts:

/linux/a2ensite-a2dissite

  • # a2ensite vhost_name
    # a2disite vhost_name

以上面的 opencli.com 作為例子, 執行以下指令開啟及重新啟動 Apache:

/linux/a2ensite-a2dissite

  • # a2ensite opencli.com
    # systemctl restart httpd

要關閉則使用以下指令:

/linux/a2ensite-a2dissite

  • # a2dissite opencli.com
    # systemctl restart httpd

要建立其他 vhosts, 只要按上面 opencli.con.conf 的內容作為範本, 建立其他 vhosts 檔案即可。

Leave a Reply