Python Django 如何打包部署Linux

简介

在实际开发中,我们通常会使用 Python 的 Django 框架来开发 Web 应用。在开发完成后,我们需要将应用部署到 Linux 服务器上,以供用户访问。本文将详细介绍如何将 Python Django 应用打包并部署到 Linux 环境中。

打包 Django 应用

在部署 Django 应用之前,我们首先需要将应用打包为可执行文件。打包 Django 应用的常用工具是 pyinstaller,它可以将 Python 应用打包成可执行文件,不需要用户安装 Python 解释器。

安装 pyinstaller

在 Linux 系统中,我们可以使用 pip 命令来安装 pyinstaller:

pip install pyinstaller

创建打包配置文件

在 Django 项目的根目录下创建一个名为 pyinstaller.spec 的文件,用于配置打包过程。在文件中添加以下内容:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

datas = [
    ('path/to/media', 'media'),
    ('path/to/templates', 'templates'),
]

a = Analysis(['manage.py'],
             pathex=['path/to/django_project'],
             binaries=[],
             datas=datas,
             ...
             )
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
...

datas 中指定需要一同打包的静态文件和模板文件的路径,以及打包后的文件目录结构。

执行打包命令

在终端中进入 Django 项目的根目录,执行以下命令打包项目:

pyinstaller pyinstaller.spec

执行完毕后,在 Django 项目的根目录下会生成一个 dist 目录,其中包含了可执行文件和其他必要的依赖文件。

部署 Django 应用

在将 Django 应用部署到 Linux 环境之前,我们需要先安装相关的软件和依赖。

安装 Nginx 和 uWSGI

首先,我们需要安装 Nginx 和 uWSGI 作为 Django 应用的 Web 服务器和应用服务器。在终端中执行以下命令:

sudo apt-get install nginx uwsgi uwsgi-plugin-python3

配置 Nginx

/etc/nginx/sites-available 目录下创建一个名为 project_name 的文件,用于配置 Nginx。在文件中添加以下内容:

server {
    listen 80;
    server_name your_domain.com;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/path/to/your/project.sock;
    }

    location /static/ {
        alias /path/to/your/static/files/;
    }
}

将其中的 your_domain.com 替换为你的域名,将 /path/to/your/project.sock 替换为你的项目的 UNIX Socket 路径,将 /path/to/your/static/files/ 替换为你的静态文件目录。

然后,在终端中执行以下命令启用该配置文件并重启 Nginx 服务:

sudo ln -s /etc/nginx/sites-available/project_name /etc/nginx/sites-enabled/
sudo service nginx restart

配置 uWSGI

在 Django 项目的根目录下创建一个名为 uwsgi.ini 的文件,用于配置 uWSGI。在文件中添加以下内容:

[uwsgi]
chdir = /path/to/your/project
module = project_name.wsgi:application
master = true
processes = 5
socket = /path/to/your/project.sock
chmod-socket = 664
vacuum = true

将其中的 /path/to/your/project 替换为你的项目的路径,将 project_name 替换为你的项目的名称,将 /path/to/your/project.sock 替换为你的项目的 UNIX Socket 路径。

启动 uWSGI

在终端中执行以下命令启动 uWSGI 服务器:

uwsgi --ini uwsgi.ini

验证部署结果

完成上述步骤后,我们可以通过访问服务器的 IP 地址或域名来验证部署结果。在浏览器中输入 ` Django 应用,则说明部