繁体   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