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

如何在GoDaddy独立服务器用Docker为不同目录配置对应PHP版本

为GoDaddy WHM/cPanel环境配置多版本PHP的Docker方案

完全可以通过Docker实现你的需求——为Attendance(CodeIgniter,PHP7.2)和Prize(Laravel,PHP8.1)两个目录分配独立的PHP环境,以下是具体实现步骤:

核心思路

用Docker分别为两个项目创建独立的Apache+PHP容器,搭配Nginx反向代理根据请求路径转发到对应容器,再通过cPanel的配置将域名请求导向反向代理服务,实现同域名下不同路径对应不同PHP版本。

具体操作步骤

1. 安装Docker与Docker Compose

在你的GoDaddy独立服务器上执行以下标准安装命令:

# 安装Docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2. 编写Docker Compose配置

创建一个专门的配置目录(比如/var/www/example-docker),在其中创建docker-compose.yml文件:

version: '3.8'

services:
  # CodeIgniter 项目容器(PHP7.2+Apache)
  ci-app:
    image: php:7.2-apache
    container_name: ci-attendance
    volumes:
      # 替换为你的cPanel账户名,映射本地目录到容器Apache根目录
      - /home/your-cpanel-user/public_html/Attendance:/var/www/html
    networks:
      - example-network
    restart: unless-stopped

  # Laravel 项目容器(PHP8.1+Apache)
  laravel-app:
    image: php:8.1-apache
    container_name: laravel-prize
    volumes:
      # 替换为你的cPanel账户名
      - /home/your-cpanel-user/public_html/Prize:/var/www/html
    networks:
      - example-network
    restart: unless-stopped

  # Nginx反向代理容器
  nginx-proxy:
    image: nginx:alpine
    container_name: example-nginx
    ports:
      - "8080:80" # 用非80端口避免与cPanel自带Apache冲突
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    networks:
      - example-network
    restart: unless-stopped

networks:
  example-network:
    driver: bridge

3. 配置Nginx反向代理规则

在同一目录下创建nginx.conf文件,定义路径转发规则:

server {
  listen 80;
  server_name example.com www.example.com;

  # 转发/Attendance路径到CodeIgniter容器
  location /Attendance {
    proxy_pass http://ci-app/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }

  # 转发/Prize路径到Laravel容器
  location /Prize {
    proxy_pass http://laravel-app/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
  }
}

4. 调整cPanel配置实现请求转发

登录你的cPanel账户,找到文件管理器,进入public_html目录,编辑.htaccess文件添加以下规则,将域名请求转发到Docker的Nginx服务:

RewriteEngine On
RewriteRule ^(.*)$ http://localhost:8080/$1 [P,L]

5. 启动容器并验证

回到服务器终端,进入配置目录启动容器:

cd /var/www/example-docker
docker-compose up -d

之后访问example.com/Attendance和example.com/Prize,可通过添加phpinfo()页面验证对应环境的PHP版本是否正确。

关键注意事项

  • PHP扩展安装:如果项目需要特定扩展(如mysqli、pdo_mysql、mbstring),可进入对应容器执行安装命令,例如:
    # 为CodeIgniter容器安装扩展
    docker exec -it ci-attendance apt-get update && apt-get install -y php7.2-mysqli php7.2-mbstring php7.2-xml
    
    也可以编写自定义Dockerfile构建镜像,实现扩展的持久化安装。
  • 文件权限:确保Attendance和Prize目录权限为755,文件权限为644,或调整容器内www-data用户ID匹配你的cPanel用户ID,避免读写权限问题。
  • SSL配置:如需HTTPS,先在cPanel中通过Let's Encrypt配置SSL证书,再修改.htaccess强制HTTPS访问,Nginx配置可保持监听80,由cPanel处理SSL层的转发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:10:49