ubuntu server 10.4下Apache2的三种虚拟主机的实现

Ubuntu服务器搭建web网站(Apache2) 本章我们将使用Apache2 Service来搭建web网站。以及我们会涉及到MySQL数据库的安装,这样可以更方便的管理网站后台数据。 阅读详情

引用百度百科:虚拟主机的关键技术在于,即使在同一台硬件、同一个操作系统上,运行着为多个用户打开的不同的服务器程式,互不干扰。而各个用户拥有自己的一部分系统资源(IP地址、文档存储空间、内存、CPU时间等)。虚拟主机之间完全独立,在外界看来,每一台虚拟主机和一台单独的主机的表现完全相同。所以这种被虚拟化的逻辑主机被形象的称为“虚拟主机”。

虚拟主机还有一兄弟叫“虚拟机”,它的产品有:全球首款中国人自己设计的高速虚拟机VMLite(创始人骆辉红博士);VMware的相关产品VMware Workstation,VMware Server等;微软的Virtual pc ,Hyper-V;开源的VirtualBox,OpenVZ;红帽企业级虚拟化RHEV;KVM等。感兴趣的可以去http://www.xuniji.com/forum/看看。

但是,虚拟主机与虚拟机是不同的东西,不要混淆了。

操作:

1,Apache的配置文件

(1)apache的相关信息,通过apache2 命令,可以了解一些apache的信息

学习apache2的用法

#man apache2

#apache2 –V(大写)

apache01

可以看apache的版本是2.2.14,使用的MPM是prefork。

#sudo cat /etc/apache2/envars

apache02

可以看到运行apache的用户和组是www-data。

(2)apache2的相关配置文件在/etc/apache2下

apache2.conf 是全局配置文件,也是主配置文件

conf.d 一般性的配置

envvars 存放环境变量

httpd.conf 用户配置文件

mods-available 已安装的可用模块

mods-enabled 已启用的模块

ports.conf httpd服务的端口号

sites-available 可用的虚拟主机

sites-enabled 启用的虚拟主机

(3)apache的模块的启用和禁止

启用一个模块

#sudo a2enmod 模块名

禁止一个模块

#sudo a2dismod 模块名

搜索想要的模块

#sudo apt-cache search libapache2-mod

找到想要的模块后,用以下命令安装

#sudo apt-get install 模块名

在/etc/apache2/mods-available 是已安装的可用模块,/etc/apache2/mods-enabled 是已启用的模块

(4)启用和禁止虚拟站点

启用一个站点

#sudo a2ensite 站点名

禁止一个站点

#sudo a2dissite 站点名

(5)apache的网页放到哪了?

默认在/var/www目录下,可以通过DocumentRoot关键字定义你想存放的位置,这个在虚拟主机定义时就会用到,安装完以后只有一个有效虚拟主机/etc/apache2/sites-available/default,也是在这个文件里定义DocumentRoot,这个根据自己的需要进行合理的规划。

2,虚拟主机,可以参考http://lamp.linux.gov.cn/Apache/ApacheMenu/vhosts/index.html中关于虚拟主机的讲解。

有三种方式实现虚拟主机,一是基于同一IP,不同端口的虚拟主机;二是同一端口,不同IP的虚拟主机;三是基于同一IP,同一端口,不同名字的虚拟主机。但是由于SSL协议先天特性决定了基于域名的虚拟主机无法成为SSL安全服务器,所以想使用SSL的,就不能用基于主机名的虚拟主机。

与虚拟主机有关系的一个文件那就是ports.conf,因为它定义了httpd服务要监听IP及端口号,默认情况是

apache03

*代表是本机上所有IP

(1)基于域名的虚拟主机

1-1.先把/etc/apache2/ports.conf改成以下内容:

apache07

1-2,建一个以www.labtest.com为域名的虚拟主机

$ cd sites-available/
$ sudo cp default  labtest

$sudo vim labtest

apache08

其它内容先暂不做修改

1-3,在/var/www下建labtest目录,并新建一测试用的index.html

$sudo mkdir /var/www/labtest

$sudo vim /var/www/labtest/index.html

apache09

1-4,启用虚拟主机labtest

$sudo a2ensite labtest

$sudo /etc/init.d/apache2 reload

1-5,在一测试机上如下设置,因为这里没有配置DNS,如果DNS配置好了,就把测试机上的DNS服务器指到相应的DNS上。

如果是在ubuntu系统上测试,则:

$sudo vim /etc/hosts

添加以下内容

192.168.3.5        www.labtest.com

如果是在windows xp 上测试,则:

在c:\WINDOWS\system32\drivers\etc\hosts里添加

192.168.3.5        www.labtest.com

在浏览器中输入http://www.labtest.com,看是否显示labtest1,若是则成功。

在做实验过程中出现以下问题 :

重新reload 时,提示以下警告

apache10

解决方法是:在/etc/apache2/apache2.conf里加入

ServerName ubuntulab(本机的计算机名)

出现以下警告

apache11

解决方法是:

apache08

就是把<VirtualHoat 192.168.3.5>改成<VirtualHoat 192.168.3.5:80>

出现以下警告

apache06

这phpmyadmin引起的错误,

解决方法:

在/etc/apache2/apache2.conf 中去掉

Include /etc/phpmyadmin/apache.conf

在http://ubuntuforums.org/archive/index.php/t-829124.html中有对这个问题的讨论,在上篇关于LAMP的安装中,就发现不加这句配置,phpmyadmin也是可以成功运行。

/etc/apache2/conf.d/phpmyadmin.conf是/etc/phpmyadmin/apache.conf的一个链接文件。

在/etc/apache2/conf.d/phpmyadmin.conf中

apache12

这句配置是一定有的,如果没有phpmyadmin是不能成功运行的。

(2)基于不同IP,同端口的虚拟主机

2-1,给网卡eth0配置第二个IP地址

$sudo ifconfig eth0:0 192.168.3.51 netmask 255.255.255.0 broadcast 192.168.3.255 up

2-2,把/etc/apache2/ports.conf中的NameVirtualHost 给注释掉,否则在重启apache2时会出错。

apache15

2-3,修改站点配置文件default,labtest,在/etc/apache2/sites-available目录下

default的配置改为:<VirtualHoat 192.168.3.5>

labtest的配置改为:<VirtualHoat 192.168.3.51>

其它配置不变。

2-4,启动虚拟主机,重新载入 apache服务器

$sudo a2ensite default

$sudo a2ensite labtest

$sudo /etc/init.d/apache2 reload

2-5,配置DNS服务器或在hosts文件中做相应的修改

192.168.3.5  www.lab.com

192.168.3.51   wwww.labtest.com

在浏览器中不同的输入IP或域名,会显示不同的内容则成功。

在实验过程中出现以下问题:

apache14

第一错误的解决方法是在/etc/hosts里添加

192.168.3.51 ubuntulab(本机的计算机名)

因为192.168.3.51是后面添加的IP,没有解析到主机名

第二个警告的解决方法是:有一个虚拟主机也采用了192.168.3.5的IP ,引起了IP地址的重复,查看/etc/sites-enabled下启用的虚拟主机采用的IP地址是否与192.168.3.5重复,若是则改为其它IP即可。

第三个警告是由于没有把/etc/apache2/ports.conf中的NameVirtualHost 给注释掉引起的,该配置只用于基于域名的虚拟主机。

(3)基于不同端口,同IP的虚拟主机

3-1,修改/etc/apache2/ports.con文件为

apache004

3-2,修改站点配置文件default,labtest,在/etc/apache2/sites-available目录下

default的配置改为:<VirtualHoat 192.168.3.5:80>

labtest的配置改为:<VirtualHoat 192.168.3.5:808>

3-3,启动虚拟主机,重新载入 apache服务器

$sudo a2ensite default

$sudo a2ensite labtest

$sudo /etc/init.d/apache2 reload

3-4,测试

在浏览器里访问时就要加上端口号如:

http://192.168.3.5

http://192.168.3.5:808或http://www.labtest1.com:808

做实验时发现在port.conf不可写成

apache003 或Listen 80,808

前者重新载入apache2时不会出现错误信息,但是访问是不成功的,后者会出现如下错误信息

apache002

告诉你语法错误。

3,虚拟主机的配置文件,以一个虚拟主机为例。更多的指令可以阅读http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/directives.html#A

<VirtualHost 192.168.3.5:808>
        ServerAdmin admin@labtest.com

#网站管理员的EMAIL邮件地址
        DocumentRoot /var/www/labtest1

#网站的根目录,一般要设置为绝对的路径,否则将认为它的父目录为在/etc/apache2/apache2.conf里ServerRoot指定的路径
#       ServerName www.labtest1.net

#在设置基于域名虚拟主机时,指定虚拟主机的域名
        <Directory />
                Options FollowSymLinks

#FollowSymLinks,允许在些目录中使用符号链接
                AllowOverride None

#AllowOverride ,是针对.htaccess文件的。其值有all,none,AuthConfig,FileInfo,Indexes,Limit
        </Directory>
        <Directory /var/www/labtest1>
                Options Indexes FollowSymLinks MultiViews

#MultiViews,允许内容协商的多重视图。内容协商由mod_negotiation模块生成。
                AllowOverride None
                Order allow,deny

#Order:指定对目录的访问控制及allow,deny的生效顺序。如果是allow,deny则是allow先于deny生效,默认拒绝所有访问,任何不匹配allow或是匹配deny的访问都被拒绝;如果是deny,allow则是deny先于allow生效,默认是允许所有访问,任何不匹配deny或是匹配allow的访问都被允许访问。
                allow from all

#allow:控制哪些主机可以访问,from是固有的,后面可以是主机名,IP地址,IP范围,域名等。例:

#allow from labtest.com

#allow from .labtest.com

#allow from 192.168.3.5/255.255.255.0

#allow from 192.168.3.5/24

#allow from 192.168.3.100 192.168.3.101

#
        </Directory>
        ScriptAlias /cgi-bin/ /var/www/labtest1/cgi-bin/

# ScriptAlias:它标明/var/www/labtest1/cgi-bin目录下只有CGI脚本,同时与Alias一样用于在URL和文件系统路径之间实现映射,使不在DocumentRoot目录下的内容也能成为文档树的一部分
        <Directory "/var/www/labtest1/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

#ExecCGI:允许该目录下通过mod_cgi执行CGI脚本

#SymLinksIfOwnerMatch:只允许使用与目标目录或文件的拥有者具有相同的USERID的符号链接

#+与-:一般来说,在一个目录上设置了多次的Options,则最特殊的一个会被完全接受,而其他的则会被忽略;然而,加上+或-时,所有带+的选项将强制覆盖当前的设置,所有带-的选项将强制从当前设置中去除。
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog /var/log/apache2/labtest1/error.log

#定义错误的日志:在/var/log/apache2下一定要事先建好labtest1的目录,否则会出错。
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

#LogLevel:定义日志的级别

#emerg 紧急

#alert 必须立即采取措施

#crit 致命的情况

#error 错误

#warn 警告

#notice 重要

#info 普通

#debug 调试

        CustomLog /var/log/apache2/labtest1/access.log combined

#CustomLog:指令用来对服务器的请求进行日志记录。combined第二个参数指定了写入日志文件的内容

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog log/acces_log combined

可参考http://httpd.apache.org/docs/1.3/logs.html
        ServerSignature On

#ServerSignature:指令允许您配置服务器端生成文档的页脚(错误信息、     mod_proxy的ftp目录列表、

mod_info的输出)。有三个值:On,Off,Email;on会简单的增加一行关于服务器版本和正在伺服的虚拟主机的ServerName;Off 设置没有错误行(这样便与Apache1.2及更旧版本兼容;EMail 设置会如文档中说明的那样额外创建一个指向ServerAdmin的"mailto:"部分。对于2.0.44以后的版本,显示的详细服务器版本号将由ServerTokens指令控制。

    Alias /files/ "/var/www/labtest1/files/"

#Alias:使不在DocumentRoot目录下的内容也能成为文档树的一部分,也叫虚拟目录。值得注意的是/files/与/files是有区别的,在此你有/,那么在访问时也一定要有/。访问都必须要知道有这个别名,才能访问。例:http://192.168.3.5:808/files/,如果没有写/files/是不能访问的。
    <Directory "/var/www/labtest1/files/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
#        Deny from all
         Allow from 127.0.0.0/255.0.0.0 ::1/128
   </Directory>
 

结束语:

三种实现虚拟主机的方法中涉及到/etc/apache2目录下三个文件ports.conf httpd服务的端口号,sites-available 可用的虚拟主机,sites-enabled 启用的虚拟主机;ports.conf在三种方式下要做相应的修改,NameVirtualHost只在基于域名虚拟主机用到。做web服务器必然涉及到DNS服务相关配置,在这里我只是学习了虚拟主机的实现,还有很多其它的配置及优化没涉及。


Ubuntu Server下Apache虚拟主机配置实战指南 虚拟主机是Web服务器实现多站点托管的基础技术,其本质是通过HTTP协议中的Host头匹配不同域名请求,并将流量路由至对应DocumentRoot目录。该机制依赖Apache模块加载顺序、文件系统权限控制(如www-data组权限)、SSL/TLS加密配置及重写规则生效条件等底层协同。掌握Virtual Hosts不仅关乎单站部署,更支撑HTTPS强制跳转、HTTP/2启用、日志隔离与安全加固等生产级能力。在Ubuntu Server环境中,结合a2ensite工具链、Let's Encrypt自动化证书管 阅读详情

相关推荐

Ubuntu Server Apache虚拟主机配置的四层信任链解析

Apache虚拟主机不是简单的配置文件编辑,而是涉及操作系统权限、Web服务器模块、安全策略与应用行为的多层协同机制。理解其底层原理——包括用户组权限控制、mod_rewrite等核心模块启用逻辑、AppArmor安全策略约束,以及DocumentRoot与Directory指令的路径一致性校验——是实现稳定部署的关键。该机制决定了URL重写、HTTPS支持、静态资源访问及错误日志分离等典型功能能否正常工作,广泛应用于Laravel、WordPress等PHP框架在Ubuntu Server上的生产环境部署

无花的专栏 413

apache2的虚拟主机的配置

注意在配置时看着error.log 会更有效率,这个时apache2的错误日志,所以在发生错误时可以去看在结合自己的实际情况进行相应的更改。然后用ln -s 指令创建符号链接于enabled这也就是告诉服务器的主配置,这些有符号链接的配置文件是可以启用的web虚拟主机。2.同ip端口法:可以依靠当前ip下的开放的闲置端口进行相应的配置,从而达到访问当前主机但是依照端口进行相应的访问。DocumentRoot /var/www/XXX/(这里是你的服务器要展现的东西的目录)

jzm__123的博客 1248

Apache虚拟主机配置原理与Ubuntu实战详解

Apache虚拟主机是Web服务最基础的多站点路由机制,其核心在于基于HTTP Host头的NameVirtualHost匹配逻辑与2.4+版本的Require权限模型。理解DocumentRoot路径解析、ServerName/ServerAlias匹配优先级及模块加载顺序(如mod_rewrite、mod_ssl),是解决403/404/500等常见问题的关键技术前提。该机制支撑本地开发环境(如WSL2、VMware沙箱)、多项目并行调试及CI/CD中域名隔离等典型场景,尤其在需精细控制日志、重写规则和

HJ921004的博客 377

Appache的基本配置

一。Apache基本设置 1、Apache的核心配置文件名是"httpd.conf",其所存放的路径为"X:\Apache2\conf"目录下。用记事本打开它后,对它进行修改后再保存便可达到配置Apache服务器的目的. 2、由于配置文件"httpd.conf"决定着整个Apahce服务器的使用,因此对于它的修改千万要小心!强烈建议先做好多个备份,以防出错!如果实在忘了备份了,系统还为你准备了

c_phoenix的博客 636

Ubuntu Server 上 Apache 虚拟主机配置全指南

虚拟主机(Virtual Host)是 Apache 实现单服务器多域名托管的核心机制,其原理基于 HTTP/1.1 的 Host 请求头匹配与 Apache 的 <VirtualHost> 指令路由。该技术无需额外硬件,通过配置文件精准调度请求,显著降低运维成本并提升资源利用率。在 Ubuntu Server 环境中,正确配置涉及目录权限(如 www-data 组归属)、禁用默认站点(000-default.conf)、禁用 .htaccess 以保障性能与安全,并优先采用基于域名的 Name-based

cuxiong8996的博客 504

Ubuntu 13.10 Apache虚拟主机配置全解析:权限、Require指令与Name-based VHost实战

Apache虚拟主机是Web服务路由与多站点隔离的基础机制,其核心原理在于HTTP请求头中的Host字段匹配与服务器端的Directory访问控制策略。在Linux系统中,它高度依赖文件权限模型(如www-data组)、模块化配置(a2ensite/a2enmod)及符合版本特性的语法规范。Ubuntu 13.10作为Apache 2.4与Upstart的关键过渡版本,强制要求使用Require all granted替代旧式Order/Allow指令,并需严格遵循基于名称的虚拟主机(Name-based

weixin_34268310的博客 511

linux apache虚拟主机配置(基于ip,端口,域名)

配置环境: linux版本:Centos6.4 httpd版本: [root@centos64Study init.d]# pwd/etc/init.d[root@centos64Study init.d]# httpd -vServer version: Apache/2.2.15 (Unix)Server built: Oct 19 2017 16:43:38 1,...

weixin_33873846的博客 606

Ubuntu 18.04 Apache虚拟主机配置避坑指南

Apache虚拟主机是Web服务的基础架构能力,其核心原理在于基于ServerName的请求匹配与Directory权限控制。在Ubuntu等Debian系发行版中,Apache通过sites-available/sites-enabled符号链接机制实现模块化管理,但默认启用的000-default.conf会以最高字典序优先拦截未指定Host头的请求,导致自定义配置‘写而无效’;同时Apache 2.4+废弃Order/Allow语法,强制要求Require all granted权限声明。这一原理差异

culh2177的博客 670

Ubuntu 13.10 Apache虚拟主机配置四步闭环与排错指南

Apache虚拟主机是Linux Web服务部署的基础能力,其核心原理在于请求路由、权限控制与模块协同。在Ubuntu等Debian系发行版中,它通过sites-available/sites-enabled机制实现配置隔离,依赖mod_rewrite等扩展模块支持现代Web框架,并严格遵循Apache 2.4的Require权限模型。技术价值体现在环境可复现、故障可分层定位——从/etc/hosts解析、端口监听、Host头匹配到目录授权,每一层都对应明确的验证命令。典型应用场景包括本地开发环境搭建(如m

weixin_33912453的博客 370

Ubuntu 14.04 Apache 2.4虚拟主机配置原理与排错指南

虚拟主机是Web服务器实现多站点托管的基础技术,其核心在于HTTP请求头中的Host字段匹配与目录访问权限控制。Apache 2.4重构了虚拟主机路由机制,采用ServerName/ServerAlias驱动的名称匹配流程,并以Require指令替代旧版Order/Allow/Deny权限模型,显著提升安全性与语义清晰度。该机制依赖精确的配置加载顺序、正确的DocumentRoot路径声明及严格的文件系统权限协同。在Ubuntu 14.04 LTS(搭载Apache 2.4.7)环境中,常见故障如403 F

weixin_30607029的博客 320

Ubuntu 18.04 Apache虚拟主机配置深度解析

Apache虚拟主机是Web服务部署的基础技术,其核心原理在于基于域名或端口的请求分发与独立配置隔离。在Ubuntu 18.04系统中,该机制深度耦合Debian包管理规范、systemd环境变量加载流程及Apache 2.4.29语法演进,形成三重约束体系。理解这一设计逻辑,对保障多站点共存、PHP版本隔离、SSL策略差异化等生产需求具有关键工程价值。本文聚焦Ubuntu 18.04这一广泛使用的LTS版本,系统拆解sites-available/sites-enabled符号链接机制、envvars变量

weixin_34357436的博客 426

Apache2配置虚拟主机

目的:在本地访问时,通过不同域名访问不同的开发目录,本案例将example.com映射到 我的 ~/Desktop目录下 环境:Apache2.4,Ubuntu14.04 工具:vim 1.域名映射 我们得将example.com指向本地ip,以防止域名解析。 修改/etc/hosts文件, 在127.0.0.1       localhost 那一块下方添加一条记录如下:

Away_D的博客 882

Ubuntu 16.04 Apache虚拟主机配置深度解析

Apache虚拟主机是Web服务的基础部署单元,其核心原理在于请求路由、目录权限控制与模块化访问策略的协同。在Apache 2.4版本中,`Require`指令取代旧版访问控制模型,构成更严谨的授权链;而Ubuntu 16.04因集成systemd沙箱机制(如ProtectHome、PrivateTmp)和Debian包级路径约束,使`/var/www/`成为唯一被默认信任的DocumentRoot根路径。这一组合带来显著的技术价值:提升系统安全性与配置可预测性,但也导致常见403 Forbidden、50

weixin_34072458的博客 959

Ubuntu 18.04 Apache虚拟主机配置实战指南

虚拟主机是Web服务器实现多站点托管的核心机制,其原理基于HTTP协议的Host请求头匹配,通过Apache的Name-based虚拟主机技术,在单IP单端口下依据域名路由至不同网站根目录。该技术具备零成本、零用户感知、高兼容性等工程优势,广泛应用于开发环境搭建、多客户网站托管及测试/生产环境隔离等场景。在Ubuntu 18.04系统中,依托Apache 2.4.29的模块化配置体系(如sites-available/enabled机制)、标准化目录权限控制和基于Host头的精准路由能力,可稳定支撑PHP应

diankui6178的博客 368

Ubuntu 16.04 Apache虚拟主机配置实战指南

虚拟主机(Virtual Host)是Web服务器实现多站点托管的核心机制,其原理基于HTTP/1.1协议中的Host请求头匹配,由Web服务器在请求分发阶段完成路由决策。该技术具备零额外硬件成本、高配置可维护性与良好向后兼容性等技术价值,广泛应用于企业官网、内部管理系统、API测试环境等多租户场景。在Linux服务器运维中,Apache虚拟主机配置涉及模块加载、目录权限控制、配置文件加载顺序及语法校验等关键环节,尤其在Ubuntu 16.04系统中需严格遵循sites-available/sites-en

congran6617的博客 447

zedboard(5)spi轮询和中断

一个SPI可以有几个从设备 在程序中使用 s32 XSpiPs_SetSlaveSelect(XSpiPs *InstancePtr, u8 SlaveSel) 选择。其实就是吧对应设备的ss拉低。 备注:只选一个ss,可以不用指定。(感觉,还没测试) 这是xspips.c中定义的函数,发送和接收有 XSpiPs_Transfer 和 XSpiPs_PolledTransfer 两个函数,分别采用中断和轮询模式。    一、轮询模式 米联客参考代码,SpiPs_Init中部分和官方例程流程一样,Spi

Kiss丶小坏 5889
上一篇: Ubuntu Apcahe服务虚拟目录的配置 phpmyadmin的架设使用
下一篇: WordPress防范垃圾评论(无插件)
ximo
博客等级 码龄24年 18粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值