apache 临时通过脚本启动 VirtualHost

假设我有一个本地 apache2,我需要一个脚本来运行带有特殊注入的 VirtualHost 的 apache2。


更精确:

我在 Windows 10 上安装了 xampp(PHP 7.3.10、MariaDB 10.4.8、mysqlnd 5.0.12-dev、Apache 2.4.41)。

几个 PHP 项目位于整个硬盘驱动器上。到目前为止,我./apache/conf/extra/httpd-vhosts.conf在每个项目切换上启动 apache2 服务之前修改了文件。有了它,我可以将项目文件夹留在原处,而无需将它们复制到 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 安装文件夹中现有配置文件的情况下,在硬盘驱动器某处使用脚本运行项目?


慕田峪7331174
浏览 134回答 2
2回答

DIEA

更简单:构建几个祝贺文件,使用选项-f指定一个有效的配置文件,而不是-S.可以更复杂:用户-D name和使用<IfDefine name>在配置文件中“选择”它的部分以应用于特定的启动。注意:我使用apachectl,而不是直接httpd启动/停止 Apache。

慕标琳琳

在 xampp 包中没有直接apachectl文件,所以-D <name>我无法使用。这将是完美的解决方案,但不幸的是不可能。现在我必须httpd-vhosts.conf从我想要启动它的每个项目中覆盖该文件。因此,我正在使用修改后的脚本解决方案:#!\bin\bashBASEDIR=$(dirname "$0")xamppPath="C:\xampp\v7.3.10"cp -f "$BASEDIR\httpd-vhosts.conf" "$xamppPath\apache\conf\extra\httpd-vhosts.conf"sleep 1cd $xamppPath"apache\bin\httpd.exe" &这不是完美的解决方案,但它确实有效。两个 apache 服务同时具有两个不同的项目是不可能的,但直到现在还没有必要。
打开App,查看更多内容
随时随地看视频慕课网APP