Apache 虚拟主机 VirtualHost 配置

来源:互联网 发布:手机淘宝怎么售后 编辑:程序博客网 时间:2024/04/29 19:33

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

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

Apache 虚拟主机 VirtualHost 配置

主旨

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

目标

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

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

  • 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 hostsInclude 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
                  ServerNamewww.abc.com
                  CustomLog /var/www/abc/access_log combined
     

     www.def.com>
                 DocumentRoot /var/www/def
                 ServerNamewww.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 出现welcomeaccesswww.abc.com

     访问www.def.com出现welcomeaccesswww.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),找到如下模块

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

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

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

  1. ServerAdmin webmaster@dummy-host.localhost
  2. DocumentRoot "D:\wamp\www"
  3. ServerName localhost
  4. ServerAlias localhost
  5. ErrorLog "logs/dummy-host.localhost-error.log"
  6. 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,方法同上,复制配置代码修改如下:

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

2,打开host文件(C:\WINDOWS\system32\drivers\etc\hosts),增加一行代码

  1. 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文件,找到如下语句

  1. Options FollowSymLinks
  2. AllowOverride None
  3. Order deny,allow
  4. Deny from all

复制以上代码,并进行目录修改,把/替换为E:\WebRoot\biuuu,修改virtualHost代码如下

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

  6. E:\WebRoot\biuuu>
  7. Options FollowSymLinks
  8. AllowOverride None
  9. Order deny,allow
  10. 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");


0 0
原创粉丝点击