单服务器下通过两个子域名分别部署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的话)
- 安装PHP相关模块(以Debian/Ubuntu为例):
第二步:配置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
相关产品推荐
相关产品推荐

