[英]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.