专题 |  新闻 |  转载文档 |  控件 |  产品 |  人才 |  项目管理 |  博客  
 论坛 |  Windows |  Visual Studio |  ASP.NET |  VB.NET |  C#.NET |  开源项目 |  搜索  
当前所在位置:首页服务器  >  正文
专题: 软件 | 服务器 | IT 电子产品 | PC 电脑 | 笔记本 | IE7 | Windows Mobile | Windows 2003 Server | ISA 2006 | Windows Vista
独家:Apache虚拟主机快速搭建攻略
作者:Apache 发布时间:20080728 文章来源:
阅读提示:在单个机器上的虚拟主机通常不只运行一个web站点,虚拟主机可以是基于ip的,也可以是基于名称的,本专题描述在OpenSuse 10.2服务器上的配置步骤。

   在单个机器上的虚拟主机通常不只运行一个web站点,虚拟主机可以是基于ip的,也就是说你要为每个web站点配置一个不同的ip地址,虚拟主机也可以是基于名称的,即在每个ip地址上对应着多个域名,你还可以在不同的端口上运行你的web页面,如8080或8090,事实上它们运行在相同的物理服务器上,最终用户察觉不到,本专题描述在OpenSuse 10.2服务器上的配置步骤。

首先我想说的是,这不是配置Apache服务器唯一的方法,有许多方法可以实现这个目标,但我选择的是这个方法,我不能保证这个方法能在你的服务器或发行版上很好地运转。

我们将在独立的位置(目录)下配置四种不同的web页面,并使用不同的起始页(index.html)验证原理。

简单网络结构图

步骤1:创建index页面

Suse通常将web页面存储在/srv/www/htdocs目录下,我们将使用同一个目录,但为每个虚拟主机单独创建一个子目录:

mkdir /srv/www/htdocs/server_port80

mkdir /srv/www/htdocs/server_port8090

mkdir /srv/www/htdocs/server_www

mkdir /srv/www/htdocs/server_www1

然后你就可以将内容存储在这个目录下,首先我们创建一个包含服务器类型信息的index.html文件,文件内容如下:

<VirtualHost 192.168.33.101:80>

    ServerAdmin webmaster@myserver.comThis e-mail address is being protected from spam bots, you need JavaScript enabled to view it

    ServerName server.myserver.com

    DocumentRoot /srv/www/htdocs/server_port80

    ErrorLog /var/log/apache2/server_port80.log

    CustomLog /var/log/apache2/access_port80.log combined

    HostnameLookups Off

    UseCanonicalName Off

    ServerSignature On

    ScriptAlias /cgi-bin/ "/srv/www/htdocs/server_port80/cgi-bin/"

    <Directory "/srv/www/htdocs/server_port80/cgi-bin">

        AllowOverride None

        Options +ExecCGI -Includes

        Order allow,deny

        Allow from all

    </Directory>

    <Directory "/srv/www/htdocs/server_port80">

        Options Indexes FollowSymLinks

        AllowOverride None

        Order allow,deny

        Allow from all

    </Directory>

</VirtualHost>

将内容修改为你想要的,然后在每个子目录下保存一个修改过的index文件。

步骤2:配置基于ip的虚拟主机

Suse在/etc/apache2/vhosts.d目录下存储虚拟主机配置文件,在启动过程中,Apache会自动使用这个目录下的所有文件完成最后配置。

使用模板文件,可以很容易就创建一个新的虚拟主机配置文件:

cd /etc/apache2/vhosts.d/

cp vhost.template vhost-port80.conf

这样拷贝默认的模板文件并创建一个新配置文件,新的配置文件将用于基于ip的运行在端口80上的虚拟主机,我建议使用vi编辑器编辑这个新创建的文件:

vi vhost-port80.conf

正如你所看到的,这个文件包含了配置一个虚拟主机需要的全部信息,同时还包括了大量的解释和注释信息,可以将这些解释信息删除保持文件苗条。

下面这些行是你应该修改的:

VirtualHost

设置ip地址和端口

ServerAdmin web管理员的email地址
DocumentRoot

web页面的路径(参考步骤1)

ErrorLog

错误日志文件路径

CustomLog

访问日志文件路径

UseCanonicalName 本例中将其保留为off

ScriptAlias

如果你想在你的wen页面上运行cgi脚本,这个就是脚本的位置

文件样例:

<VirtualHost 192.168.33.101:80>
ServerAdmin webmaster@myserver.comThis e-mail address is being protected from spam bots, you need JavaScript enabled to view it
ServerName server.myserver.com
DocumentRoot /srv/www/htdocs/server_port80
ErrorLog /var/log/apache2/server_port80.log
CustomLog /var/log/apache2/access_port80.log combined
HostnameLookups Off
UseCanonicalName Off
ServerSignature On
ScriptAlias /cgi-bin/ "/srv/www/htdocs/server_port80/cgi-bin/"
<Directory "/srv/www/htdocs/server_port80/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>
<Directory "/srv/www/htdocs/server_port80">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost> 

如果你想在不同的端口上运行你的web页面,使用下面的配置文件:

<VirtualHost 192.168.33.101:8090>
ServerAdmin webmaster@myserver.comThis e-mail address is being protected from spam bots, you need JavaScript enabled to view it
ServerName server.myserver.com
DocumentRoot /srv/www/htdocs/server_port8090
ErrorLog /var/log/apache2/server_port8090.log
CustomLog /var/log/apache2/access_port8090.log combined
HostnameLookups Off
UseCanonicalName Off
ServerSignature On
ScriptAlias /cgi-bin/ "/srv/www/htdocs/server_port8090/cgi-bin/"
<Directory "/srv/www/htdocs/server_port8090/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>
<Directory "/srv/www/htdocs/server_port8090">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

正常情况下,web服务器监听80端口,如果你想修改这个端口或添加一个端口如8090,你必须hack listen.conf文件,详细信息请参考步骤4。

步骤3:配置一个基于名称的虚拟主机

使用类似步骤2中的方法利用默认模板创建一个新的配置文件:

cd /etc/apache2/vhosts.d

cp vhost.template vhost-www.conf

下面这两行是需要你修改的:

ServerName     使用在URL看到的域名

UseCanonicalName On

注释:在Apache上开启了UseCanonicalName后,它将使用ServerName和Port构造服务器的规范名称,这个名称用于所有自身参考URLs,以及CGIs中SERVER_NAME和SERVER_PORT的值。

如果你的服务器有多个ip地址或你想使用不同的端口,请修改下面这一行:

VirtualHost 192.168.33.101:80

整个文件看起来应该象:

<VirtualHost 192.168.33.101:80>
ServerAdmin webmaster@myserver.comThis e-mail address is being protected from spam bots, you need JavaScript enabled to view it
ServerName www.myserver.com
DocumentRoot /srv/www/htdocs/server_www
ErrorLog /var/log/apache2/server_www.log
CustomLog /var/log/apache2/access_www.log combined
HostnameLookups Off
UseCanonicalName On
ServerSignature On
ScriptAlias /cgi-bin/ "/srv/www/htdocs/server_www/cgi-bin/"
<Directory "/srv/www/htdocs/server_www/cgi-bin">
AllowOverride None
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>
<Directory "/srv/www/htdocs/server_www">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

步骤4:hack listen.conf文件

下面的文件允许你绑定ip地址和/或端口到Apache,请修改下面这些行:

Listen  添加运行web页面的端口,可以添加多个。

NameVirtualHost    这个指令告诉Apache在哪个ip地址,(可选的)哪个端口上监听客户端包含在HTTP头中的域名请求,第一个参数可以是一个完全限定域名,但是推荐使用ip地址,第二个参数是端口(可选的),默认情况下,使用的是80端口,通过Listen指令配置。

这个文件的内容看起来象:

Listen 80

Listen 8090

<IfDefine SSL>

    <IfDefine !NOSSL>

        <IfModule mod_ssl.c>

            Listen 443

        </IfModule>

    </IfDefine>

</IfDefine>

NameVirtualHost 192.168.33.101:80

要对你的配置进行故障诊断,你应该在Linux终端运行下面的命令:

tail –f /var/log/messages

在修改了配置文件后别忘了使用下面的命令重启apache(观察错误):

service apache2 restart

/etc/init.d/apache2 restart

转载文档
.NET
Visual Basic
Visual C++
游戏开发
Java
ASP
Perl
Delphi
Javascript
其他开发语言
数据库开发
网站制作技术
文件格式
其他
文章投稿
Web.Service
ASP.Net
C#.Net
VB/VC.Net
Borland
JAVA
数据库
Unix/Linux
图形美工
安全
VS.Net

中国DotNet俱乐部 || 博客.中国  版权所有
京ICP备05037360号