簡體   English   中英

apache 通過腳本啟動臨時 VirtualHost

[英]apache temporarily VirtualHost by script start

假設我有一個本地 apache2,我需要一個腳本來運行帶有特殊注入 VirtualHost 的 apache2。

更多的代價:
我在 Windows 10 上安裝了 xampp(PHP 7.3.10、MariaDB 10.4.8、mysqlnd 5.0.12-dev、Apache 2.4.41)。
幾個 PHP 項目遍布整個硬盤驅動器。 到現在為止,我在每次項目切換上啟動 apache2 服務之前都會修改./apache/conf/extra/httpd-vhosts.conf文件。 這樣我就可以將項目文件夾留在那里,而無需將它們復制到 xampp 安裝文件夾中。

現在我很好奇我是否可以為每個項目(bat 或 sh,安裝了 GitShell)編寫一個腳本,該腳本將正常運行 mariadb 和 apache2,該特定項目文件夾的臨時 VirtualHost 為 DocumentRoot。

我目前可以做的:
在項目文件夾中放置一個httpd-vhosts.conf文件和一個startProject.sh腳本。 運行腳本會復制xampp安裝中的配置文件,然后啟動apache2服務。
這是有效的,但只能啟動一個 apache2 進程,而不能同時啟動多個項目。

我想要的是:
我想在啟動 apache2 時使用一個通過參數指定 VirtualHost 的參數。
也許通過說 apache2 使用特殊的配置文件而不是自己項目結構中的文件。
或者我想通過啟動 apache2 進程來使用一個參數,該進程為已經指定的 VirtualHost 指定一個替代 DocumentRoot 文件夾。

目前這是我的方法:

#!\bin\bash
BASEDIR=$(dirname "$0")
xamppPath="C:\xampp\v7.3.10"
cd $xamppPath
"apache\bin\httpd.exe" -S "$BASEDIR\httpd-vhosts.conf" &

但是-S只打印出 VirtualHosts,而不是設置配置文件。

如何在不覆蓋 xampp 安裝文件夾中的現有配置文件的情況下,在硬盤驅動器上的某處使用腳本運行項目?

更簡單:構建幾個祝賀文件,使用選項-f指定有效的配置文件,而不是-S

可能更復雜: user -D name並在配置文件中使用<IfDefine name>來“選擇”它的部分以應用於特定的啟動。

注意:我使用apachectl ,而不是直接httpd來啟動/停止 Apache。

在 xampp 包中沒有直接的apachectl文件,所以對我來說使用-D <name>是不可能的。 這將是完美的解決方案,但不幸的是不可能。

現在我必須覆蓋每個我想要啟動它的項目中的httpd-vhosts.conf文件。 因此,我正在使用修改后的腳本解決方案:

#!\bin\bash
BASEDIR=$(dirname "$0")
xamppPath="C:\xampp\v7.3.10"
cp -f "$BASEDIR\httpd-vhosts.conf" "$xamppPath\apache\conf\extra\httpd-vhosts.conf"
sleep 1
cd $xamppPath
"apache\bin\httpd.exe" &

這不是完美的解決方案,但它有效。
兩個不同的項目同時使用兩個 apache 服務是不可能的,但直到現在還沒有必要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM