使用PythonAnywhere部署Cookiecutter Django项目指南

使用PythonAnywhere部署Cookiecutter Django项目指南

cookiecutter-django cookiecutter-django 项目地址: https://gitcode.com/gh_mirrors/coo/cookiecutter-django

概述

本文将详细介绍如何将基于Cookiecutter Django框架开发的项目部署到PythonAnywhere平台。PythonAnywhere是一个流行的Python云端开发环境,特别适合中小型Django项目的部署。

准备工作

在开始部署前,请确保:

  1. 项目代码已完整提交到代码仓库
  2. 已准备好所有必要的环境变量和配置信息
  3. 了解PythonAnywhere的基本操作

部署步骤详解

1. 获取项目代码并设置虚拟环境

在PythonAnywhere的Bash控制台中执行以下命令:

git clone <项目仓库地址>
cd <项目目录>
mkvirtualenv --python=/usr/bin/python3.10 <虚拟环境名称>
pip install -r requirements/production.txt

注意:由于PythonAnywhere目前仅支持Python 3.10,而Cookiecutter Django默认生成的是Python 3.12项目,这里需要特别指定Python版本。如果未来PythonAnywhere支持更高版本,可以相应调整。

2. 配置环境变量

生成一个安全的密钥:

python -c 'import random;import string; print("".join(random.SystemRandom().choice(string.digits + string.ascii_letters + string.punctuation) for _ in range(50)))'

编辑虚拟环境的postactivate脚本:

vi $VIRTUAL_ENV/bin/postactivate

添加以下环境变量:

export WEB_CONCURRENCY=4
export DJANGO_SETTINGS_MODULE='config.settings.production'
export DJANGO_SECRET_KEY='<生成的密钥>'
export DJANGO_ALLOWED_HOSTS='<你的域名>'
export DJANGO_ADMIN_URL='<自定义管理后台路径>'
export MAILGUN_API_KEY='<Mailgun API密钥>'
export MAILGUN_DOMAIN='<Mailgun域名>'
export DJANGO_AWS_ACCESS_KEY_ID=''
export DJANGO_AWS_SECRET_ACCESS_KEY=''
export DJANGO_AWS_STORAGE_BUCKET_NAME=''
export DATABASE_URL='<数据库连接URL>'
export REDIS_URL='<Redis连接URL>'

3. 数据库配置

PythonAnywhere支持多种数据库:

PostgreSQL配置
  1. 在Databases标签页设置PostgreSQL超级用户密码
  2. 创建数据库:CREATE DATABASE my-db-name
  3. 建议为应用创建专用角色而非使用超级用户
MySQL配置
  1. 设置密码并创建数据库
  2. 可能需要安装mysqlclient:pip install mysqlclient
SQLite配置

仅适用于小型测试项目

设置DATABASE_URL环境变量:

# PostgreSQL示例
export DATABASE_URL='postgres://<用户名>:<密码>@<地址>:<端口>/<数据库名>'

# MySQL示例
export DATABASE_URL='mysql://<用户名>:<密码>@<地址>/<数据库名>'

# SQLite示例
export DATABASE_URL='sqlite:home/<用户名>/path/to/db.sqlite'

4. 执行数据库迁移和静态文件收集

source $VIRTUAL_ENV/bin/postactivate
python manage.py migrate
python manage.py collectstatic
# 如果使用django-compressor
python manage.py compress
# 可选:创建超级用户
python manage.py createsuperuser

5. Redis配置

PythonAnywhere不提供内置Redis服务,建议使用第三方Redis托管服务,如Redis Labs等。

6. 配置Web应用

  1. 在Web标签页点击"Add new web app"
  2. 选择"Manual Config"和与虚拟环境匹配的Python版本
  3. 设置虚拟环境路径
  4. 编辑WSGI配置文件,添加环境变量:
import os
import sys
path = '/home/<用户名>/<项目目录>'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'config.settings.production'
os.environ['DJANGO_SECRET_KEY'] = '<密钥>'
os.environ['DJANGO_ALLOWED_HOSTS'] = '<允许的域名>'
os.environ['DJANGO_ADMIN_URL'] = '<管理后台路径>'
os.environ['MAILGUN_API_KEY'] = '<Mailgun API密钥>'
os.environ['MAILGUN_DOMAIN'] = '<Mailgun域名>'
os.environ['DJANGO_AWS_ACCESS_KEY_ID'] = ''
os.environ['DJANGO_AWS_SECRET_ACCESS_KEY'] = ''
os.environ['DJANGO_AWS_STORAGE_BUCKET_NAME'] = ''
os.environ['DATABASE_URL'] = '<数据库URL>'

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
  1. 点击"Reload"使应用生效

7. 静态文件处理(可选)

如果不想使用Whitenoise或S3,可以使用PythonAnywhere的静态文件服务,需在Web标签页配置与STATIC_URLSTATIC_ROOT匹配的路径。

后续部署流程

项目上线后,更新部署变得非常简单:

workon <虚拟环境名称>
cd <项目目录>
git pull
python manage.py migrate
python manage.py collectstatic
# 如果使用django-compressor
python manage.py compress

然后在Web标签页点击"Reload"即可。

常见问题解决

  1. SSL警告:在设置SSL证书前,可以临时设置DJANGO_SECURE_SSL_REDIRECT为空来禁用安全警告
  2. Python版本问题:如果遇到Python版本兼容性问题,可以尝试调整项目中的Python版本要求
  3. 静态文件404错误:检查Web标签页中的静态文件配置是否正确

最佳实践建议

  1. 为生产环境使用专用数据库用户而非超级用户
  2. 定期备份数据库
  3. 考虑使用自动化部署脚本简化流程
  4. 监控应用性能和资源使用情况

通过以上步骤,您应该能够成功将Cookiecutter Django项目部署到PythonAnywhere平台。如果在部署过程中遇到任何问题,可以参考PythonAnywhere的官方文档或社区支持资源。

cookiecutter-django cookiecutter-django 项目地址: https://gitcode.com/gh_mirrors/coo/cookiecutter-django

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贡子霏Myra

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值