1. 云服务器基础配置
1.1 服务器准备与初始化
在开始搭建Python全栈服务前,我们需要先准备一台云服务器。我推荐使用Ubuntu 22.04 LTS作为操作系统,这是目前最稳定且长期支持的版本。以下是服务器初始化的详细步骤:
首先,登录到新创建的云服务器后,建议立即执行以下安全措施:
- 修改root密码(如果使用密码登录)
- 创建专用部署用户(避免直接使用root)
- 设置SSH密钥登录(禁用密码登录更安全)
bash复制# 创建部署专用用户
sudo adduser deployer
sudo usermod -aG sudo deployer
# 切换到新用户
su - deployer
# 更新系统软件包(重要安全补丁)
sudo apt update && sudo apt upgrade -y
# 安装基础工具集
sudo apt install -y curl wget git vim tmux htop
提示:使用tmux可以在SSH会话断开后保持进程运行,这对长时间运行的任务特别有用。安装后只需输入
tmux命令即可启动新会话。
1.2 Python环境配置详解
Python是全栈开发的核心,我们需要安装特定版本的Python并配置隔离的虚拟环境。以下是详细步骤和原理说明:
bash复制# 安装Python 3.11(Ubuntu 22.04默认是3.10,我们需要新版)
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:deadsnakes/ppa
sudo apt update
sudo apt install -y python3.11 python3.11-venv python3.11-dev
# 安装构建依赖(编译Python包需要)
sudo apt install -y build-essential libssl-dev libffi-dev \
libxml2-dev libxslt1-dev zlib1g-dev libpq-dev \
libjpeg-dev libfreetype6-dev libcurl4-openssl-dev
# 设置Python版本优先级
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1
sudo update-alternatives --config python3
# 安装pip并升级到最新
curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11
python3.11 -m pip install --upgrade pip
为什么选择Python 3.11+?
- 更快的执行速度(相比3.10有10-60%的性能提升)
- 更好的错误信息提示
- 新特性如异常组和except*语法
- 更长的支持周期
虚拟环境配置建议:
bash复制# 创建项目目录
mkdir -p ~/projects/myapp && cd ~/projects/myapp
# 创建专用虚拟环境(使用Python 3.11)
python3.11 -m venv venv
# 激活虚拟环境的正确方式
source venv/bin/activate # 注意不是直接运行activate脚本
# 验证Python版本
python --version # 应显示Python 3.11.x
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 后端服务搭建(Django深度配置)
2.1 Django项目初始化与架构设计
Django是一个功能强大的Web框架,以下是创建生产级项目的专业做法:
bash复制# 在激活的虚拟环境中安装Django和相关包
pip install django==4.2 djangorestframework==3.14
pip install psycopg2-binary python-decouple django-cors-headers
# 创建Django项目(注意结尾的点表示当前目录)
django-admin startproject backend .
# 创建API应用(推荐分离核心业务)
django-admin startapp api
# 生成requirements.txt(精确版本控制)
pip freeze > requirements.txt
项目目录结构设计建议:
code复制myapp/
├── venv/ # 虚拟环境
├── backend/ # Django项目核心
│ ├── settings.py # 主配置
│ ├── urls.py # 路由
│ └── wsgi.py # WSGI入口
├── api/ # API应用
│ ├── models.py # 数据模型
│ ├── serializers.py # DRF序列化
│ └── views.py # 视图逻辑
├── .env # 环境变量
└── requirements.txt # 依赖清单
2.2 生产环境配置要点
settings.py是Django的核心配置文件,以下是关键生产配置:
python复制# backend/settings.py
import os
from pathlib import Path
from decouple import config, Csv
BASE_DIR = Path(__file__).resolve().parent.parent
# 安全配置
SECRET_KEY = config('SECRET_KEY') # 必须从环境变量获取
DEBUG = config('DEBUG', default=False, cast=bool)
ALLOWED_HOSTS = config('ALLOWED_HOSTS', cast=Csv())
# 数据库配置(PostgreSQL)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': config('DB_NAME'),
'USER': config('DB_USER'),
'PASSWORD': config('DB_PASSWORD'),
'HOST': config('DB_HOST', default='localhost'),
'PORT': config('DB_PORT', default='5432'),
'OPTIONS': {
'connect_timeout': 5, # 连接超时设置
'sslmode': 'require' if config('DB_SSL', default=False, cast=bool) else 'disable'
}
}
}
# 静态文件配置
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')
# 安全中间件
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', # 静态文件优化
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware', # CORS支持
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
# CORS设置(生产环境应严格限制)
CORS_ALLOWED_ORIGINS = config('CORS_ALLOWED_ORIGINS', cast=Csv())
CSRF_TRUSTED_ORIGINS = config('CSRF_TRUSTED_ORIGINS', cast=Csv())
# 缓存配置(生产环境推荐Redis)
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.redis.RedisCache',
'LOCATION': config('REDIS_URL', default='redis://localhost:6379/0'),
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
}
}
# 日志配置
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG' if DEBUG else 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, 'logs/django.log'),
'maxBytes': 10
