如何在带Plesk的Ubuntu VPS上同域名配置PHP站点与Python Flask应用
现有配置的问题
你提供的配置存在3个核心错误,无法直接使用:
ServerName仅支持填写域名,不能携带路径后缀/python,该字段不识别路径参数- 当前配置的
WSGIScriptAlias /会把根域名下的所有请求都转发给Flask,会覆盖你原有的PHP站点配置 - 你用的
Order allow,deny是Apache 2.2的旧语法,Ubuntu默认搭载的是Apache 2.4,应该用Require all granted替代
可用部署方案
方案1:使用路径前缀 https://example.com/python 访问
不需要新建独立的VirtualHost,直接修改原有的主站点(对应example.com的.conf配置文件),在现有配置里新增以下规则即可:
# 新增Flask路径转发规则 WSGIScriptAlias /python /var/www/myapp/pyapp.wsgi <Directory /var/www/myapp/myapp/> Require all granted </Directory> Alias /python/static /var/www/myapp/myapp/static <Directory /var/www/myapp/myapp/static/> Require all granted </Directory>
注意:如果你的Flask应用里写了固定的路由前缀,需要和这里的
/python保持一致,避免路由404。
方案2:使用子域名 https://python.example.com 访问
需要先把python.example.com解析到当前VPS,再新建独立的VirtualHost配置文件,配置内容如下:
<VirtualHost *:80> ServerName python.example.com ServerAdmin admin@mywebsite.com WSGIScriptAlias / /var/www/myapp/pyapp.wsgi <Directory /var/www/myapp/myapp/> Require all granted </Directory> Alias /static /var/www/myapp/myapp/static <Directory /var/www/myapp/myapp/static/> Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/python-app-error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/python-app-access.log combined </VirtualHost>
配置完成后执行以下命令生效:
- 启用wsgi模块:
a2enmod wsgi - 启用站点配置(仅方案2需要执行):
a2ensite 你的配置文件名.conf - 测试配置语法:
apache2ctl configtest - 重载Apache:
systemctl reload apache2
Plesk用户注意事项
因为你使用了Plesk面板,不建议直接修改sites-available下的原生配置,Plesk自动更新配置时会覆盖手动修改的内容,最好在Plesk面板对应站点的「Apache与Nginx设置」里,把上面的规则填写到「附加Apache指令」框里即可。
内容的提问来源于stack exchange,提问作者Hanuman Ram
相关产品推荐
相关产品推荐

