You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

单Docker容器部署多站点Apache-PHP失败求助

Apache-PHP Docker容器多站点配置修复方案

问题诊断

核心问题是Apache虚拟主机无法正确匹配请求域名,导致始终加载默认根目录,问题集中在虚拟主机监听配置、全局ServerName设置以及运行权限三个方面。

修复步骤

1. 修正虚拟主机监听地址

修改所有站点配置文件(如site1.local.conf、site2.local.conf)的<VirtualHost>标签,将具体域名改为通配符监听所有接口:

# 原配置
<VirtualHost site1.local:80>

# 修改后
<VirtualHost *:80>

若配置了HTTPS,同理将SSL虚拟主机改为<VirtualHost *:443>。

2. 调整Apache全局ServerName配置

Dockerfile中添加两个站点域名作为全局ServerName会导致Apache无法识别默认服务器,替换为单条全局配置消除启动警告:

# 原配置
RUN echo "ServerName site1.local" >> /etc/apache2/apache2.conf
RUN echo "ServerName site2.local" >> /etc/apache2/apache2.conf

# 修改后
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf

3. 修复Apache运行用户权限

取消Dockerfile中Apache运行用户的注释,设置为创建的devuser,并补充目录权限配置:

# 原配置(注释状态)
#ENV APACHE_RUN_USER=#$UID
#ENV APACHE_RUN_GROUP=#$UID

# 修改后
ENV APACHE_RUN_USER=devuser
ENV APACHE_RUN_GROUP=devuser

# 在创建devuser后添加目录权限设置
RUN chown -R devuser:devuser /var/www/html

4. 重新构建并启动容器

执行以下命令更新容器:

docker-compose down
docker-compose build --no-cache
docker-compose up -d

验证方法

  • 访问site1.local和site2.local,确认加载对应站点目录的内容
  • 查看Apache日志文件(./logs/apache/site1-error.log、./logs/apache/site2-error.log),确认无权限或配置错误

内容的提问来源于stack exchange,提问作者abmmhasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:24:57