无需使用Setup Python App,如何在cPanel中部署Django项目?求分步教程
不依赖cPanel Setup Python App的Django项目部署完整步骤
一、本地项目预处理
- 生成依赖清单:在本地项目根目录执行
pip freeze > requirements.txt,确保所有依赖(含Django、uWSGI等)都被记录 - 修改
settings.py关键配置:- 设置
DEBUG = False - 在
ALLOWED_HOSTS中添加你的域名,示例:ALLOWED_HOSTS = ["yourdomain.com", "www.yourdomain.com"] - 配置静态文件:
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] - 配置媒体文件(按需添加):
MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
- 设置
- 收集静态文件:执行
python manage.py collectstatic,将所有静态文件统一打包到staticfiles目录
二、cPanel基础配置
- 登录cPanel,完成域名/子域名的创建(若尚未配置)
- 进入File Manager,在
public_html目录外创建独立的项目存储目录(如django_projects),避免项目文件直接暴露在web根目录 - 上传本地项目文件:将本地项目打包为ZIP,通过File Manager上传到
django_projects目录后解压;或用FTP工具直接上传整个项目文件夹
三、手动创建Python虚拟环境
- 打开cPanel的Terminal工具,导航到项目根目录:
cd /home/your_cpanel_username/django_projects/your_django_project - 创建虚拟环境:
python3 -m venv venv - 激活虚拟环境:
source venv/bin/activate - 安装项目依赖:
pip install --upgrade pip pip install -r requirements.txt - 安装uWSGI(作为应用服务器):
pip install uwsgi
四、配置uWSGI
- 在项目根目录创建
uwsgi.ini文件,写入以下配置(根据实际路径修改):[uwsgi] # 项目根目录绝对路径 chdir = /home/your_cpanel_username/django_projects/your_django_project # WSGI模块路径(格式:项目名/wsgi.py) module = your_project_name.wsgi:application # 虚拟环境路径 home = /home/your_cpanel_username/django_projects/your_django_project/venv # 本地socket文件,用于与Apache通信 socket = /home/your_cpanel_username/django_projects/your_django_project/your_project.sock # 设置socket权限,避免Apache无法访问 chmod-socket = 666 # 进程数 processes = 4 # 线程数 threads = 2 # 后台运行并记录日志 daemonize = /home/your_cpanel_username/django_projects/your_django_project/uwsgi.log # 主进程PID文件 pidfile = /home/your_cpanel_username/django_projects/your_django_project/uwsgi.pid - 测试uWSGI启动:
查看uwsgi --ini uwsgi.iniuwsgi.log确认无报错即为正常
五、配置Apache反向代理(.htaccess)
- 进入域名对应的web根目录(主域名对应
public_html,子域名对应public_html/subdomain) - 创建或修改
.htaccess文件,添加以下规则:RewriteEngine On # 转发所有非静态/媒体文件请求到uWSGI socket RewriteCond %{REQUEST_URI} !^/static/ RewriteCond %{REQUEST_URI} !^/media/ RewriteRule ^(.*)$ unix:/home/your_cpanel_username/django_projects/your_django_project/your_project.sock|uwsgi://localhost/$1 [P,L] # 静态文件直接访问 Alias /static/ /home/your_cpanel_username/django_projects/your_django_project/staticfiles/ <Directory /home/your_cpanel_username/django_projects/your_django_project/staticfiles/> Require all granted </Directory> # 媒体文件直接访问(按需添加) Alias /media/ /home/your_cpanel_username/django_projects/your_django_project/media/ <Directory /home/your_cpanel_username/django_projects/your_django_project/media/> Require all granted </Directory>
六、数据库配置(以MySQL为例)
- 在cPanel的MySQL Databases中:
- 创建新数据库(如
your_db_name) - 创建数据库用户(如
your_db_user)并设置密码 - 将用户授权给数据库,赋予全部权限
- 创建新数据库(如
- 修改项目
settings.py中的DATABASES配置:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_db_name', 'USER': 'your_db_user', 'PASSWORD': 'your_db_password', 'HOST': 'localhost', 'PORT': '3306', } } - 回到cPanel Terminal(确保虚拟环境已激活),执行数据库迁移:
python manage.py migrate - 如需后台管理,创建超级用户:
python manage.py createsuperuser
七、保持uWSGI后台运行
- 若之前测试启动的uWSGI已停止,重新启动并后台运行:
nohup uwsgi --ini uwsgi.ini & - 查看运行状态:
ps aux | grep uwsgi - 停止uWSGI(如需重启或更新):
uwsgi --stop uwsgi.pid
八、验证部署
- 打开浏览器访问你的域名,检查页面是否正常加载
- 测试静态文件(如CSS、JS)是否显示正常
- 测试网站核心功能(如表单提交、数据库操作)是否正常
- 若出现500错误,查看uWSGI日志和Apache错误日志(通过cPanel的Error Logs工具定位问题)
内容的提问来源于stack exchange,提问作者Shruthi
相关产品推荐
相关产品推荐

