单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
相关产品推荐
相关产品推荐

