ubantu+nginx+uwsgi+django部署

1.更新ubantu的apt

apt-get update

必要时候更新系统:      apt-get upgrade

2.远程连接服务器

  ssh 用户名@ip

  上传代码 :        scp 本地文件夹/文件   用户名@ip:远程存放位置

3.安装数据库

   apt-get install mysql-server mysql-client libmysqlclient-dev

(ps:如果不安装libmysqlclent-dev,接下来安装mysql-python可能会报错)

安装完成以后通过 mysql -u用户名 -p密码    进入mysql,创建对应的数据库。

4.安装redis     

  apt-get install redis-server

  确认redis是否运行    netstat -antup  / netstat -ntpl  / ps -ef|gerp redis

5.安装python环境

  a.安装pip:  apt-get install python-pip

  b.安装python-dev:  apt-get install python-dev

  c.安装项目环境:   pip install -r 环境文件

(ps 如果要加快速度需要换镜像元:  pip install -r 环境文件 -i https://pypi.tuna.tsinghua.edu.cn/simple gevent)

6.创建数据库对应的表:

  a.一般情况下:Python manage.py makemigrations          puyhon manage.py migrate

  b.本项目: python manage.py migrate auth

   因为 kombu 的两个应用 kombu_transport_django 和 djkombu 会产生数据表冲 突,所以我们需要先运行

   python manage.py migrate kombu_transport_django --fask-intial

   python manage.py migrate djkombu --fake-initial

     同步数据库:   Python manage.py migrate

7.安装uWSGI:  

  pip install uwsgi

  a.在项目同级目录下创建conf文件夹,进入conf里创建uwsgi.ini文件配置环境

  

 1 [uwsgi]
 2 socket = 127.0.0.1:3031
 3 #使用nginx连接时使用,Django程序所在服务器地址
 4 chdir = /home/mmc/mmcsite
 5 #项目目录
 6 wsgi-file = mmcsite/wsgi.py
 7 #项目中wsgi.py文件的目录,相对于项目目录
 8 processes = 4
 9 #进程数
10 threads = 2
11 #线程数
12 stats = 127.0.0.1:9191
13 #在指定的地址上,开启状态服务

项目配置1

 1 [uwsgi]
 2 #使用nginx连接时使用,Django程序所在服务器地址
 3 socket=10.211.55.2:8001
 4 #直接做web服务器使用,Django程序所在服务器地址
 5 #http=10.211.55.2:8001
 6 #项目目录
 7 chdir=/Users/delron/Desktop/mmc/iot
 8 #项目中wsgi.py文件的目录,相对于项目目录
 9 wsgi-file=mmcsite/wsgi.py
10 # 进程数
11 processes=4
12 # 线程数
13 threads=2
14 # uwsgi服务器的角色
15 master=True
16 # 存放进程编号的文件
17 pidfile=uwsgi.pid
18 # 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的
19 daemonize=uwsgi.log
20 # 指定依赖的虚拟环境
21 virtualenv=/Users/delron/.virtualenv/meiduo

项目配置2

 1 [uwsgi]
 2     # 项目目录
 3     chdir=/aaa/opwf_dir/opwf/
 4     # 启动uwsgi的用户名和用户组
 5     uid=root
 6     gid=root
 7     # 指定项目的application
 8     module=opwf.wsgi:application
 9     # 指定sock的文件路径
10     socket=/aaa/opwf_dir/script/uwsgi.sock
11     # 启用主进程
12     master=true
13     # 进程个数
14     workers=5
15     pidfile=/aaa/opwf_dir/script/uwsgi.pid
16     # 自动移除unix Socket和pid文件当服务停止的时候
17     vacuum=true
18     # 序列化接受的内容,如果可能的话
19     thunder-lock=true
20     # 启用线程
21     enable-threads=true
22     # 设置自中断时间
23     harakiri=30
24     # 设置缓冲
25     post-buffering=4096
26     # 设置日志目录
27     daemonize=/aaa/opwf_dir/script/uwsgi.log

项目配置3

  b.uwsgi命令:

    启动uwsgi     uwsgi --ini uwsgi.ini

    查看uwsgi是否启动成功    ps -ef|grep uwsgi

    关闭uwsgi    uwsgi --stop  uwsgi.pid

8.安装Nginx:

  apt-get install nginx

  a.在/etc/nginx/conf.d里新建文件 项目名.conf(myproject.conf)配置nginx。

 1 server {
 2         listen       80;   #监听的端口号
 3         server_name 127.0.0.1;    #服务器ip或者域名
 4 location / {
 5            #alias /home/mmc/mmcsite/web/;
 6            root /home/mmc/mmcsite/web/;   #静态文件地址路径
 7            index index.html;               #文件格式
 8  }
 9         #uwsgi配置
10         location ^~ /iot/ {
11               include uwsgi_params;
12               uwsgi_pass 127.0.0.1:3031;
13         }
14         #uwsgi_params文件是Nginx向uWSGI传递的参数,uwsgi_pass的意思动态内容请求都通过名为django的upstream传递给uWSGI,这使用文件socket的方式,那么与之前uwsgi.ini里的socket参数配置一致。
15         error_page 404 /404.html;
16             location = /40x.html {
17 }
18         error_page 500 502 503 504 /50x.html;
19             location = /50x.html {
20 } } 

项目配置1

 1 upstream meiduo {
 2          server 100.211.55.2:8001;  # 此处为uwsgi运行的ip地址和端口号
 3          # 如果有多台服务器,可以在此处继续添加服务器地址
 4      }
 5
 6      #gzip  on;
 7      server {
 8          listen  8000;
 9          server_name api.meiduo.site;
10
11          location / {
12              include uwsgi_params;
13              uwsgi_pass meiduo;
14          }
15
16      }
17
18
19      server {
20          listen       80;
21          server_name  www.meiduo.site;
22
23          #charset koi8-r;
24
25          #access_log  logs/host.access.log  main;
26          location /xadmin {
27              include uwsgi_params;
28              uwsgi_pass meiduo;
29          }
30
31          location /ckeditor {
32              include uwsgi_params;
33              uwsgi_pass meiduo;
34          }
35
36          location / {
37              root   /home/python/Desktop/front_end_pc;
38              index  index.html index.htm;
39          }
40
41
42          error_page   500 502 503 504  /50x.html;
43          location = /50x.html {
44              root   html;
45          }
46
47      }

项目配置2

 1 server {
 2         listen 80;
 3         server_name 1.1.1.3;
 4         access_log  /var/log/nginx/access.log  main;
 5         charset  utf-8;
 6         gzip on;
 7         gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;
 8
 9         error_page  404           /404.html;
10         error_page   500 502 503 504  /50x.html;
11         # 指定项目路径uwsgi
12         location / {
13             include uwsgi_params;
14             uwsgi_connect_timeout 30;
15             uwsgi_pass unix:/aaa/opwf_dir/script/uwsgi.sock;
16         }
17         # 指定静态文件路径
18         location /static/ {
19             alias  /aaa/opwf_dir/opwf/static_all/;
20             index  index.html index.htm;
21         }
22
23 }

项目配置3

  b.nginx命令

    检查nginx配置是否正确    nginx -t

    启动nginx    service nginx start

    关闭nginx    service nginx stop

    重启nginx    service nginx restart

    查看nginx是否启动    ps -ef|grep nginx

9.注意事项:

  a.如果使用Django自带的admin,需要收集admin的静态文件(先于配置nginx执行)

    STATIC_ROOT = os.path.jpin(os.path.dirname(os,path.dirname(BASE_DIR)), ‘font_end_pc/static‘)

    (ps. font_end_pc/static为静态文件的路径)

    python manage.py collectstatic

  b.Django中的配置。

    修改uwsgi.py里的配置,将开发模式下的setting换位生产环境下的setting。

    os.environ.setdefault(‘DJANGO_SETTING_MODULE‘, ‘myproject.settings.prod‘)

    setting里需要注意的项

 1 DEBUG = True      #生产环境下debug必须为False
 2
 3 ALLOWED_HOSTS = [...,  ‘www.baidu.site‘]  # 添加访问的域名或者ip
 4
 5 CORS_ORIGIN_WHITELIST = (
 6     ‘127.0.0.1:8080‘,
 7     ‘localhost:8080‘,
 8     ‘www.baidu.site:8080‘,
 9     ‘api.baidu.site:8000‘,
10     ‘www.baidu.site‘,     #设置跨域白名单
11 )

setting

 

 

  

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; text-indent: 21.0px; font: 10.5px Helvetica }
span.s1 { font: 10.5px "PingFang SC" }

原文地址:https://www.cnblogs.com/ppzhang/p/9791423.html

时间: 2024-08-30 11:31:27

ubantu+nginx+uwsgi+django部署的相关文章

Nginx+uWSGI+Django部署web服务器

目录 Nginx+uWSGI+Django部署web服务器 环境说明 前言 搭建项目 Django部署 编辑luffy/luffy/settings.py 编辑luffy/app01/views.py 编辑luffy/luffy/urls.py 运行并测试 uWSGI部署 测试运行uWSGI 使用uWSGI运行django项目 uWSGi热加载Djangoa项目 部署nginx nginx配置uwsgi和django django部署static文件 重新加载nginx进行测试 测试nginx

nginx+uwsgi+django部署流程

当我们在用django开发的web项目时,开发测试过程中用到的是django自带的测试服务器,由于其安全及稳定等性能方面的局限性,django官方并不建议将测试服务器用在实际生产. nginx+uwsgi+django是我们常用的django部署方式.nginx作为最前端的服务器,他负责接收所有的客户端请求,对于请求的静态文件,由nginx服务器自己完成,因为它具有很好处理静态文件的能力,性能进行过优化,支持高并发量:uWSGI服务器作为支持服务器,是用来服务nginx的,nginx将请求的动态

在ubuntu16上进行nginx+uwsgi+django部署的简要步骤

网上有很多部署教程,说了一大堆,遇到坑还是要自己一个个解决,这里有几个比较重要的坑大家一定要注意. 1.首先要安装python和python-dev环境,如果没有安装python-dev后面安装有些依赖要报错.这是第一个坑. apt-get install python python-dev pip 2.安装uwsgi要先安装gcc的编译环境.这是第二个坑.如果不安装gcc运行uwsgi也不会报错,后台进程就是不启动. 我被这个坑了很久. apt-get install gcc 3.找一个目录,

Centos7.6下Nginx+Uwsgi+Django部署

本人服务器是使用腾讯云Centos7.6.以下配置均在Root权限下操作. 1. python3 1.1 安装依赖包 sudo yum -y groupinstall "Development tools" sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-deve

debian完整部署 Nginx + uWSGI + Django

debian完整部署 Nginx + uWSGI + Django 手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供的服务器包用apt-get这种方式安装的.这种方式比较简单,但没有新版本. 另外就是使用源代码自己编译安装,这种比较繁琐,但能选择适合的版本安装. 这里介绍的是第二种,使用源代码编译的版本进行安装部署. 部署测试环境: - wind

使用Nginx+uWSGI+Django方法部署Django程序(下)

在上一篇文章<五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)>中,阐述了如何只使用uWSGI来部署Django程序. 当然,单单只有uWSGI是不够的,在实际的部署环境中,Nginx是必不可少的工具. 在本篇文章中,我将一直延用“N步法”的风格来阐述如何将uWSGI与Nginx做连接来部署Django程序.并在最后,会较为完整的阐述本社区的部署方法. 本文大纲: 环境介绍 配置uWSGI 配置Nginx Nginx+uWSGI+Django的实现方式 一些建

【转】五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(下)

五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(下) By Django中国社区 at 2013-05-18 04:38 在上一篇文章<五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)>中,阐述了如何只使用uWSGI来部署Django程序. 当然,单单只有uWSGI是不够的,在实际的部署环境中,Nginx是必不可少的工具. 在本篇文章中,我将一直延用“N步法”的风格来阐述如何将uWSGI与Nginx做连接来部署Django程序.并

【转】五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上)

五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(上) By Django中国社区 at 2013-05-12 15:05 Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.nginx把所有静态请求自己来处理(这是NGINX的强项).然后,NGINX将所有非静态请求通过uwsgi传递给Django,由Django来进行处理,

使用Nginx+uWSGI+Django方法部署Django程序(上)

Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 在这种方式中,我们的通常做法是,将nginx作为服务器最前端,它将接收WEB的所有请求,统一管理请求.nginx把所有静态请求自己来处理 (这是NGINX的强项).然后,NGINX将所有非静态请求通过uwsgi传递给Django,由Django来进行处理,从而完成一次WEB请求. 可见,uwsgi的作用就类似一个桥接器.起到桥梁的作用. NOTE:不使用nginx,只使用uwsgi+django也是可以