如何在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),可进入对应容器执行安装命令,例如:
也可以编写自定义Dockerfile构建镜像,实现扩展的持久化安装。# 为CodeIgniter容器安装扩展 docker exec -it ci-attendance apt-get update && apt-get install -y php7.2-mysqli php7.2-mbstring php7.2-xml - 文件权限:确保
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
相关产品推荐
相关产品推荐

