精华内容
下载资源
问答
  • django nginx uwsgi 部署

    2019-10-14 10:57:09
    环境 centos 6.5 ...nginx uwsgi 部署 参见: nginx uwsgi部署 Django部署 安装测试 $ source activate py3.6 $ pip install django $ cd /var/tmp //# 创建Django项目chenzl $ django...

    环境

    • centos 6.5
    • anaconda 3
    • nginx 1.8
    • python 3.6
    • uWSGI 2.0.18
    • Django 2.2.6

    nginx uwsgi 部署

    参见: nginx uwsgi部署

    Django部署

    安装测试

    $ source activate py3.6
    $ pip install django
    $ cd /var/tmp
    
    //# 创建Django项目chenzl
    $ django-admin.py startproject chenzl
    $ cd chenzl
    
    //# 启动测试环境
    $ python manage.py runserver 0.0.0.0:8000
    
    //# 测试是否正常
    curl http://127.0.0.1:8000
    

    使用uwsgi动态模式,所以/etc/uwsgi.ini不需要更改;

    nginx配置,新增conf.d/django.conf

    server {
        listen       8000;
        server_name  _;
    
        access_log      /var/log/nginx/django_access.log;
        error_log       /var/log/nginx/django_error.log;
        location / {
            include  uwsgi_params;
            uwsgi_pass  127.0.0.1:9090;
            uwsgi_param UWSGI_SCRIPT chenzl.wsgi;
            uwsgi_param UWSGI_CHDIR  /var/tmp/chenzl;
            client_max_body_size 35m;
        }
    }
    

    使用nginx转发请求到uwsgi时,不是在虚拟环境下,所以是将虚拟环境下的django包路径加入python搜索路径sys.path

    $ vi /var/tmp/chenzl/chenzl/wsgi.py
    """
    WSGI config for chenzl project.
    
    It exposes the WSGI callable as a module-level variable named ``application``.
    
    For more information on this file, see
    https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/
    """
    
    import os
    import sys
    # 将django包路径加入sys.path
    sys.path.append('/usr/local/anaconda3/envs/py3.6/lib/python3.6/site-packages/')
    
    from django.core.wsgi import get_wsgi_application
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'chenzl.settings')
    
    application = get_wsgi_application()
    

    Django默认限制只能本地访问,开启远程访问

    $ vi /var/tmp/chenzl/chenzl/settings.py
    #ALLOWED_HOSTS = []
    ALLOWED_HOSTS = ['*']
    

    启动uwsgi和nginx

    $ service uwsgi start
    $ service nginx start
    

    访问: http://IP:8000

    展开全文
  • 2、检查Django项目的nginx.conf配置文件uwsgi_pass字段 情况一:socket 用内网ip和端口号,uwsgi_pass用外网ip和端口号,改完配置后重启nginxuwsgi,观察是否还报错,这俩种情况都可以试一试 情况二:socket用...

    前提:腾讯云服务器有个内网ip和外网ip

     

    首先检查使用的端口是否正常可用

    1、检查端口是否开放,在腾讯云控制台安全组查看

    2、检查防火墙端口是否开放

    systemctl start firewalld # 开启防火墙
    systemctl stop firewalld # 关闭防火墙
    systemctl status firewalld #检查防火墙状态,看需要的端口是否在里面

    1)若防火墙开启:active,则需要开启相应的端口,或直接关闭防火墙

    2)若防火墙关闭,进行下一步

    3、检查端口是否监听:

    netstat -antp| grep 3306  # 3306是端口号,改成自己要检查的端口号

    若什么都没返回表示没有监听,说明程序没有启动起来,需要启动程序

    现在可以看看是否正常,若不正常,进行下面的步骤

    1、检查Django项目的uwsgi.ini配置文件的字段socket

    2、检查Django项目的nginx.conf配置文件uwsgi_pass字段

    情况一:socket 用内网ip和端口号,uwsgi_pass用外网ip和端口号,改完配置后重启nginx和uwsgi,观察是否还报错,这俩种情况都可以试一试

    情况二:socket用内网ip和端口号,uwsgi_pass用内网ip和端口号,改完配置后重启nginx和uwsgi,观察是否还报错

     

    下面是情况2:

    uwsgi.ini配置文件如下:

     项目的nginx.conf配置文件如下:

     

     

    转载于:https://www.cnblogs.com/heiao10duan/p/11424255.html

    展开全文
  • Django nginx uwsgi部署

    2016-08-18 17:36:45
    Django  Django 是一个基于 Python 的开源 Web 应用程序框架,其 MVC 开发的方法,把代码的定义和数据访问的方法(模型)与请求逻辑 (控制器)还有用户接口(视图)分开来,同时将对数据库的操作接口进行封装,...

    Django 

    Django 是一个基于 Python 的开源 Web 应用程序框架,其 MVC 开发的方法,把代码的定义和数据访问的方法(模型)与请求逻辑 (控制器)还有用户接口(视图)分开来,同时将对数据库的操作接口进行封装,支持 sqlite3, MySQL, PostgreSQL等数据库。使得Django 应用程序很简单。开发阶段可使用Django框架自带的一个开发 Web 服务器,使用python manage.py runsercver即可开启服务器。但是这个框架不适合在生产环境中使用,因此需要进一步将 Django 应用程序部署到 Web。在本文中,您将了解到使用nginx和uWSGI在Ubuntu上部署Django。

     

    uWSGI & Nginx

    WGSI 全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。自从 WSGI 被开发出来以后,许多其它语言中也出现了类似接口。当本地有多个 web 服务,有 Python、php、java 编写的,对于同一端口的监听时就必须有一个负责转发的服务了。虽然只但是 uwsgi 对于静态资源处理的并不是很好,一是性能问题,二是各种 HTTP 请求缓存头,则需要与 Nginx进行搭配。
    Nginx 是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。与uWSGI搭配,uWSGI 处理动态数据,Nginx 处理静态文件,索引文件以及自动索引。
     

    部署环境

    • nginx:  nginx -v  -->  nginx version: nginx/1.4.6 (Ubuntu)
    • uWSGI:  uwsgi --version --> 2.0.12
    • Ubuntu:  cat /etc/issue --> Ubuntu 14.04.1 LTS \n \l
    • Python:  python -V --> Python 2.7.6
    • Django:  python -c "import django;print(django.VERSION)" --> (1, 8, 4, 'final', 0)

     

    部署过程(参考uWSGI的文档)

    1. 安装nginx

    sudo apt-get install nginx

    启动、停止和重启

    sudo /etc/init.d/nginx start
    sudo /etc/init.d/nginx stop
    sudo /etc/init.d/nginx restart

    或者

    sudo service nginx start
    sudo service nginx stop
    sudo service nginx restart

    2. uWSGI安装

    apt-get install python-dev
    pip install uwsgi
    

    3. 测试Django项目是否正常

    python manage.py runserver 0.0.0.0:8000

    4. 测试运行uwsgi

    uwsgi --http :8001 --chdir /home/web/EvanLin/  --module EvanLin.wsgi
    #chdir:工程目录  module:指的是 chdir 下的/EvanLin/wsgi.py文件

    5. 部署static文件

    在工程目录下的 setting.py 里添加 STATIC_ROOT

    STATIC_ROOT = os.path.join(BASE_DIR, "static/")

    然后执行:

    python manage.py collectstatic

    6. 配置nginx

    • 将uwsgi_params文件拷贝到项目文件夹下,uwsgi_params 文件在 /etc/nginx/ 目录下
    • 在项目文件夹下创建文件mysite_nginx.conf,填入并修改下面内容:
     # mysite_nginx.conf
     # the upstream component nginx needs to connect to
     upstream django {
     # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
     server 127.0.0.1:8001; # for a web port socket (we'll use this first)
     }
     # configuration of the server
     server {
     # the port your site will be served on
     listen 8000;
     # the domain name it will serve for
     server_name .example.com; # 你的域名或是IP地址
     charset utf-8;
     # max upload size
     client_max_body_size 75M; # adjust to taste
     # Django media
     location /media {
     alias /path/to/your/mysite/media; # Django 的 media 文件夹
     }
     location /static {
     alias /path/to/your/mysite/static; # Django 的 static 文件夹
     }
     # Finally, send all non-media requests to the Django server.
     location / {
     uwsgi_pass django;
     include /path/to/your/mysite/uwsgi_params; # 刚才拷贝的uwsgi_params文件路径
     }
     }
    

    这个文件配置 nginx 从文件系统中使用 media 和 static 文件作为服务,同时相应 django 的 request 在 /etc/nginx/sites-enabled 目录下创建本文件的连接,使nginx能够使用它:

    sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/
     

    7. 用 UNIX socket 启动 Django 应用

    mysite_nginx.conf做如下修改:

    server unix:///path/to/your/mysite/mysite.sock; # for a file socket
    # server 127.0.0.1:8001; # for a web port socket (we'll use this first)

    重启nginx:

    sudo /etc/init.d/nginx start # 若重启失败,通过sudo nginx -t 查错

    并运行:

    uwsgi --socket mysite.sock --chdir /home/web/mysite/  --module mysite.wsgi --chmod-socket=666 &
    

    8. 多站部署

    与部署当个 Django 应用相同,请参照上文。

    其中,mysite_nginx.conf 文件修改如下,标红部分需修改,路径为你当前工程目录。其中 listen 监听的端口可以相同,nginx根据 server_name .example.com;来启动不同的 uswgi 文件。

     # mysite_nginx.conf
     # the upstream component nginx needs to connect to
     upstream django {
     server unix:///path/to/your/mysite/mysite.sock; # for a file socket
     # server 127.0.0.1:8001; # for a web port socket (we'll use this first)
     }
     # configuration of the server
     server {
     # the port your site will be served on
     listen 80;
     # the domain name it will serve for
     server_name .example.com; # 你的域名或是IP地址
     charset utf-8;
     # max upload size
     client_max_body_size 75M; # adjust to taste
     # Django media
     location /media {
     alias /path/to/your/mysite/media; # Django 的 media 文件夹
     }
     location /static {
     alias /path/to/your/mysite/static; # Django 的 static 文件夹
     }
     # Finally, send all non-media requests to the Django server.
     location / {
     uwsgi_pass django;
     include /path/to/your/mysite/uwsgi_params; # 刚才拷贝的uwsgi_params文件路径
     }
     }

    重启nginx:

    sudo /etc/init.d/nginx start # 若重启失败,通过sudo nginx -t 查错

    并运行:

    uwsgi --socket mysite.sock --chdir /home/web/mysite/  --module mysite.wsgi --chmod-socket=666 & 

    如有任何疑问请留言

    EvanLin
    著作权归作者所有,转载请联系作者获得授权,并标注原文链接。
    展开全文
  • uwsgi 1. 首先,无用的是worldpress, 它默认带的apache, 会占用80端口,这一点坑了我好久, mmp netstat -lnp|grep 80 查看占用80端口的程序, 然后 kill -9 id ,netstat -lnp|grep 80, 再看一下, 还可能没...

    断断续续搞了两天,总算是实现了。

    一 uwsgi

    1. 首先,无用的是worldpress, 它默认带的apache, 会占用80端口,这一点坑了我好久, mmp

    netstat -lnp|grep 80

    查看占用80端口的程序, 然后 kill -9 id      , netstat -lnp|grep 80, 再看一下, 还可能没杀死, 再杀, mmp

    2. 在django项目的文件里新建个 blog.ini , 名字无所谓, 与manage.py同级,

    在blog.ini 里写入 

     

    垃圾 : 注意不要加注释 否则报错找不到文件 mm

    [uwsgi]
    chdir = /data/blog              # blog.ini  所在的位置
    module = blog.wsgi:application  # 相对chdir, django的wsgi, 所在的位置
    
    master = true
    processes = 4
    harakiri = 60
    max-requests = 5000
    socket = 127.0.0.1:8000
    pidfile = /data/blog/master.pid
    daemonize = /data/blog/blog.log
    vacuum = true
    disable-logging = true
    uid=nginx 
    gid=nginx
    wsgi-file = /data/blog/blog/wsgi.py

    然后进入到它所在的位置, 执行

    [root@iz2zeczv3xrnm2jx6aayhxz blog]#  uwsgi --ini blog.ini

    执行它,然后  ps -aux | grep uwsgi     查看运行情况, 要是只用一个进程, 就凉凉了。

     

    二 配置nginx, 这的坑太多了, 按照网上教程搞了很多, 都失败了, 自己也配置了很多, 也不知道那些是有用的操作,那些是没必要的,总之, 总算跑起来了。

    首选我没有sites-available,和 sites-enabled两个文件夹, 在/etc/nginx 里新建两个文件夹, 然后在nginx.conf 里的http {}  里加了

    include /etc/nginx/sites-enabled/*;  这一句。

    然后在sites-available里,新建个叫blog.conf的文件,写入

    server {
        listen 80;
        server_name blog;
        charset utf-8;
        error_log       /data/blog/blog_error.log;
    
        client_max_body_size 75M;
        location /static {
             alias /data/blog/static;
       }
        location /media {
             alias /data/blog/media;
       }
    	 
        location / {
              uwsgi_pass 127.0.0.1:8000;
              include /etc/nginx/uwsgi_params;
       }
    
    }
    

    然后进入到 /etc/nginx

    执行  ln -s /etc/nginxsites-available/blog.conf  /etc/nginx/sites-enabled/blog.conf     创建软连接

    因为不知道,哪出现问题了, 我又在nginx.conf.default 里加了上面的sever配置

    然后进入到了,ngnix 的位置

    执行service nginx restart

    访问自己的ip,总算成功了

     

    补充, 按上面的配置, 访问admin, 会出现没有样式,

    还要进一步修改配置,

    在和static 同级下, 新建个文件, 我叫它 nginx_static,

    然后打开django 的settings文件 ,加下一句

    STATIC_ROOT='/home/myweb/nginx/static/'    #添加收集静态文件的目录

     

    修改nginx的配置

    
     location /static {
                   alias /data/blog/nginx_static;
    }
    

    然后执行, 收集静态文件, 包括admin和其他所有的静态文件都会被收集到指定的位置, 

    python manage.py collectstatic

    重启nginx, ok

    service nginx restart

     

    补充:

    正常关闭uwsgi  uwsgi  --stop  /路径/master.pid
    重新加载uwsgi  uwsgi  --reload  /路径/master.pid
    强制关闭全部进程  ps -aux | grep uwsgi | awk '{print $2}' | xargs kil

     

    我修改了一部分views代码, 发现不能实时更新, 执行了service nginx restart, 只有前端有更新,

    又执行了uwsgi  --reload  /路径/master.pid, 可以了, 引以为戒  还必须先重启nginx

     

     

     

     

     

     

    展开全文
  • 第一步: 将ant design pro 编译即 在项目更目录下运行 npm run build生成在工程...打开centos 安装 Nginx 打开一个终端依次输入一下命令 1 wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-releas...
  • https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-uwsgi-and-nginx-on-ubuntu-16-04 1.安装pip sudo apt-get update sudo apt-get install python-pip 如果您使用...
  • 安装uwsgi1.到http://projects.unbit.it/uwsgi/wiki/WikiStart#Getit 下载最新版本的uwsg。安装python-devel2.python uwsgiconfig.py --buildpython setup.py installyum install python-setuptoolswget ...
  • 问 题 奇怪的是今天早上起来。发现还是提示:Internal Server Error 但是错误日志一直不更新了, 还是显示昨天晚上的那些。...uwsgi.ini file [uwsgi] socket = 127.0.0.1:8006 chdir = /var/wwwroot/...
  • Django Nginx+uwsgi 安装配置

    万次阅读 2020-09-09 10:23:23
    文章目录Django Nginx+uwsgi 安装配置安装基础开发包安装Python包管理安装 uwsgi安装 Django安装 Nginxuwsgi 配置Nginx 配置 Django Nginx+uwsgi 安装配置 在前面的章节中我们使用 python manage.py runserver 来...
  • docker-django-nginx-uwsgi-postgres-tutorial Docker + Django + Nginx + uWSGI + Postgres基本教学-从无到有 教你用建立 + + + :memo: 建议对还不熟的朋友,可以先参考我之前写的 简介 之前介绍过了,这边就不在...
  • Django Nginx+uWSGI部署

    2021-03-30 00:35:45
    uWSGI启动 Django应用服务 项目根目录下创建django-uwsgi.ini文件 [uwsgi] chdir=/root/work/ds # wsgi-file=ds/wsgi.py module=ds.wsgi # http = [ip]:port http-socket=:8000 master=True processes=4 threads=2
  • Django Nginx+uwsgi 安装配置在前面的章节中我们使用 python manage.py runserver 来运行服务器。这只适用测试环境中使用。正式发布的服务,我们需要一个可以稳定而持续的服务器,比如apache, Nginx, lighttpd等,...
  • Centos部署 django 服务 nginx uwsgi

    千次阅读 2019-01-30 13:21:08
    include /usr/local/nginx/conf/uwsgi_params ; uwsgi_pass 127.0.0.1:10000 ; # 必须和uwsgi.ini配置的端口一致 } location /static/ { alias /home/www/dexundjango/trade/static/ ; #项目静态...
  • 先简单介绍下nginxuwsgidjango分别是什么,nginx是web服务器擅长处理静态请求,uwsgi也是一个web服务器擅长处理动态请求,django是python的一个web框架,nginx+uwsgi+django是生产环境中常见的部署搭配,客户端...
  • 手把手解决新手在linux下快速搭建服务器Django Nginx+uWSGI的问题
  • WSGI是一种描述web服务器(NginxuWSGI)如何与web应用程序(Django,Flask)通信的规范。uWSGI是一个全功能的HTTP服务器,实现了WSGI协议、uwsgi协议、http协议等。它要做的就是把HTTP协议转化成语言支持的网络协议,...
  • 转自:https://www.cnblogs.com/polar-lights/p/9313263.html https://www.runoob.com/django/django-nginx-uwsgi.html 转载于:https://www.cnblogs.com/changbaishan/p/11330844.html

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,178
精华内容 2,871
关键字:

djangonginxuwsgi