您的位置:首页 > 运维架构 > Apache

Apache 虚拟主机 VirtualHost 配置

2016-03-09 16:27 399 查看
虚拟主机 (Virtual Host) 是在同一台机器搭建属于不同域名或者基于不同 IP 的多个网站服务的技术. 可以为运行在同一物理机器上的各个网站指配不同的 IP 和端口, 也可让多个网站拥有不同的域名.

Apache 是世界上使用最广的 Web 服务器, 从 1.1 版开始支持虚拟主机. 本文将讲解在不同服务器 (Redhat Enterprise Linux, Ubuntu Linux, Windows) 上使用 Apache 搭建虚拟主机来搭建多个网站.



主旨

本文旨在让读者知道如何在同一台机器上搭建多个网站, 并附带一些使用技巧. 以操作为主, 不会过多谈及原理.

目标

本文是写给拥有一定的服务器配置和管理技能, 工作中需要同时维护多个网站的网站主, 网站开发者和网络管理员. 如果你是互联网公司的配管工程师, 对计算机服务器原理和操作十分熟悉, 请忽视本文, 你不会在上面找到太多有价值的东西.

以下是各操作系统的配置方法.

Redhat Enterprise Linux
Ubuntu Linux
Windows
Mac OS

Redhat Enterprise Linux

Redhat Enterprise Linux (包括 CentOS Linux), 是使用最广的 Linux 服务器, 大量的网站应用都部署在其上.

1. 打开文件 /etc/httpd/conf/httpd.conf, 搜索 VirtualHost example, 找到代码如下:

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#<VirtualHost *:80>
#    ServerAdmin webmaster@dummy-host.example.com
#    DocumentRoot /www/docs/dummy-host.example.com
#    ServerName dummy-host.example.com
#    ErrorLog logs/dummy-host.example.com-error_log
#    CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>

2. 仿照例子, 添加一段代码来指定某一域名的网站.

#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/httpdocs/demo_neoease_com
ServerName demo.neoease.com
ErrorLog logs/demo.neoease.com-error.log
CustomLog logs/demo.neoease.com-access.log common
</VirtualHost>

3. 重启 httpd 服务, 执行以下语句.

service httpd restart


我的配置:

1.NameVirtualHost *:80        NameVirtualHost *:80意思是所有的虚拟主机配置的所有域名开启监听80端口

2.

<VirtualHost *:80>       

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/Virtual1

    ServerName hlw.com

    ErrorLog logs/hlw.com-error.log

    CustomLog logs/hlw.com-access.log common

</VirtualHost>

<VirtualHost *:80>

    ServerAdmin webmaster@website3.com

    DocumentRoot /var/www/html/Virtual2

    ServerName qzx.com

    ErrorLog logs/qzx.com-error.log

    CustomLog logs/qzx.com-access.log common

</VirtualHost>

3.cd /var/www/html/

   mkdir Virtual1

   mkdir Virtual2

  vim Virtual1/test1.php

 vim Virtual2/test2.html

4.vim /etc/hosts

   127.0.0.1   hlw.com

   127.0.0.1   qzx.com

5.service httpd restart

6.浏览器输入:

   hlw.com/test1.php

   qzx.com/test2.html

 

Ubuntu Linux

Ubuntu 在 Linux 各发行版中, 个人用户数量最多的. 很多人在本机和虚拟机中使用. 但 Ubuntu 和 Redhat 的 VirtualHost 设置方法不相同.

1. 打开目录 /etc/apache2/sites-available/, 发现 default 和 default-ssl 两个文件, 其中 default 是 http 虚拟主机服务的配置文件, default-ssl 是配置 https 服务使用的. 可以复制一份 default 文件. 并修改配置文件名, 文件名必须与域名一致 (如: demo.neoease.com)

2. 打开新建的配置文件, 修改 DocumentRoot, ServerName 和对应的配置目录. 例子如下:

#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/httpdocs/demo_neoease_com
ServerName demo.neoease.com
ErrorLog ${APACHE_LOG_DIR}/demo.neoease.com-error.log
CustomLog ${APACHE_LOG_DIR}/demo.neoease.com-access.log combined
</VirtualHost>

3. 通过 a2ensite 激活虚拟主机配置

sudo a2ensite demo.neoease.com

4. 打开目录 /etc/apache2/sites-enabled/, 你会发现所有激活的虚拟主机, 可以通过 a2dissite 进行注销

sudo a2dissite demo.neoease.com

5. 重启 Apache 服务, 激活虚拟主机

sudo /etc/init.d/apache2 restart

Windows

Windows 是市场占有率最高的 PC 操作系统, 也是很多人的开发环境. 其 VirtualHost 配置方法与 Linux 上有些差异, 以下方式适合原生 Apache, XAMPP 和 WAMP 套件.

1. 打开目录 {Apache2 安装目录}\conf\extra\, 找到 httpd-vhosts.conf 文件.

2. 仿照例子, 添加一段代码来指定某一域名的网站.

#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "D:/workspace/php/demo_neoease_com"
ServerName demo.neoease.com
ErrorLog "logs/demo.neoease.com-error.log"
CustomLog "logs/demo.neoease.com-access.log" common
</VirtualHost>

3. 打开 httpd.conf 文件, 添加如下语句.

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

4. 重启 Apache 服务.

Mac OS

近年苹果的雄起, 让 Mac 日催普及, 也成为很多开发人员的选择. 因为与 Linux 同源, 配置方法也相似.

1. 打开文件 /private/etc/apache2/extra/httpd-vhosts.conf.

2. 仿照例子, 添加一段代码来指定某一域名的网站.

#
# DocumentRoot 是网站文件存放的根目录
# ServerName 是网站域名, 需要跟 DNS 指向的域名一致
#
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot "/usr/docs/httpdocs/demo_neoease_com"
ServerName demo.neoease.com
ErrorLog "/private/var/log/apache2/demo.neoease.com-error_log"
CustomLog "/private/var/log/apache2/demo.neoease.com-access_log" common
</VirtualHost>

3. 打开文件 /private/etc/apache2/httpd.conf, 搜索 Virtual hosts, 找到代码如下:

# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf

去掉前面的注释符号
#
, 保存文件.

4. 重启 apache 服务, 执行以下语句.

sudo apachectl restart

总结

最近我在不同的几台服务器上搭建了一些网站服务, 这篇文章也算是我的个人笔记, 望日后可自用, 也希望对读者有用. 文中介绍了几个主流开发和部署环境上配置虚拟主机的方法, 其他 OS 大同小异.

因为还有些朋友留言希望知道 Nginx 的配置方法, 作为补充内容, 我又写了《Nginx 虚拟主机 VirtualHost 配置

Apache虚拟目录、虚拟主机配置

1.安装apache(这里不介绍如何安装,此次安装是用的rpm包安装)

    [root@centos5 www]# rpm -qa | grephttpd   查看安装文件

     httpd-2.2.3-11.el5.centos

     httpd-manual-2.2.3-11.el5.centos

 

2. 配置apache虚拟目录

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

    添加如下:

    Includevhost/vhost.conf

    #cd/etc/httpd  进入配置目录

    #mkdirvhost   新建vhost目录

    #vivhost/vhost.conf        配置虚拟目录

    Alias/herod "/var/www/herod"

   

              Options Indexes MultiViews

              Order allow,deny

              Allow from all

              Deny from 192.168.1.33

  

 

    #cd/var/www

    #mkdirherod

    #echo"欢迎访问herod的虚拟目录" >index.html

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

    Stoppinghttpd:                                           [ 
OK  ]

     Startinghttpd:                                           [ 
OK  ]

   IE下访问192.168.1.131/herod 就会显示“欢迎访问herod的虚拟目录”的页面来

 

3.配置apache虚拟主机的多域名配置

    修改vhost/vhost.conf   清空此文档

    #cd /etc/httpd/

     #vi vhost/vhost.conf

       NameVirtualHost 192.168.1.131

     www.abc.com>

                  DocumentRoot /var/www/abc

                  ServerName
www.abc.com

                  CustomLog /var/www/abc/access_log combined

     

     www.def.com>

                 DocumentRoot /var/www/def

                 ServerName
www.def.com

                 CustomLog /var/www/def/access_log combined

     

    #cd/var/www

    #mkdirabc

    #echo"welcome access www.abc.com"  abc/index.html

    #mkdrdef

    #echo"welcome access www.def.com" def/index.html

    在客户端和apache服务器上面添加hosts文件内容

    192.168.1.131www.abc.com

    192.168.1.131www.def.com

   在客户端IE访问www.abc.com 出现welcomeaccess
www.abc.com

     访问www.def.com出现welcomeaccess
www.def.com

apache 基本vhost配置

经常使用Apache虚拟主机进行开发和测试,但每次需要配置虚拟主机时都习惯性的ctrl+c和ctrl+v,这次由于重装系统,需要配置一个新的PHP开发环境虚拟主机,于是总结一下Apaceh配置httpd-vhosts虚拟主机使用方法和步骤,便于查找和使用。

开发环境:WAMP

网址:http://www.wampserver.com/en/

实例一,Apaceh配置localhost虚拟主机步骤

1,用记事本打开apache目录下httpd文件(如:D:\wamp\bin\apache\apache2.2.8\conf),找到如下模块

# Virtual hosts
#Include conf/extra/httpd-vhosts.conf
去掉前面的#,这样就开启了httpd-vhosts虚拟主机文件。这时候重启wamp环境,无法打开localhost,需要在httpd-vhosts.conf配置一下。

2,用记事本打开httpd-vhosts文件,配置好localhost虚拟主机,参照httpd-vhosts文件中实例,修改成如下:

ServerAdmin webmaster@dummy-host.localhost
DocumentRoot "D:\wamp\www"
ServerName localhost
ServerAlias localhost
ErrorLog "logs/dummy-host.localhost-error.log"
CustomLog "logs/dummy-host.localhost-access.log" common
修改配置如下:

DocumentRoot 修改为本地wamp环境下的www目录(如:D:\wamp\www)

ServerName改为localhost

3,重启Apache,发现localhost可以正常打开,配置localhost比较简单。

实例二,Apaceh配置test.biuuu.com虚拟主机步骤

1,方法同上,复制配置代码修改如下:

ServerAdmin test@biuuu.com
DocumentRoot E:\WebRoot\biuuu
ServerName test.biuuu.com
ErrorLog "logs/dummy-host2.localhost-error.log"
CustomLog "logs/dummy-host2.localhost-access.log" common
2,打开host文件(C:\WINDOWS\system32\drivers\etc\hosts),增加一行代码

127.0.0.1      test.biuuu.com
3,在浏览器中打开test.biuuu.com,发现如下错误403 Forbidden错误

Forbidden

You don't have permission to access / on this server.

分析:这主要是目录访问权限没有设置,需要设置对目录的访问权!

4,打开httpd文件,找到如下语句

Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
复制以上代码,并进行目录修改,把/替换为E:\WebRoot\biuuu,修改virtualHost代码如下

ServerAdmin test@biuuu.com
DocumentRoot E:\WebRoot\biuuu
ServerName test.biuuu.com
ErrorLog "logs/dummy-host2.localhost-error.log"
CustomLog "logs/dummy-host2.localhost-access.log" common

E:\WebRoot\biuuu>
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all

在浏览器中测试发现还是打不开,提示如上403 Forbidden错误,修改其中的Deny from all为allow fromall

5,重启Apache,虚拟主机配置成功!

注意事项

1,目录路径,如E:\WebRoot\biuuu

2,访问权限,如上Deny from all修改为allow from all

3,host文件,配置虚拟域名host指向

4,httpd文件,打开Include conf/extra/httpd-vhosts.conf模块

5,httpd-vhosts文件,配置虚拟主机

使用Apaceh配置httpd-vhosts虚拟主机对于开发人员来说比较简单,但却非常重要,仅供参考!

参考资料:

http://httpd.apache.org/docs/2.2/vhosts/

http://httpd.apache.org/docs/2.0/vhosts/examples.html

原创文章如转载,请注明:转载自 必优博客 http://www.biuuu.com/

顾银鑫 注:如发生Fatal error: Allowed memory size of 8388608 bytesexhausted错误

修改php.ini设置memory_limit = 12M(默认8M)

或只需要在你的程序头部加入: ini_set("memory_limit","12M");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: