如何在托管服务器上安装Django:完整分步指南
Django 是一个高级 Python 网络框架,旨在鼓励快速开发和简洁、实用的设计。它仍然是构建可扩展、安全和可维护的网络应用程序的最受欢迎的选择之一——从简单的博客到复杂的企业平台。在这份综合指南中,我们将引导您完成在托管服务器上安装 Django 所需的每一步,从准备 Linux 环境到运行您的第一个项目并为生产做准备。
为什么为您的Web应用程序选择Django?
在深入安装过程之前,值得理解为什么Django继续主导Python Web开发领域:
- 功能齐全: Django开箱即用地提供内置身份验证、管理面板、ORM、表单处理和安全功能。
- 可扩展性: Django为Instagram和Pinterest等高流量平台提供支持。
- 安全优先设计: Django默认防止常见漏洞,包括SQL注入、XSS、CSRF和点击劫持。
- 快速开发: 其约定优于配置的理念让开发人员能够更快地交付功能。
- 庞大的生态系统: 数千个可重用包和庞大的社区意味着几乎任何问题的解决方案都已存在。
要充分利用Django,您需要一个可靠的服务器环境。VPS Hosting计划为您提供Django应用程序所需的根访问权限、专用资源和灵活性。
先决条件
在开始安装过程之前,请确保您已准备好以下内容:
- 运行 Linux 发行版的托管服务器(推荐 Ubuntu 20.04/22.04 或 Debian)
- 具有 sudo 权限的服务器 SSH 访问权限
- Python 3.8 或更高版本(推荐 Python 3.10+)
pip(Python 的包管理器)已安装- 对 Linux 命令行的基本熟悉
> 专业提示:如果您运行的是生产 Django 应用程序,请避免使用共享托管环境。VPS 托管计划或专用服务器将为您的应用程序提供所需的控制和性能。
第1步:通过SSH连接到您的服务器
打开您的终端并建立到托管服务器的SSH连接:
ssh username@server_ip将username替换为您的实际系统用户名,将server_ip替换为您服务器的公共IP地址。如果您使用自定义SSH端口或基于密钥的身份验证文件,请相应调整命令:
ssh -i /path/to/your/key.pem username@server_ip连接后,您将获得服务器的命令行界面,可以开始设置过程。
第2步:更新您的系统并安装 Python 和 pip
保持系统包的最新状态是安全性和兼容性的关键第一步。
更新包索引
sudo apt update && sudo apt upgrade -y安装 Python 3 和 pip
大多数现代 Ubuntu 和 Debian 发行版都预装了 Python 3。首先验证您的 Python 版本:
python3 --version如果未安装 Python 3,或您需要 pip,请使用以下命令安装:
sudo apt install python3 python3-pip -y验证安装:
python3 --version
pip3 --version您应该看到版本号,确认两个工具都可用。
第 3 步:设置 Python 虚拟环境
使用虚拟环境不仅仅是推荐做法 — 它被认为是每个 Python 项目的最佳实践。虚拟环境将项目的依赖项与系统范围的 Python 安装以及同一服务器上的其他项目隔离开来,防止版本冲突并保持环境整洁。
安装 virtualenv
sudo pip3 install virtualenv或者,您可以使用 Python 内置的 venv 模块(在 Python 3.3+ 中可用):
sudo apt install python3-venv -y创建项目目录和虚拟环境
导航到要托管项目的目录,或创建一个新目录:
mkdir myproject
cd myproject现在在项目目录中创建虚拟环境:
virtualenv venv或者,使用内置的 venv 模块:
python3 -m venv venv激活虚拟环境
source venv/bin/activate激活后,您的命令提示符将更改以显示虚拟环境名称,例如:
(venv) username@server:~/myproject$在虚拟环境处于活动状态时执行的所有 pip install 命令将仅在此隔离环境中安装包。要随时停用它,只需运行:
deactivate第 4 步:安装 Django
在虚拟环境激活的情况下,使用 pip 安装 Django:
pip install django要安装特定版本的 Django(建议在生产环境中使用以确保兼容性):
pip install django==4.2验证安装:
django-admin --version您应该会看到已安装的 Django 版本号打印到终端。
第5步:创建新的Django项目
使用Django的内置django-admin命令行工具来搭建新项目:
django-admin startproject myproject .> 注意:末尾的点(.)告诉Django在当前目录中创建项目文件,而不是创建嵌套的子目录。这对大多数部署来说是一个更清晰的结构。
您的项目目录现在将包含以下结构:
myproject/
├── manage.py
└── myproject/
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.pymanage.py— 用于与Django项目交互的命令行实用程序。settings.py— 项目的中央配置文件。urls.py— URL路由配置。wsgi.py/asgi.py— WSGI和ASGI兼容Web服务器的入口点。
第 6 步:配置数据库设置
打开 settings.py 文件以配置您的数据库连接:
nano myproject/settings.py默认:SQLite(仅用于开发)
默认情况下,Django 配置为使用 SQLite,适合开发和测试,但不推荐用于生产环境:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}生产选项:PostgreSQL
PostgreSQL 是 Django 生产环境中最常推荐的数据库。首先,安装所需的软件包:
sudo apt install postgresql postgresql-contrib libpq-dev -y
pip install psycopg2-binary然后更新 settings.py 中的 DATABASES 设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}生产选项:MySQL / MariaDB
如果您更喜欢 MySQL 或 MariaDB,请安装所需的适配器:
sudo apt install default-libmysqlclient-dev -y
pip install mysqlclient然后配置 DATABASES 设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '3306',
}
}配置 ALLOWED_HOSTS
在 settings.py 中,还要更新 ALLOWED_HOSTS 设置以包含您服务器的 IP 地址或域名。这是 Django 在非调试模式下提供请求所必需的:
ALLOWED_HOSTS = ['your_server_ip', 'yourdomain.com', 'www.yourdomain.com']第7步:应用数据库迁移
Django使用迁移系统来管理数据库架构更改。运行初始迁移以创建所有必要的数据库表:
python manage.py migrate您将看到列出每个正在应用的迁移的输出。成功的迁移如下所示:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
...创建超级用户(可选但推荐)
创建一个管理员账户以访问Django的内置管理界面:
python manage.py createsuperuser系统将提示您输入用户名、电子邮件地址和密码。
第 8 步:运行 Django 开发服务器
您现在可以启动 Django 的内置开发服务器来验证您的安装:
python manage.py runserver 0.0.0.0:8000此命令将开发服务器绑定到端口 8000 上的所有可用网络接口。打开您的网络浏览器并导航到:
http://your_server_ip:8000您应该看到 Django 欢迎页面 — 一个火箭船,带有消息”安装成功!恭喜!”
要访问管理面板,请导航到:
http://your_server_ip:8000/admin> 重要: Django 的内置开发服务器不适合生产环境。它是单线程的,性能未优化,缺乏安全加固。始终为实时部署使用生产级网络服务器。
第9步:为生产环境准备Django(推荐)
对于生产部署,您需要配置适当的Web服务器堆栈。最常见和推荐的设置是Nginx + Gunicorn。
安装Gunicorn
在虚拟环境激活的情况下:
pip install gunicorn测试Gunicorn是否可以为您的应用程序提供服务:
gunicorn --bind 0.0.0.0:8000 myproject.wsgi安装和配置Nginx
sudo apt install nginx -y创建Nginx服务器块配置文件:
sudo nano /etc/nginx/sites-available/myproject添加以下配置:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/username/myproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx收集静态文件
使用静态文件目录更新settings.py:
STATIC_ROOT = BASE_DIR / 'staticfiles'然后收集所有静态文件:
python manage.py collectstatic使用SSL保护您的应用程序
对于任何生产Django应用程序,HTTPS是必不可少的。SSL证书加密服务器和用户之间传输的数据,保护敏感信息,并且是现代浏览器信任指标所必需的。AlexHost提供与您的托管环境无缝集成的SSL证书。
额外的生产考虑因素
敏感设置的环境变量
永远不要在SECRET_KEY、数据库密码或API密钥中硬编码敏感值settings.py。改用环境变量:
pip install python-decouple在settings.py中:
from decouple import config
SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=False, cast=bool)在生产环境中将DEBUG设置为False
DEBUG = False在生产环境中使用DEBUG = True运行会向潜在攻击者暴露详细的错误页面和敏感配置信息。
配置域名
如果您还没有为Django项目注册域名,通过AlexHost进行域名注册可以轻松快速地将您的域名指向服务器,并包含完整的DNS管理。
为您的 Django 应用选择合适的托管
您选择的托管环境对 Django 应用的性能、可靠性和可扩展性有重大影响。以下是快速指南:
对于大多数进入生产环境的 Django 项目,VPS 托管方案提供了性能、控制和成本效益的理想平衡。您可以获得 root 访问权限、安装任何软件堆栈的能力,以及共享托管无法提供的专用资源。
Django 安装常见问题排查
pip: command not found
手动安装 pip:sudo apt install python3-pip -y
django-admin: command not found
您的虚拟环境可能未激活。运行 source venv/bin/activate 然后重试。
端口 8000 无法访问
检查您服务器的防火墙规则。在使用 UFW 的 Ubuntu 上:
sudo ufw allow 8000
sudo ufw reload数据库连接被拒绝
验证您的数据库服务是否正在运行:
sudo systemctl status postgresql
# or
sudo systemctl status mysqlALLOWED_HOSTS 错误
确保您服务器的 IP 地址或域名列在 settings.py 中的 ALLOWED_HOSTS 设置中。
结论
您现在已成功在托管服务器上安装了Django,配置了虚拟环境,设置了数据库,并学习了如何为生产环境准备应用程序。Django丰富的功能集、强大的安全默认设置和庞大的生态系统使其成为任何规模Web开发项目的绝佳选择。
对于生产部署,始终使用适当的Web服务器堆栈(Nginx + Gunicorn或Apache + uWSGI),设置DEBUG = False,使用SSL证书保护您的应用程序,并选择与应用程序资源需求相匹配的托管环境。无论您是启动新项目还是扩展现有项目,AlexHost的VPS托管和专用服务器计划都能为您的Django应用程序提供所需的性能、可靠性和灵活性。
