假设我有一个本地 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\bashBASEDIR=$(dirname "$0")xamppPath="C:\xampp\v7.3.10"cd $xamppPath"apache\bin\httpd.exe" -S "$BASEDIR\httpd-vhosts.conf" &但-S只打印出 VirtualHosts,而不是设置配置文件。如何在不覆盖 xampp 安装文件夹中现有配置文件的情况下,在硬盘驱动器某处使用脚本运行项目?
2 回答

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

慕标琳琳
TA贡献1830条经验 获得超9个赞
在 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 服务同时具有两个不同的项目是不可能的,但直到现在还没有必要。
- 2 回答
- 0 关注
- 133 浏览
添加回答
举报
0/150
提交
取消