## Linux下apache虛擬主機
>[info] 基于域名的虛擬主機,指定服務器IP(和可能的端口)使主機接受請求。用NameVirtualHost進行配置。 如果服務器上所有的IP地址都會用到, 可以用*作為NameVirtualHost的參數。在NameVirtualHost指令中指明IP地址不會使服務器自動偵聽那個IP地址
1. 找到Apache的主配置文件http.conf
~~~
cd /usr/local/apache2/etc
vim http.conf
~~~
我們搜索關鍵字vhosts,在文件的390行左右 增加一行:
`Include etc/vhost.d/*.conf`
> 包含apache主目錄下etc/vhost.d下的所以.conf的配置文件,不使用官方原版的單個配置文件有個好處是 每個虛擬主機配置獨立開來 減少操作的誤差
2. 然后我們到`/usr/local/apache2/etc`下面
`mkdir vhost.d`
`vim www_online_com.conf `
~~~
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html
ServerName localhost
RewriteEngine On
Options All
<Directory "/var/www/html">
Options -Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorLog logs/www_online_com-error_log
CustomLog logs/www_online_com-access_log common
</VirtualHost>
~~~
修改完后重載apache配置文件流程
~~~
/usr/local/apache2/bin/apachectl -t # 返回 Syntax OK
/usr/local/apache2/bin/apachectl graceful # 重載配置文件
# netstat -tunpl|grep 80 # 查看端口
tcp 0 0 :::80 :::* LISTEN 1019/httpd
# ps aux |grep httpd # 查看進程
root 1019 0.0 0.5 228124 9768 ? Ss 19:58 0:00 /usr/local/apache/bin/httpd -k start
daemon 3293 0.0 0.4 560004 8180 ? Sl 20:10 0:00 /usr/local/apache/bin/httpd -k start
daemon 3294 0.0 0.4 560004 8188 ? Sl 20:10 0:00 /usr/local/apache/bin/httpd -k start
daemon 3296 0.0 0.4 560004 8188 ? Sl 20:10 0:00 /usr/local/apache/bin/httpd -k start
~~~
在使用`/usr/local/apache2/bin/apachectl restart`命令重啟apache服務器,報錯如下錯誤:
>[danger][warn] _default_ VirtualHost overlap on port 80, the first has precedence
于是我們打開apache主配置文件在任意位置添加一行,在 40行的`Listion:80`后添加一行內容如下:
`NameVirtualHost *:80`