-
准备工作
- 服务器环境选择与配置
- 服务器类型:可以选择物理服务器、虚拟专用服务器(VPS)或者云服务器。常见的云服务器提供商有亚马逊AWS、阿里云、腾讯云等。选择服务器时要考虑服务器的配置(如CPU、内存、存储)是否满足项目需求。
- 操作系统安装与更新:对于大多数Django项目,Linux操作系统是首选。例如Ubuntu、CentOS等。在服务器上安装操作系统后,需要及时更新系统软件包,以确保系统安全和稳定。以Ubuntu为例,可以通过以下命令进行更新:
sudo apt-get update sudo apt-get upgrade
- 安装必要软件包
- Python和虚拟环境:确保服务器上安装了合适版本的Python。一般建议使用Python 3。然后创建虚拟环境来隔离项目依赖。例如,在Ubuntu上安装Python 3和
virtualenv
工具:
sudo apt-get install python3 python3 - pip pip3 install virtualenv
- Web服务器软件(如Nginx或Apache):Nginx是一个高性能的HTTP和反向代理服务器,常用于Django项目的部署。以Nginx为例,在Ubuntu上安装的命令是:
sudo apt-get install nginx
- 数据库软件(如MySQL、PostgreSQL等):根据项目需求选择数据库。以MySQL为例,在Ubuntu上安装的命令如下:
sudo apt-get install mysql - server
- 安装过程中需要设置数据库的root用户密码等相关参数。
- Python和虚拟环境:确保服务器上安装了合适版本的Python。一般建议使用Python 3。然后创建虚拟环境来隔离项目依赖。例如,在Ubuntu上安装Python 3和
- 服务器环境选择与配置
-
项目部署步骤
- 代码上传与安装依赖
- 代码传输到服务器:可以使用
scp
(安全复制)或rsync
工具将本地Django项目代码上传到服务器。例如,使用scp
将本地项目目录my_django_project
上传到服务器的/home/user/projects/
目录下:
scp -r my_django_project user@your_server_ip:/home/user/projects/
- 在服务器上创建虚拟环境并激活:进入服务器上的项目目录,创建虚拟环境并激活。例如:
cd /home/user/projects/my_django_project virtualenv venv - p python3 source venv/bin/activate
- 安装项目依赖:使用
pip
安装项目所需的依赖包。如果项目有requirements.txt
文件,可以通过以下命令安装:
pip install - r requirements.txt
- 代码传输到服务器:可以使用
- 配置数据库连接
- 在Django项目的
settings.py
文件中,修改数据库连接配置。以MySQL为例,如果在本地开发时使用的是SQLite,现在要切换到MySQL,配置如下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'your_database_name', 'USER': 'your_database_user', 'PASSWORD': 'your_database_password', 'HOST': 'localhost', 'PORT': '3306', } }
- 需要将
your_database_name
、your_database_user
和your_database_password
替换为实际的数据库名称、用户和密码。
- 在Django项目的
- 配置Web服务器(以Nginx为例)
- 配置Nginx反向代理:在Nginx的配置文件(通常是
/etc/nginx/sites - available/
目录下的文件)中创建一个新的配置文件用于Django项目。例如,创建一个名为my_django_project.conf
的文件,内容如下:
server { listen 80; server_name your_domain_name; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header X - Forwarded - Proxied - Proto $scheme; proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for; } }
- 这里
server_name
需要替换为实际的域名,proxy_pass
指向运行Django项目的本地地址(通常是127.0.0.1:8000
)。配置好后,创建一个软链接将配置文件添加到/etc/nginx/sites - enabled/
目录下:
sudo ln - s /etc/nginx/sites - available/my_django_project.conf /etc/nginx/sites - enabled/
- 启动Django项目(使用gunicorn或uwsgi):以gunicorn为例,在服务器上的虚拟环境中安装gunicorn:
pip install gunicorn
- 然后启动Django项目:
gunicorn my_django_project.wsgi:application - b 127.0.0.1:8000
- 这里
my_django_project.wsgi:application
是Django项目的WSGI应用入口,- b 127.0.0.1:8000
指定了绑定的本地地址和端口。
- 配置Nginx反向代理:在Nginx的配置文件(通常是
- 代码上传与安装依赖
-
项目优化与安全设置
- 静态文件配置与部署
- 收集静态文件:在Django项目的
settings.py
文件中,设置STATIC_ROOT
为服务器上的一个目录,用于收集静态文件。例如:
STATIC_ROOT = '/home/user/projects/my_django_project/staticfiles'
- 然后在服务器上的虚拟环境中运行
python manage.py collectstatic
命令,将项目中的静态文件收集到STATIC_ROOT
指定的目录。 - 配置Nginx处理静态文件:在Nginx配置文件中,添加一个
location
块来处理静态文件请求。例如:
server { listen 80; server_name your_domain_name; location /static/ { alias /home/user/projects/my_django_project/staticfiles/; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header X - Forwarded - Proxied - Proto $scheme; proxy_set_header X - Forwarded - For $proxy_add_x_forwarded_for; } }
- 这样,当Nginx收到以
/static/
开头的请求时,会直接从指定的静态文件目录中提供文件,而不是将请求转发到Django应用。
- 收集静态文件:在Django项目的
- 安全设置(如防火墙、SSL证书等)
- 防火墙配置(以ufw为例):在Ubuntu服务器上可以使用
ufw
(Uncomplicated Firewall)来设置防火墙规则。例如,允许HTTP和HTTPS请求:
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
- 配置SSL证书(使用Let’s Encrypt):可以使用
certbot
工具来获取和配置Let’s Encrypt的免费SSL证书。在服务器上安装certbot
和python3 - certbot - nginx
(如果使用Nginx):
sudo apt-get install certbot python3 - certbot - nginx
- 然后运行
certbot
命令来获取证书并自动配置Nginx:
sudo certbot --nginx -d your_domain_name
- 这会为你的域名启用HTTPS,提高网站的安全性。
- 防火墙配置(以ufw为例):在Ubuntu服务器上可以使用
- 静态文件配置与部署
服务器部署Django项目
最新推荐文章于 2025-06-04 10:23:56 发布