Python 关于在ubuntu部署Django项目

  Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式。

  在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求。nginx把所有静态请求自己来处理(这是NGINX的强项)。然后,NGINX将所有非静态请求通过uwsgi传递给Django,由Django来进行处理,从而完成一次WEB请求。

  可见,uwsgi的作用就类似一个桥接器。起到桥梁的作用。

  Linux的强项是用来做服务器,所以,下面的整个部署过程我们选择在Ubuntu下完成。

一、安装Nginx

  Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

  Nginx同样为当前非常流行的web服务器。利用其部署Django,我们在此也做简单的介绍。

[email protected]:/$ sudo apt-get install nginx  # 安装nginx

  启动nginx:

[email protected]:~$ /etc/init.d/nginx start 

[email protected]:~$ /etc/init.d/nginx stop

[email protected]:~$ /etc/init.d/nginx restart 

  配置nginx

nginx默认会读取/etc/nginx/sites-enabled/default文件中的配置:

server {
        listen 8080 default_server;
        listen [::]:8080 default_server;
        ...........

输入你的ubuntu ip即可访问, 正常是127.0.0.1:80

如果出现上图,则说明Nginx已经安装配置成功。

二、安装uwsgi

[email protected]:~$ pip3 install uwsgi

测试uwsgi,创建test.py文件:

def application(env, start_response):
    start_response(‘200 OK‘, [(‘Content-Type‘,‘text/html‘)])
    return [b"Hello World"]

通过uwsgi运行该文件

[email protected]:~$ uwsgi --http:8001 --wsgi-file test.py

接下来配置Django与uswgi连接。我的Django项目位置为:

uwsgi支持通过配置文件的方式启动,可以接受更多的参数,高度可定制。我们在Django项目的同名目录下新建ini文件default_app_uwsgi.ini

# Django-related settings

socket = :8001

# the base directory (full path)
chdir           = /usr/app/DataAnalysis

# Django s wsgi file
module          = /DataAnalysis.wsgi

# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 4

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

其中chdir是django项目的根目录、module是相对路径指向项目同名目录下的wsgi.py文件

接下来,切换到Django项目目录下,通过uwsgi命令读取default_app_uwsgi.ini文件启动项目。

[email protected]:/usr/app/DataAnalysis/DataAnalysis$ uwsgi --ini default_app_uwsgi.ini
[uWSGI] getting INI configuration from default_app_uwsgi.ini
*** Starting uWSGI 2.0.17 (64bit) on [Tue Jun  5 13:42:55 2018] ***
compiled with version: 5.4.0 20160609 on 24 May 2018 07:57:22
os: Linux-4.10.0-28-generic #32~16.04.2-Ubuntu SMP Thu Jul 20 10:19:48 UTC 2017
nodename: WUZLX004
machine: x86_64
clock source: unix
detected number of CPU cores: 8
current working directory: /usr/app/DataAnalysis/DataAnalysis
detected binary path: /home/wuzlxadmin/.local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
chdir() to /usr/app/DataAnalysis
your processes number limit is 15706
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address :8001 fd 3
Python version: 3.5.2 (default, Nov 23 2017, 16:37:01)  [GCC 5.4.0 20160609]
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x1d6b0d0
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 364520 bytes (355 KB) for 4 cores
*** Operational MODE: preforking ***
ImportError: No module named ‘/DataAnalysis‘
unable to load app 0 (mountpoint=‘‘) (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 29756)
spawned uWSGI worker 1 (pid: 29757, cores: 1)
spawned uWSGI worker 2 (pid: 29758, cores: 1)
spawned uWSGI worker 3 (pid: 29759, cores: 1)
spawned uWSGI worker 4 (pid: 29760, cores: 1)

再接下来要做的就是修改nginx.conf配置文件。打开/etc/nginx/nginx.conf文件,添加如下内容。

server {
    listen         8081;
    server_name    10.202.143.240
    charset UTF-8;
    access_log      /var/log/nginx/DataAnalysis_access.log;
    error_log       /var/log/nginx/DataAnalysis_error.log;

    client_max_body_size 75M;

    location / {
        include uwsgi_params;
        uwsgi_pass 10.202.143.240:8001;
        uwsgi_read_timeout 2;
    }
    location /static {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /usr/app/DataAnalysis/static/;
     }
 }

listen 指定的是nginx代理uwsgi对外的端口号。

uwsgi_pass 10.202.143.240:8001;指的本机IP的端口号与ini文件配置中的必须一致。

重启nginx。

PS:

操作/etc/nginx/nginx.conf文件的时候,将下面这一句的注释去掉。

server_names_hash_bucket_size 64;

另外注意一下  新加的server的位置问题:

http{
    server{}
}

测试nginx的configuration是否ok

nginx -t -c /etc/nginx/nginx.conf

原文地址:https://www.cnblogs.com/wuzdandz/p/9139245.html

时间: 2024-07-31 16:00:25

Python 关于在ubuntu部署Django项目的相关文章

ubuntu部署django详细教程

教程使用的软件版本:Ubuntu 18.04.1 LTS,django2.0,Python 3.6.5.nginx-1.13.7.uWSGI (2.0.17.1),Ubuntu是纯净的,全新的.下面我们开始来部署. 文章转自django中文网:Ubuntu部署Django项目方法详解 如果觉得看文字没意思,想看视频教程的,请点击这里:Django项目部署视频教程 一.更新操作系统和安装依赖包 #更新操作系统软件库 sudo apt-get update sudo apt-get upgrade

基于nginx和uWSGI在Ubuntu系统上部署Django项目

1. nginx1.1 安装sudo apt-get install nginx1.2启动.停止和重启sudo /etc/init.d/nginx startsudo /etc/init.d/nginx stopsudo /etc/init.d/nginx restart或者sudo service nginx startsudo service nginx stopsudo service nginx restart2. uWSGI安装用python的pip安装最简单:apt-get inst

部署Django项目Nginx + uwsgi

记录一下使用Nginx + uwsgi部署Django项目 关于域名和端口 在这个教程中,我们将假设你的域名为 example.com .用你自己的FQDN或者IP地址来代替. 从头到尾,我们将使用8000端口作为web服务器的公开端口,就像Django runserver默认的那样.当然,你可以使用任何你想要的端口,但是我已经选了这个,因此,它不会与web服务器可能已经选择的任何端口冲突. 基本的uWSGI安装和配置 把uWSGI安装到你的virtualenv中 pip install uws

Linux 下部署Django项目

Linux 下部署Django项目 说明:本文所使用的环境为CentOS 6+Python2.7+Django1.11 安装Django.Nginx和uWSGI 1.确定已经安装了2.7版本的Python: 2.安装python-devel yum install python-devel 3.安装uwsgi pip install uwsgi 测试uwsgi是否能正常工作 1.新建一个index.py: # index.py def application(env, start_respons

Docker 部署Django项目

使用docker部署django项目也很简单,挺不错,分享下 环境 默认你已安装好docker环境 django项目大概结构 (p3s) [[email protected]]# tree opsweb opsweb ├── apps ├── logs ├── manage.py ├── media ├── opsweb ├── README.md ├── requirements.txt └── static 编写Dockerfile 这里指定 Python 版本为docker官方提供的 "0

使用Nginx+uWSGI部署Django项目

1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgi ln -s /usr/local/python3/bin/uwsgi /usr/local/bin/uwsgi #建立软链接 uwsgi --version #检查安装成功 3.基于uwsgi+django项目部署 django项目目录结构(orange_manage为app): uwsgi --ht

docker部署django项目、mysql主从搭建、django实现读写分离

目录 docker部署django项目 1.1 基于python基础镜像 将本地django项目打包并发到远程服务器上 将服务器上的.zip django项目解压 部署的具体流程 1.2 基于dockerfile 2 mysql主从搭建 3 django实现读写分离 我们使用python镜像源构建的出的容器,是一个纯净的debian系统下的python环境,在容器内部要想安装vim.nginx等,就不能使用yum install ...了,需要使用apt-get源.首先更新apt-get源,使用

apache部署django项目时出现错误

apache部署Django项目时出现错误 Permission denied: mod_wsgi (pid=2081): Unable to connect to WSGI daemon process 'autotester' on '/etc/httpd/logs/wsgi.2076.0.1.sock' after multiple attempts 可在apache配置文件或者wsgi.conf中添加 WSGISocketPrefix /var/run/

教你在裸机centos7系统中部署django项目

概要 本文用一台安装了centos7.5系统的裸奔的Linux机器(当然是虚拟机)详细讲解部署django项目的过程. 配置yum源 至于什么是yum源大家请自行百度,本人想用阿里云的yum源,因此需要在裸机上配置一下: 进入yum源的目录 cd /etc/yum.repos.d/ 查看yum源文件 ls -l 配置阿里云yum源 1.好习惯,备份yum源 mkdir repo_bak mv *.repo repo_bak/ 2.下载阿里云repo文件 wget http://mirrors.a