## 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`