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

单服务器下通过两个子域名分别部署Django与PHP项目的实现方案咨询

单服务器下通过两个子域名分别部署Django与PHP项目的实现方案咨询

Hey there! Sounds like you've got a neat project split between Django and PHP, and want to host them on separate subdomains using a single Apache server—totally doable, let me walk you through how to make this work step by step.

第一步:前期准备

  • 先搞定DNS解析:登录你的域名服务商后台,把两个目标子域名(比如django.yourdomain.com和php.yourdomain.com)都解析到你的服务器公网IP。这一步是基础,不然Apache没法识别不同子域名的请求。
  • 确保Apache及所需模块安装到位:
    • 安装PHP相关模块(以Debian/Ubuntu为例):sudo apt install libapache2-mod-php
    • 安装Django需要的WSGI模块:sudo apt install libapache2-mod-wsgi-py3(如果用Python3开发Django的话)

第二步:配置Apache虚拟主机

Apache的虚拟主机是实现多子域名部署的核心,我们要为每个子域名单独创建配置文件:

1. 配置PHP子域名

在Apache的sites-available目录(通常路径是/etc/apache2/sites-available/)下新建配置文件,比如命名为php.yourdomain.com.conf,内容参考如下:

<VirtualHost *:80>
    ServerName php.yourdomain.com
    DocumentRoot /var/www/php-project  # 替换成你的PHP项目根目录(存放index.php的文件夹)

    <Directory /var/www/php-project>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    # 日志配置,方便后续排查问题
    ErrorLog ${APACHE_LOG_DIR}/php-project-error.log
    CustomLog ${APACHE_LOG_DIR}/php-project-access.log combined
</VirtualHost>

2. 配置Django子域名

同样在sites-available目录下新建django.yourdomain.com.conf,配置内容参考如下(假设你的Django项目路径是/var/www/django-project,WSGI文件路径为/var/www/django-project/your_django_app/wsgi.py):

<VirtualHost *:80>
    ServerName django.yourdomain.com

    # 配置静态文件路径,记得先在Django中执行`python manage.py collectstatic`收集静态文件
    Alias /static /var/www/django-project/static
    <Directory /var/www/django-project/static>
        Require all granted
    </Directory>

    # 让WSGI模块指向Django的WSGI入口文件
    WSGIScriptAlias / /var/www/django-project/your_django_app/wsgi.py
    <Directory /var/www/django-project/your_django_app>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    # 日志配置
    ErrorLog ${APACHE_LOG_DIR}/django-project-error.log
    CustomLog ${APACHE_LOG_DIR}/django-project-access.log combined
</VirtualHost>

第三步:启用配置并重启Apache

  • 启用刚才创建的两个虚拟主机配置:
    sudo a2ensite php.yourdomain.com.conf
    sudo a2ensite django.yourdomain.com.conf
    
  • 如果不需要默认的Apache欢迎页面,可以禁用默认配置:
    sudo a2dissite 000-default.conf
    
  • 重启Apache让配置生效:
    sudo systemctl restart apache2
    

第四步:收尾检查

  • 调整Django项目的settings.py:把你的Django子域名加入ALLOWED_HOSTS列表,比如:
    ALLOWED_HOSTS = ['django.yourdomain.com']
    
  • 修正PHP项目的文件权限:确保Apache用户(通常是www-data)有读取项目文件的权限:
    sudo chown -R www-data:www-data /var/www/php-project
    
  • (可选)如果需要HTTPS加密访问,可以用Certbot申请免费SSL证书,给两个子域名都配置HTTPS,提升安全性。

这样操作后,访问php.yourdomain.com就会加载你的PHP项目,访问django.yourdomain.com就会打开Django项目啦,完美实现单服务器多子域名部署不同框架的项目!

备注:内容来源于stack exchange,提问作者Mehan Alavi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 15:39:39