使用 cPanel 的 "Setup Python App" 功能(推荐)
这是 Bluehost 官方提供且最简单的方法,专门为 Python Web 应用设计,它会自动为你处理虚拟环境、依赖安装和 WSGI 服务器的配置。
优点:
- 图形化界面: 无需记忆复杂的命令。
- 自动化: 自动创建虚拟环境、安装依赖、配置 Web 服务器。
- 官方支持: Bluehost 官方支持此功能。
缺点:
- 灵活性较低: 你被限制在 Bluehost 提供的 Python 版本和应用模板中。
- 不适合高级用户: 如果你需要完全自定义服务器环境,此方法不够灵活。
使用 SSH 连接并手动配置
这种方法更接近传统的服务器管理方式,给你完全的控制权,你需要通过 SSH 连接到你的 Bluehost 主机,然后手动安装 Python、创建虚拟环境、安装依赖并配置 Web 服务器(通常是 Apache 或 Nginx)。
优点:
- 完全控制: 你可以安装任何版本的 Python,使用任何你想要的 WSGI 服务器(如 Gunicorn, uWSGI)。
- 灵活性高: 适合有经验的开发者,可以构建复杂的部署环境。
缺点:
- 复杂: 步骤繁琐,容易出错。
- 需要 SSH 权限: 你的 Bluehost 主机套餐必须支持 SSH 访问。
- 无官方支持: Bluehost 可能不会支持这种手动部署方式中遇到的问题。
详细步骤指南:使用 cPanel 的 "Setup Python App"
这是绝大多数用户应该采用的方法,以下是一个完整的示例,以部署一个 Flask 应用为例。
第 1 步:准备你的 Python Web 应用
在你的本地电脑上,确保你的项目结构如下,我们将以一个简单的 Flask 应用为例。
项目文件结构 (my_flask_app/):
my_flask_app/
├── app.py # 你的 Flask 应用主文件
├── requirements.txt # 你的 Python 依赖列表
└── .htaccess # (可选,但推荐) 用于 URL 重写
app.py 文件内容:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello from Bluehost Python App!"
@app.route('/about')
def about():
return "This is the about page."
if __name__ == '__main__':
# 注意:在生产环境中,不要使用 app.run()。
# 这里的 app.run() 仅用于本地开发测试。
app.run()
requirements.txt 文件内容:
这个文件列出了你的应用需要的所有 Python 包。
Flask==2.0.1
重要提示: 将你的整个
my_flask_app文件夹通过 FTP 或 cPanel 的 File Manager 上传到你的 Bluehost 主机上的public_html目录下,为了保持整洁,建议在public_html内创建一个子文件夹,public_html/my_flask_app。
第 2 步:在 cPanel 中设置 Python 应用
-
登录你的 Bluehost cPanel。
-
在 "Software" 部分,找到并点击 "Setup Python App" 图标。
-
创建新应用:
- 在 "Application" 标签页下,点击 "Create Application" 按钮。
- Application Root: 输入你的应用在
public_html下的路径,如果你把my_flask_app文件夹直接放在public_html下,就填/my_flask_app,如果放在public_html/python下,就填/python/my_flask_app。 - Application URL: 设置你的应用可以通过哪个 URL 访问,输入
python-app,那么你的应用就可以通过yourdomain.com/python-app/访问。 - Python Version: 从下拉菜单中选择你想要使用的 Python 版本(
Python 3.8)。 - Application Preset: 选择 "Flask",Bluehost 会自动为你生成一个
wsgi.py文件,并配置好 WSGI 设置。
-
配置虚拟环境和依赖:
- 创建应用后,你会进入应用的 "Environment" 标签页。
- Virtualenv: Bluehost 已经为你创建了一个隔离的 Python 环境。
- Requirements: 点击 "Browse" 找到你之前上传的
requirements.txt文件,然后点击 "Install",cPanel 会自动读取该文件并安装所有依赖(如 Flask),这个过程可能需要几分钟。
-
配置 WSGI 入口点:
- 这是告诉 Web 服务器如何运行你的 Python 应用的关键步骤。
- 在 "Environment" 标签页,找到 "WSGI Entry Point" 字段。
- 根据你选择的 "Application Preset"(这里是 Flask),通常会有一个默认值,
app:app,这个意思是 "在app.py文件中寻找名为app的 Flask 实例"。 - 请确认这个值是否正确。 对于我们上面的
app.py文件,app:app是正确的,如果你的主文件叫main.py,Flask 实例叫my_flask_app,那么这里就应该填main:my_flask_app。 - 保存更改。
-
设置目录和文件权限 (非常重要!)
- cPanel 会自动创建一个
.htaccess文件在你的应用根目录下,用于将所有请求转发到 WSGI 脚本。 - 你需要确保这个
.htaccess文件存在,并且其内容正确,通常它会是这样的:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /wsgi.py/$1 [L] - 确保你的
app.py和requirements.txt文件有正确的读取权限,你可以在 cPanel 的 File Manager 中右键点击文件,选择 "Change Permissions",确保所有者(Owner)有 "Read" 和 "Execute" 权限。
- cPanel 会自动创建一个
第 3 步:访问你的应用
完成以上所有步骤后,等待几分钟让配置生效,在浏览器中访问你设置的 Application URL(http://yourdomain.com/python-app/)。
你应该能看到 "Hello from Bluehost Python App!" 的字样,恭喜你,你的 Python 应用已经在 Bluehost 上成功运行了!
常见问题排查
-
500 Internal Server Error:
- 这是最常见的错误,原因通常是:
- WSGI Entry Point 配置错误: 双检查
wsgi_entry_point的值是否正确。 - 代码错误: 你的
app.py中有语法错误或运行时错误,查看 Bluehost 的错误日志(cPanel -> Error Logs)可以找到具体原因。 - 权限问题: 确保脚本文件有执行权限。
- 依赖未安装: 确认
requirements.txt中的所有包都已成功安装。
- WSGI Entry Point 配置错误: 双检查
- 这是最常见的错误,原因通常是:
-
404 Not Found:
- 检查 Application URL 的设置是否正确。
- 检查
.htaccess文件是否存在并且内容正确。
-
WSGI 脚本无法执行:
- 这通常意味着 Web 服务器(Apache/Nginx)找不到或无法执行
wsgi.py文件,再次检查文件路径和权限。
- 这通常意味着 Web 服务器(Apache/Nginx)找不到或无法执行
对于大多数用户,强烈推荐使用 cPanel 的 "Setup Python App" 功能,它极大地简化了部署流程,让你能更专注于应用开发本身,只有在官方工具无法满足你的特殊需求时,才考虑使用手动 SSH 的方法。
