2010-09-12 107 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此解決方案應該足以用於開發。

相關問題