2010-09-12 105 views

回答

4

不,似乎没有直接的方法来做到这一点。

可能是唯一的解决方案是IfDefine指令。您可以使用-d参数定义服务器启动时的定义。

参数名称参数是在服务器启动时通过-Dparameter-在httpd命令行上给出的定义。

您可能能够检查批处理或bash文件中是否存在目录,并相应地设置-d参数。

无论这是否是一个选项,将取决于您的服务器如何从便携式硬盘启动。

3

我想出了一个似乎适用于Linux和OS X的解决方案,它取决于“挂载点”。也可以在Windows中模拟它,但您可能需要使用FUSE和/或Cygwin创意。

如果您在主目录中创建了一个空文件夹,例如“/ Users/username/ExtraVhosts”,您可以将apache指令添加到“Include/Users/username/ExtraVhosts/*”。

然后,当您插入拇指驱动器时,可以挂载到某个位置,然后使用挂载点“绑定”将ExtraVhosts文件夹交叉链接到移动设备上的文件夹。

一个OS X例如:

  • 我已经拇指驱动器称为“樱桃炸弹”
  • 当我将其插入时,它总是被安装到/卷/樱桃炸弹
  • 然后我可以使用bindfs(须藤端口安装bindfs)安装它的一个子文件夹中,像这样:
    • 须藤bindfs /卷/樱桃炸弹/项目/虚拟主机/用户/用户名/ ExtraVhosts
  • 然后我就可以重新启动Apache在更新的配置为:
    • 须藤的/ opt /本地/ Apache2的/斌/的apachectl重启

在这一点上,它只是一个添加条目的事在/ etc/hosts中找到服务器别名。

Linux等价物将使用mount命令的“--bind”参数。

一个警告:这使得很难快速卸载USB驱动器,因为它总是被apache标记为“正在使用”。这里有一个拆卸步骤:

  • 关闭所有打开的文件和终端会话正在使用的驱动器(本-工作目录中的终端可能会导致卸载问题)
  • 停止Apache:须藤的/ opt /本地/ Apache2的/ bin中/停止的apachectl
  • 卸除/用户/用户名/ ExtraVhosts

然后就可以卸载它以图形或手动(卸除/卷/樱桃炸弹)。

如果您的工作和家用机安装驱动到不同的位置,你可以有多个虚拟主机文件夹 - home_vhost,work_vhost,等等 - 和使用,在结合步骤。

我希望这可以帮助别人了:)

0

如果指向的Apache的安装点只有在那里不应该是一个问题。不要将Directory指令指向驱动器中的目录。

例如,如果你挂载了/ dev/somedisk/mnt/somevhost,那么无论你是否挂载了驱动器,并且apache将启动, /mnt/somevhost目录都会在那里。 Apache不关心,如果该目录是空的,所以一个<Directory "/mnt/somevhost"/>不会导致如果驱动器未安装服务器无法启动。

工作 UNIX不反对:-p此解决方案应该足以用于开发。

相关问题