返回顶部
首页 > 资讯 > 后端开发 > Python >ubuntu Django + Uwsgi + Nginx 的生产环境部署
  • 407
分享到

ubuntu Django + Uwsgi + Nginx 的生产环境部署

环境Djangoubuntu 2023-01-31 08:01:58 407人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

使用runserver可以使我们的Django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署djanGo,就要多考虑一些问题了。比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下dj

使用runserver可以使我们的Django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署djanGo,就要多考虑一些问题了。比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下django项目生产环境的部署

 

uWSGI是一个WEB服务器,它实现了WSGI协议、uwsgi、Http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。

要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。

  • WSGI是一种通信协议。

  • uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。

  • 而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。

uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(type of infORMation),每一个uwsgi packet前4byte为传输信息类型描述,它与WSGI相比是两样东西。

 

准备条件

默认ubuntu已经有了python3,但是pip没有安装。

apt-get install -y python3-pip

 

安装虚拟环境

pip3 install virtualenv

 

创建虚拟环境

sudo mkdir /virtualenvs
cd /virtualenvs
sudo /usr/local/bin/virtualenv -p /usr/bin/Python3 --no-site-packages venv

安装django

/virtualenvs/venv/bin/pip3 install django

 

创建django项目

root@ubuntu:~# mkdir /www
root@ubuntu:~# cd /www/
root@ubuntu:/www# /virtualenvs/venv/bin/django-admin startproject mysite1
root@ubuntu:/www# cd mysite1/
root@ubuntu:/www/mysite1# /virtualenvs/venv/bin/python manage.py startapp blog
root@ubuntu:/www/mysite1# mkdir static

 

编辑配置文件

root@ubuntu:/www/mysite1# vim mysite1/settings.py

允许监听所有IP,注意:'*'必须用引号包起来

ALLOWED_HOSTS = ['*']

 

原生启动方式

/virtualenvs/venv/bin/python manage.py runserver 0.0.0.0:8000

 

访问页面

http://192.168.10.104:8000/

 

效果如下:

1.png

 

三、基于uwsgi+django的实现

安装uwsgi

/virtualenvs/venv/bin/pip3 install uwsgi

 

使用命令启动uwsgi

先关闭上面启动的Django项目,使用Ctrl+c,就可以取消。

第一步:进入django项目

cd /www/mysite1/

 

第二步:命令测试启动

/virtualenvs/venv/bin/uwsgi --http 0.0.0.0:8000 --file mysite1/wsgi.py --static-map=/static=static

 

参数说明:

--http 这个就和runserver一样指定IP 端口

--file 这个文件就里有一个反射,如果你在调用他的时候没有指定Web Server就使用默认的

    注意:mysite1是一个相对路径。--file它的绝对路径是/www/mysite1/mysite1/wsgi.py

--static 做一个映射,指定静态文件。

 

此时,访问http://192.168.10.104:8000/

如果访问正常,表示项目启动成功

 

uwsgi配置文件

使用Ctrl+c,取消uwsgi启动。

第一步:在django项目同级目录创建uwsgi目录,用于存放相关文件

cd /www/mysite1mkdir uwsgi

 

项目结构如下:

mysite1/
├── blog
│   ├── admin.py
│   ├── apps.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── db.sqlite3
├── manage.py
├── mysite1
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── uwsgi
└── static

 

第二步:进入script目录,创建一个uwsgi.ini文件

cd /www/mysite1/uwsgi
vim uwsgi.ini

 

编辑uwsgi.ini文件内容如下:

[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /www/mysite1
# Django's wsgi file
module          = mysite1.wsgi
# the virtualenv (full path)
home            = /virtualenvs/venv
# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 1
# pid file
pidfile         = /www/mysite1/uwsgi/uwsgi.pid
# The address and port of the monitor
http            = :8000
# clear environment on exit
vacuum          = true
#The process runs in the background and types the log to the specified log file
daemonize       = /www/mysite1/uwsgi/uwsgi.log

 

注意几个很重要的参数

chdir 项目目录,写绝对路径

module Django的 wsgi 文件,表示mysite1/wsgi.py

home 虚拟环境目录,写绝对路径

daemonize 进程在后台运行,并将日志打到指定的日志文件

 

启动django项目

root@ubuntu:~# cd /www/mysite1/
root@ubuntu:/www/mysite1# /virtualenvs/venv/bin/uwsgi --ini uwsgi/uwsgi.ini 
[uWSGI] getting INI configuration from uwsgi/uwsgi.ini

查看文件

root@ubuntu:/www/mysite1# ll uwsgi/
总用量 20
drwxr-xr-x 2 root root 4096 8月  10 11:47 ./
drwxr-xr-x 6 root root 4096 8月  10 11:27 ../
-rw-r--r-- 1 root root  717 8月  10 11:41 uwsgi.ini
-rw-r----- 1 root root 2021 8月  10 11:47 uwsgi.log
-rw-rw-rw- 1 root root    6 8月  10 11:47 uwsgi.pid

 

刷新页面,查看访问是否正常。

 

uwsgi 常用的启动命令

uwsgi --ini uwsgi.ini # 启动
uwsgi --reload uwsgi.pid # 重启
uwsgi --stop uwsgi.pid # 关闭

 

安装nginx

apt-get install -y nginx

 

编辑配置文件

cd /etc/nginx/sites-enabled
vim mysite1.conf

 

内容如下:

server {
    listen 8000;
    server_name localhost;

    # 指定项目路径uwsgi
    location / {
        include uwsgi_params; # 导入一个Nginx模块他是用来和uWSGI进行通讯的
        uwsgi_connect_timeout 30; # 设置连接uWSGI超时时间
        uwsgi_pass unix:/www/mysite1/uwsgi/mysite1.sock; # 指定uwsgi的sock文件所有动态请求就会直接丢给他
    }

    # 指定静态文件路径
    location /static/ {
        alias /www/mysite1/static/;
    }

}

 

更改uwsgi配置

改为Socket方式

cd /www/mysite1/uwsgi
vim uwsgi.ini

内容如下:

[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /www/mysite1
# Django's wsgi file
module          = mysite1.wsgi
# the virtualenv (full path)
home            = /virtualenvs/venv
# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 1
# pid file
pidfile         = /www/mysite1/uwsgi/uwsgi.pid
# socket file path (full path)
socket          = /www/mysite1/uwsgi/mysite1.sock
# clear environment on exit
vacuum          = true
#The process runs in the background and types the log to the specified log file
daemonize       = /www/mysite1/uwsgi/uwsgi.log

 

重新加载uwsgi

/virtualenvs/venv/bin/uwsgi --reload uwsgi.pid

 

加载nginx配置文件

nginx -s reload

 

查看端口,8000已经为nginx接管了

root@ubuntu:/etc/nginx/sites-enabled# netstat -anpt|grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      18895/nginx -g daem
tcp        0      0 192.168.10.102:8000     192.168.10.105:52556    ESTABLISHED 19135/nginx: worker
tcp        0      0 192.168.10.102:8000     192.168.10.105:52557    ESTABLISHED 19135/nginx: worker

 

刷新页面,效果同上!

 

进入目录 /www/mysite1/static ,放一张图片 girl.jpg

访问图片

http://192.168.10.102:8000/static/girl.jpg

 

效果如下:

1.png

 

 

本文参考链接:

http://www.py3study.com/Article/details/id/323.html

https://www.jianshu.com/p/07458e99198a


--结束END--

本文标题: ubuntu Django + Uwsgi + Nginx 的生产环境部署

本文链接: https://lsjlt.com/news/193589.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ubuntu Django + Uwsgi + Nginx 的生产环境部署
    使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了。比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下dj...
    99+
    2023-01-31
    环境 Django ubuntu
  • Django + Uwsgi + Nginx 的生产环境部署
    使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了。比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下dj...
    99+
    2023-01-30
    环境 Django Uwsgi
  • django生产环境搭建(uWSGI+django+nginx+python+MySQL)
    目录1、系统环境,必要知识2、安装python3.6.53、安装Django4、安装uWSGI5、安装nginx6、MySQL安装配置7、编写一个简单的博客系统1、系统环境,必要知识 #cat /etc/red...
    99+
    2022-05-18
    django生产环境搭建 django生产环境 uWSGI django nginx python MySQL
  • django+uwsgi+nginx部署
    django+uwsgi+nginx部署   1.介绍:   在网上看了很多教程,但自己部署了很久都没有成功,这篇博文记录自己所踩过得坑。   2.环境: 1 Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-13...
    99+
    2023-01-30
    django uwsgi nginx
  • nginx+uwsgi部署django项
    1、django项目部署前需要生成admin的静态资源文件 (1)生成admin的静态资源文件   # 关闭debug模型 DEBUG = False # 允许所有域名访问 ALLOWED_HOSTS = ['*'] # 静态资源路径 ...
    99+
    2023-01-31
    nginx uwsgi django
  • Django+Nginx+uwsgi服务器部署
    一、安装 uwsgi uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议,旨在提供专业的 Python web应用发布和开发。Nginx中HttpUwsg...
    99+
    2024-04-02
  • 生产环境中部署:zabbix3.2.1 (ubuntu系统)
    一、配置角色IP主机名虚拟IPZabbixserver主节点10.36.1.55Compute5110.36.1.101Zabbixserver从节点10.36.1.56Compute52mysql数据库主...
    99+
    2024-04-02
  • 如何部署Django应用到生产环境
    部署Django 应用到生产环境通常需要以下步骤: 配置服务器:选择合适的服务器,如Nginx或Apache,并安装相关软件。 设...
    99+
    2024-04-02
  • nodejs生产环境部署vue
    Node.js 生产环境部署 Vue在开发 Vue.js 应用程序时,部署您的应用程序是至关重要的一步。本文将介绍如何在生产环境中部署一个 Vue.js 应用程序,使用 Node.js 作为运行时环境。在本文中,我们将深入了解如何将应用程序...
    99+
    2023-05-14
  • centos+nginx+uwsgi部署django项目上线
    目录Python安装django相关库的安装nginx安装&配置(处理静态请求和代理动态请求到uwsgi)uwsgi安装&配置标题关闭setting.py的DEBUG...
    99+
    2024-04-02
  • Centos8下django项目部署 nginx+uwsgi的教程
    1.虚拟环境virtualenv安装 1.安装virtualenv  pip3 install virtualenv 2.创建目录,把项目文件传过来  mkdir My  cd M...
    99+
    2022-06-04
    Centos8 django项目部署 nginx uwsgi django项目部署
  • Nginx+uwsgi+Django部署代码怎么编写
    Nginx+uwsgi+Django部署代码怎么编写,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Nginx+uwsgi+Django部署代码安装uwsgi1....
    99+
    2023-06-04
  • 生产环境部署python代码(djang
    基础环境不做介绍,在django开发web项目完成后,一直使用django自带的服务器进行调试:python manage.py runserver 0.0.0.0:8080 这个服务器在开发时使用,实际生产则不能满足,要使用uwsgi把动...
    99+
    2023-01-31
    代码 环境 python
  • 聊聊Django+uwsgi+nginx服务器部署问题
    目录准备工作安装anaconda:安装需要的组件创建django程序(本地)使用文件传输工具将django程序传输到服务器部署工作配置uwsgi配置nginx配置ssl证书以提供ht...
    99+
    2024-04-02
  • springboot生产环境热部署怎么实现
    在Spring Boot中,可以通过使用Spring Boot DevTools库来实现生产环境的热部署。下面是一些实现的步骤: ...
    99+
    2023-10-25
    springboot
  • 【云原生 • Docker】mysql、tomcat、nginx、redis 环境部署
    注意在应用部署之前,docker 服务必须是开启状态 systemctl start docker。 目录 一、MySQL 部署 二、Tomcat 部署 三、Nginx 部署 四、Redis 部署 一、MySQL 部署 1. 拉取 My...
    99+
    2023-10-03
    云原生 docker tomcat redis mysql
  • nodejs生产环境部署vue的方法是什么
    这篇“nodejs生产环境部署vue的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“nodejs生产环境部署vue...
    99+
    2023-07-06
  • java生产环境热部署的方法是什么
    Java生产环境热部署是指在不停止应用程序服务的情况下更新应用程序代码或配置文件,使新的代码或配置生效。以下是几种常见的Java生产...
    99+
    2024-04-02
  • 一文教会你用nginx+uwsgi部署自己的django项目
    目录第一步:换源第二步:安装相关包1.安装python32.安装openssh-server和net-tools第三步:写入测试文件并测试运行1.写入测试文件2.测试运行第四步:引入...
    99+
    2024-04-02
  • Spinnaker生产环境如何安装部署监控
    小编给大家分享一下Spinnaker生产环境如何安装部署监控,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 架构分析Haly...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作