1. 程式人生 > >Apache搭建虛擬主機(基於IP、端口、域名實現)內附源碼包

Apache搭建虛擬主機(基於IP、端口、域名實現)內附源碼包

多臺 主機 enable tps alt 防火墻 -- gcc 一定的

簡介

虛擬主機是指在網絡服務器上分出一定的磁盤空間,管理員可以利用此部分空間,放置站點及應用組件,提供必要的數據存放和傳輸功能。虛擬主機,就是把一臺運行在互聯網上的物理服務器劃分成多個“虛擬”服務器。

優點

價格低廉。相對於購買獨立服務器,網站建設的費用大大降低,為普及中小型網站提供了極大便利。
提升效率。由於多臺虛擬主機共享一臺真實主機的資源,大大增加了服務器和帶寬的利用率,使得一臺服務器上能夠毫無沖突地配置多個網絡IP地址。

缺點

功能限制。比如可能耗用系統資源的論壇程序、流量統計功能等。
訪問速度及流量限制。一臺服務器上的不同虛擬主機是各自獨立的,並由管理員管理。但一臺服務器主機只能夠支持一定數量的虛擬主機,當超過這個數量時,服務器性能急劇下降。

自主性差。虛擬主機不能由客戶隨意的安裝軟件及遠程桌面等操作。

用途

適合作為中小企業的小型門戶網站,節省資金資源。
中小企業、專業門戶網站可以使用虛擬主機空間提供數據共享、數據下載服務。
可以為中小企業提供數據存儲數據功能。由於成本比獨立服務器低,安全性高做為小型數據庫首選。
虛擬主機空間特有的應用程序模板,使用者可以快速的進行批量部署,是中小型企業運行ASP或PHP應用的首選平臺。

實驗環境

  • 系統環境:centos6.5
  • 服務器IP地址:192.168.100.103
  • 客戶端IP地址:192.168.100.99
  • yum掛載目錄:/mnt/sr0
  • 相關源碼包下載地址:百度雲下載? 密碼:pko3

搭建步驟

一、準備工作

1、關閉防火墻及selinux

[root@localhost ~]# chkconfig iptables off #隨開機關閉iptables
[root@localhost ~]# vim /etc/sysconfig/selinux
技術分享圖片
[root@localhost ~]# reboot #重啟Linux生效

二、搭建DNS服務器

1、安裝bind軟件包

[root@localhost ~]# cd /mnt/sr0/Packages/
[root@localhost Packages]# rpm -ivh bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm

2、修改主配置文件named.conf

[root@localhost ~]# vim /etc/named.conf
技術分享圖片

3、創建並修改DNS正向解析文件

[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost bt.com.zone #將模板文件改為正向解析文件進行修改
[root@localhost ~]# vim /var/named/bt.com.zone #修改正向解析文件
技術分享圖片

[root@localhost named]# cp -p bt.com.zone cloud.com.zone #搭建cloud域
[root@localhost ~]# vim /var/named/bt.com.zone
技術分享圖片

4、啟動DNS服務器

[root@localhost ~]# /etc/init.d/named start

5、修改DNS客戶機配置文件

[root@localhost ~]# echo "nameserver 192.168.100.103" >> /etc/resolv.conf

6、測試DNS解析

[root@localhost ~]# nslookup www.bt.com #nslookup 用於查詢DNS的記錄,查看域名解析是否正常
[root@localhost ~]# nslookup www.cloud.com
技術分享圖片

三、安裝Apache

1、安裝gcc、gcc-c++、make、arp、arp-util、pcre等工具包

[root@localhost ~]# yum -y install gcc gcc-c++ make #安裝C語言編譯器以及make

[root@localhost ~]# tar -zxvf apr-1.4.6.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/apr-1.4.6/
[root@localhost apr-1.4.6]# ./configure prefix=/usr/local/apr && make && make install

[root@localhost ~]# tar -zxvf apr-util-1.4.1.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/apr-util-1.4.1/
[root@localhost apr-util-1.4.1]# ./configure prefix=/usr/local/apr-util --with-apr=/usr/local/apr && make && make install

[root@localhost ~]# tar -zxvf pcre-8.10.tar.gz -C /usr/src #支持正則
[root@localhost ~]# cd /usr/src/pcre-8.10/
[root@localhost pcre-8.10]# ./configure prefix=/usr/local/pcre && make && make instal

2、配置編譯安裝apache

[root@localhost ~]# tar xvfz httpd-2.4.2.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/httpd-2.4.2/
[root@localhost httpd-2.4.2]# ./configure \
--prefix=/usr/local/httpd \
--with-apr=/usr/local/apr \
--with-pcre=/usr/local/pcre \
--enable-so \
--enable-rewrite \
--enable-mods-shared=most \
--with-mpm=worker \
--disable-cgid \
--disable-cgi

參數解析:
prefix:指定安裝目錄
with-apr:apr的安裝目錄
with-pcre:使用擴展的pcre正則表達式庫
enable-so:啟用動態加載模塊支持,需要什麽功能可以動態加載
enable-rewrite:啟用網頁地址重寫功能,實現偽靜態
enable-mods-shared:啟用的共享DSO模塊
with-mpm:選擇apache所使用的處理模塊
disable-cgid:禁用CGID
disable-cgi:啟用CGI腳本程序支持(通用網關接口)

[root@localhost httpd-2.4.2]# make && make install

3、添加系統服務

[root@localhost ~]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

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

第2、3兩行添加以下參數
# chkconfig:2345 85 15
# description:Apache is a World Wide Web server.

[root@localhost init.d]# chmod +x /etc/init.d/httpd
[root@localhost init.d]# chkconfig --add httpd

4、建立軟鏈接,方便管理

[root@localhost ~]# mkdir -p /etc/httpd
[root@localhost ~]# ln -s /usr/local/httpd/conf/ /etc/httpd/ #優化配置文件路徑
[root@localhost ~]# ln -s /usr/local/httpd/bin/* /usr/local/bin/ #優化命令路徑

5、修改配置文件

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

#修改以下參數:
ServerName www.bt.com:80 #填寫完全主機名
Listen 192.168.100.103:80 #監聽本地IP

6、重啟服務、測試

[root@localhost ~]# service httpd start
技術分享圖片

四、基於域名的虛擬主機(相同IP,相同端口,不同主機名)

1、創建虛擬Web主機網站目錄以及網頁

[root@localhost ~]# mkdir -p /var/www/html/{btcom,cloudcom}#創建網站目錄
[root@localhost ~]# echo "this is bt.com AAAAAAAAAA" > /var/www/html/btcom/index.html #創建網頁
[root@localhost ~]# echo "this is cloud.com BBBBBBBBBB" > /var/www/html/cloudcom/index.html #創建網頁

2、修改配置文件,添加虛擬主機配置

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf #修改主配置文件

修改、打開以下參數:
Include conf/extra/httpd-vhosts.conf #打開此行註釋,涵蓋了虛擬主機的配置,並且可以看出在conf目錄下有虛擬主機配置文件
<Directory /> #定義"/"目錄區域
Options FollowSymLinks #控制選項,允許使用符號連接
AllowOverride None #不允許隱含
Order deny,allow #以下兩行允許所有人訪問
Allow from all
</Directory>

[root@localhost ~]# vim /etc/httpd/conf/extra/httpd-vhosts.conf #編輯虛擬主機配置

修改並添加以下參數:
<Directory "/var/www/html"> #定義網站目錄允許所有人訪問
order allow,deny
Allow from all
</Directory>

#NameVirtualHost 192.168.100.103 #配置指定提供虛擬主機服務的IP地址,也就是進行域名查詢時各虛擬Web主機的IP地址,註意一下!!!!!!!!!我裝的是2.2版本的時候是需要使用加此項,但是現在裝2.4版本不需要安裝否則報錯。

<VirtualHost 192.168.100.103>
ServerAdmin [email protected] #設置管理員郵箱地址
DocumentRoot "/var/www/html/btcom" #設置站點目錄
ServerName www.bt.com #完全主機名
ServerAlias www.bt.com #完全主機名別名
ErrorLog "logs/www.bt.com-error_log" #錯誤日誌存放位置
CustomLog "logs/www.bt.com-access_log" common #訪問日誌存放位置
</VirtualHost>

<VirtualHost 192.168.100.103>
ServerAdmin [email protected]
DocumentRoot "/var/www/html/cloudcom"
ServerName www.cloud.com
ServerAlias www.cloud.com
ErrorLog "logs/www.cloudcom.com-error_log"
CustomLog "logs/www.cloudcom.com-access_log" common
</VirtualHost>

3、客戶機測試

[root@Init5 ~]# echo "nameserver 192.168.100.103" >> /etc/resolv.conf #修改DNS客戶機配置文件

技術分享圖片

五、基於IP地址的虛擬主機(相同端口,相同主機名,不同IP)

1、服務器端添加一塊網卡eth1

技術分享圖片

2、修改主配置文件

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

#添加、修改以下兩行參數:
Listen 192.168.100.103:80
Listen 192.168.100.104:80

3、修改虛擬主機配置文件

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

<Directory "/var/www/html">
order allow,deny
Allow from all
</Directory>

<VirtualHost 192.168.100.103>
ServerAdmin [email protected]
DocumentRoot "/var/www/html/btcom"
ServerName www.bt.com
ServerAlias www.bt.com
ErrorLog "logs/www.bt.com-error_log"
CustomLog "logs/www.bt.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.100.104>
ServerAdmin [email protected]
DocumentRoot "/var/www/html/cloudcom"
ServerName www.bt.com
ServerAlias www.bt.com
ErrorLog "logs/www.cloudcom.com-error_log"
CustomLog "logs/www.cloudcom.com-access_log" common
</VirtualHost></VirtualHost>

4、重啟httpd服務

[root@localhost ~]# /etc/init.d/httpd restart
技術分享圖片

六、基於端口的虛擬主機(相同端口,相同主機名,不同IP)

1、修改虛擬主機配置文件

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

<Directory "/var/www/html">
order allow,deny
Allow from all
</Directory>

<VirtualHost 192.168.100.103:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/html/btcom"
ServerName www.bt.com
ServerAlias www.bt.com
ErrorLog "logs/www.bt.com-error_log"
CustomLog "logs/www.bt.com-access_log" common
</VirtualHost>

<VirtualHost 192.168.100.103:8080>
ServerAdmin [email protected]
DocumentRoot "/var/www/html/cloudcom"
ServerName www.cloud.com
ServerAlias www.cloud.com
ErrorLog "logs/www.cloudcom.com-error_log"
CustomLog "logs/www.cloudcom.com-access_log" common
</VirtualHost></VirtualHost>

2、修改主配置文件

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

#以下兩行要有,並且我將IPv6的監聽註釋掉
Listen 192.168.100.103:80
Listen 192.168.100.103:8080

3、重啟httpd服務

[root@localhost ~]# /etc/init.d/httpd restart

4、客戶機測試

技術分享圖片

Apache搭建虛擬主機(基於IP、端口、域名實現)內附源碼包