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