基于ubuntu如何通过Nginx部署Django

发布时间:2022-10-14 13:42:54 作者:iii
来源:亿速云 阅读:121

基于Ubuntu如何通过Nginx部署Django

目录

  1. 引言
  2. 环境准备
  3. 创建Django项目
  4. 安装和配置Gunicorn
  5. 安装和配置Nginx
  6. 配置静态文件和媒体文件
  7. ssl证书">配置SSL证书
  8. 测试和上线
  9. 常见问题及解决方案
  10. 总结

引言

在现代Web开发中,Django高效、灵活的Python Web框架,被广泛应用于各种规模的Web应用开发。然而,开发完成后,如何将Django项目部署到生产环境中,是一个需要仔细考虑的问题。本文将详细介绍如何在Ubuntu操作系统上,通过Nginx和Gunicorn来部署Django项目。

环境准备

2.1 安装Ubuntu

首先,确保你已经安装了Ubuntu操作系统。如果还没有安装,可以从Ubuntu官网下载最新的LTS版本,并按照官方指南进行安装。

2.2 更新系统

在安装完Ubuntu后,首先需要更新系统以确保所有软件包都是最新的。打开终端并运行以下命令:

sudo apt update
sudo apt upgrade

2.3 安装Python和Pip

Django是基于Python的Web框架,因此需要安装Python和Pip。Ubuntu通常预装了Python,但为了确保版本是最新的,可以手动安装:

sudo apt install python3 python3-pip

2.4 安装虚拟环境

为了隔离项目的依赖,建议使用虚拟环境。安装virtualenvvirtualenvwrapper

sudo pip3 install virtualenv virtualenvwrapper

然后,将以下内容添加到~/.bashrc文件中:

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

保存并退出后,运行以下命令使配置生效:

source ~/.bashrc

创建Django项目

3.1 安装Django

首先,创建一个虚拟环境并激活它:

mkvirtualenv mydjangoenv
workon mydjangoenv

然后,在虚拟环境中安装Django:

pip install django

3.2 创建Django项目

使用Django命令行工具创建一个新的Django项目:

django-admin startproject mydjangoproject
cd mydjangoproject

3.3 配置Django项目

settings.py文件中,进行一些基本配置:

ALLOWED_HOSTS = ['yourdomain.com', 'localhost', '127.0.0.1']
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

安装和配置Gunicorn

4.1 安装Gunicorn

Gunicorn是一个Python WSGI HTTP服务器,用于在生产环境中运行Django应用。在虚拟环境中安装Gunicorn:

pip install gunicorn

4.2 配置Gunicorn

创建一个Gunicorn配置文件gunicorn_config.py

import multiprocessing

bind = "127.0.0.1:8000"
workers = multiprocessing.cpu_count() * 2 + 1

然后,使用以下命令启动Gunicorn:

gunicorn mydjangoproject.wsgi:application --config gunicorn_config.py

安装和配置Nginx

5.1 安装Nginx

Nginx是一个高性能的HTTP和反向代理服务器。安装Nginx:

sudo apt install nginx

5.2 配置Nginx

创建一个Nginx配置文件/etc/nginx/sites-available/mydjangoproject

server {
    listen 80;
    server_name yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

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

    location /media/ {
        alias /path/to/your/mydjangoproject/media/;
    }
}

然后,创建一个符号链接到sites-enabled目录:

sudo ln -s /etc/nginx/sites-available/mydjangoproject /etc/nginx/sites-enabled/

最后,重启Nginx:

sudo systemctl restart nginx

配置静态文件和媒体文件

6.1 配置静态文件

在Django项目中,运行以下命令收集静态文件:

python manage.py collectstatic

6.2 配置媒体文件

确保MEDIA_ROOT路径存在,并且Nginx配置文件中正确指向了该路径。

配置SSL证书

7.1 安装Certbot

Certbot是一个免费的SSL证书管理工具。安装Certbot:

sudo apt install certbot python3-certbot-nginx

7.2 配置SSL证书

运行以下命令为你的域名配置SSL证书:

sudo certbot --nginx -d yourdomain.com

Certbot会自动修改Nginx配置文件,并设置自动续期。

测试和上线

8.1 测试Django项目

在浏览器中访问http://yourdomain.com,确保Django项目正常运行。

8.2 上线Django项目

如果一切正常,可以将Gunicorn配置为系统服务,以便在系统启动时自动运行。创建一个系统服务文件/etc/systemd/system/gunicorn.service

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=yourusername
Group=www-data
WorkingDirectory=/path/to/your/mydjangoproject
ExecStart=/path/to/your/mydjangoenv/bin/gunicorn --config /path/to/your/gunicorn_config.py mydjangoproject.wsgi:application

[Install]
WantedBy=multi-user.target

然后,启动并启用服务:

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

常见问题及解决方案

  1. Nginx无法启动:检查Nginx配置文件是否有语法错误,使用nginx -t命令进行测试。
  2. Gunicorn无法启动:检查Gunicorn配置文件和服务文件,确保路径和权限正确。
  3. 静态文件无法加载:确保STATIC_ROOT路径正确,并且Nginx配置文件中正确指向了该路径。

总结

通过本文的详细步骤,你应该能够在Ubuntu操作系统上,通过Nginx和Gunicorn成功部署Django项目。从环境准备到最终上线,每一步都至关重要。希望本文能帮助你顺利完成Django项目的部署,并在生产环境中稳定运行。

推荐阅读:
  1. django+nginx+uwsgi部署web站点
  2. django+nginx环境部署

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ubuntu nginx django

上一篇:Ubuntu上怎么安装并配置Nginx

下一篇:wps字体怎么上下居中

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》