第一篇博客,不是很懂语法之类的,希望通过多写点东西,记录自己的成长,早点成为一个pyer.

就写下这两天折腾的这个nginx-uwsgi-django.

首先附上官方文档链接 http://uwsgi-docs.readthedocs.io/en/latest/tutorials/Django_and_nginx.html

环境 python == Python 2.7.3, os == centos6.5 x86_64

django == 1.8.1

uwsgi == uWSGI 2.0.15 (64bit) #都是pip 直接安装的

nginx == 1.10.1      #yum install -y

1.刚刚创建的project

$django-admin startproject test_nginx_uwsgi
$cd test_nginx_uwsgi/
$tree
.
├── manage.py
└── test_nginx_uwsgi
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

2.当前目录下创建test.py文件,代码如下:

#test.py
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World" #国际惯例,helloworld

运行代码:

$uwsgi --http : --wsgi-file test.py
##中间东西很多,又看不懂,乱七八糟的,我就不贴了##
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker (and the only) (pid: , cores: )

参数含义简介:

  • :9111 > 想必大家都知道,运行的端口
  • wsgi-file > 指定加载的文件
  • 报错[uwsgi: command not found]的话,ln -s /your-python-dir/bin/* /usr/bin/*

如图所示,第一步完成!

3.测试您的django 是否能够正常运行!ps:为了方便起见我们直接用admin网站测试好了~~

$python manage.py syncdb #创建superuser
$python manage.py makemigration
$python manage.py migrate
$python manage.py runserver 0.0.0.0:

大家有目共睹

4.使用Uwsgi 跑 django项目

cmd: (其中test_nginx_uwsgi.wsgi指的就是test_nginx_uwsgi目录下的wsgi.py,django1.8自动生成)

$ uwsgi --http : --module test_nginx_uwsgi.wsgi

又成功了一步~可以对比上面的,同样的url,这里却很难看,是因为没有加载static文件

但是可以说明  web-client <-> Uwsgi <-> Django 是连通的,下面的就要看Nginx.

5.配置Nginx.

由于版本的问题,如果这里也用官方的源码就不行了。

  1. 收集静态文件

    #首先setting.py中添加
    STATIC_ROOT = '/root/django/test_nginx_uwsgi/static_root/'
    ------------------------------我是换行------------------------------
    $python manage.py collectstatic
    You have requested to collect static files at the destination
    location as specified in your settings: /root/django/test_nginx_uwsgi/static_root This will overwrite existing files!
    Are you sure you want to do this? Type 'yes' to continue, or 'no' to cancel: yes
    #·······省略~
    static files copied to '/root/django/test_nginx_uwsgi/static_root'.
  2. nginx配置文件在 /etc/nginx/nginx.conf ,其中include -> /etc/nginx/conf.d/*.conf  [这个,相信大多数linux服务如出一辙]
  3. vi /etc/nginx/conf.d/test_nginx_uwsgi.conf,代码如下
    # test_nginx_uwsgi.conf
    
    # the upstream component nginx needs to connect to
    upstream django_test { #加上_test,因为和原来的冲突了,这里备注下
    # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
    server 127.0.0.1:; # for a web port socket (we'll use this first) 类似uwsgi端口
    }
    # configuration of the server
    server {
    # the port your site will be served on
    listen ; #nginx 运行端口
    # the domain name it will serve for
    server_name .example.com; # substitute your machine's IP address or FQDN
    charset utf-; # max upload size
    client_max_body_size 75M; # adjust to taste # Django media
    location /media {
    alias /root/django/test_nginx_uwsgi/media; # 加载你的meida,
    }
    location /static {
    alias /root/django/test_nginx_uwsgi/static_root; # 加载你的静态文件
    }
    # Finally, send all non-media requests to the Django server.
    location / {
    uwsgi_pass django_test;
    include /etc/nginx/uwsgi_params; #官方说要把文件cp到项目目录,感觉没必要
    }
    }
  4. 重启 nginx (不知道是我这机器有毛病还是····,光restart不行)
[root@lzy test_nginx_uwsgi]# /etc/init.d/nginx restart
stopping nginx.... Done.
starting nginx..
[root@lzy test_nginx_uwsgi]# nginx -c /etc/nginx/nginx.conf
[root@lzy test_nginx_uwsgi]# nginx -s reload
[root@lzy test_nginx_uwsgi]# lsof -i :
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
nginx root 9u IPv4 0t0 TCP *: (LISTEN)
#可以看到8090端口已经在运行 nginx 了,说明配置文件有效果了

6.接下来官网Balala了一堆,我这种fish压根不懂,我也没按他的做,跳过这一步··

7.配置test_nginx_uwsgi_uwsgi.ini 启动配置文件

  ps:参考了http://www.runoob.com/django/django-nginx-uwsgi.html

  创建test_nginx_uwsgi_uwsgi.ini  就在项目根目录

#test_nginx_uwsgi.ini file
[uwsgi] # Django-related settings socket = :
# the base directory (full path)
chdir = /root/django/test_nginx_uwsgi # Django s wsgi file
module = test_nginx_uwsgi.wsgi # process-related settings
# master
master = true # maximum number of worker processes
processes = # ... with appropriate permissions - may be needed
chmod-socket =
# clear environment on exit
vacuum = true

8.配置完成,就剩下启动了

启动就很简单呢

#首先启动uwsgi 指定配置文件ini
$uwsgi --ini test_nginx_uwsgi.ini #也可以 nohup uwsgi --ini test_nginx_uwsgi.ini & 后台执行,无输出
#其次重启Nginx,参照上面重启步骤 #浏览器打开 192.168.8.199:/admin

大功告成~现在就是通过nginx端口打开的django,如果nginx Listen 80,那么浏览器不用输端口也行呢

#error: /var/log/nginx/nginx.log提示 13 Pemmer deied【权限问题】,修改/etc/nginx/nginx.conf,user nginx -> user root

基于Nginx 和 uwsgi 搭建 django.的更多相关文章

  1. CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,CentOS 环境下基于 Nginx uwsgi 搭建 Django 站点 以下 ...

  2. python3.6 ubuntu部署nginx、 uwsgi、 django

    ubuntu部署nginx. uwsgi. django 将项目上传到服务器 python manager.py runserver 0:80 在浏览器输入服务器的域名或者ip地址,访问成功. 安装u ...

  3. 基于Nginx和uWSGI在Ubuntu上部署Django项目

    前言: 对于做Django web项目的童鞋,重要性不言而喻. 参考:https://www.cnblogs.com/alwaysInMe/p/9096565.html https://blog.cs ...

  4. 基于nginx和uWSGI在Ubuntu上部署Djan

    http://www.jianshu.com/p/e6ff4a28ab5a 文/Gevin(简书作者)原文链接:http://www.jianshu.com/p/e6ff4a28ab5a著作权归作者所 ...

  5. 项目的发布(nginx、uwsgi、django、virtualenv、supervisor)

    导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架 ...

  6. linux上使用nginx、uwsgi部署django项目

    参考:CentOS7下部署Django项目详细操作步骤 注意事项: 在虚拟环境中操作,虚拟环境中安装nginx.uwsgi,虚拟环境外需安装uwsgi -- 临时关闭防火墙:systemctl sto ...

  7. 基于nginx和uWSGI在Ubuntu上部署Django

    转自: http://www.jianshu.com/p/e6ff4a28ab5a

  8. ubuntu服务器上用Nginx和Uwsgi部署django项目

    开发环境:ubuntu系统,python3环境 django项目目录: fast_foot 为项目根目录,app为项目应用 现在,我们登陆远程服务器 安装Nginx 安装好了,我们看一下nginx的配 ...

  9. CentOS环境下使用GIT基于Nginx的私服搭建全过程

    阅读本文前你必须预先装好CentOS并且已经安装和配置好Nginx了. 安装GIT私服套件 安装centos6.5-centos7.0 安装nginx yum install -y?git gitwe ...

随机推荐

  1. web服务-2、四种方法实现并发服务器-多线程,多进程,协程,(单进程-单线程-非堵塞)

    知识点:1.使用多线程,多进程,协程完成web并发服务器 2.单进程-单线程-非堵塞也可以实现并发服务器 1.多进程和协程的代码在下面注释掉的部分,我把三种写在一起了 import socket im ...

  2. (一)主域相同子域不同之document.domain跨域

    一.什么是主域名,什么是子域名? 主域名又称一级域名或者顶级域名,由域名主体.域名后缀组成,比如cnblogs.com : 子域名有二级域名,比如www.cnblogs.com.三级域名,比如home ...

  3. SDOI2019 省选前模板整理

    目录 计算几何✔ DP 斜率优化✔ 四边形不等式✔ 轮廓线DP✘ 各种分治 CDQ分治✔ 点分治✔ 整体二分✔ 数据结构 线段树合并✔ 分块✔ K-D Tree LCT 可持久化Trie✔ Splay ...

  4. docker容器和本机互传文件

    首先需要确定docker容器的container_id,可以使用docker ps -a 查看你要操作的docker容器的container_id docker容器向本机传送文件 docker cp ...

  5. Promise 用法

    Promise是一个构造函数,自己身上有all.reject.resolve这几个眼熟的方法,原型上有then.catch等同样很眼熟的方法. 那就new一个 Promise的构造函数接收一个参数,是 ...

  6. 关于select的id以及value传给后台的问题

    下面解释下后端为什么让传id的时候我们要怎末办? 定义一个空对象将他的值给select的值,option遍历的时候:value="item",这里的item是一个对象,也就是如果你 ...

  7. Python自学知识点----Day03

    cd指令说明 1).作用:切换工作目录. 2).   命令(注意空格)         含义 cd ~===cd             回到家目录 cd .                     ...

  8. 【C++】根据二叉树的前序遍历和中序遍历重建二叉树并输出后续遍历

    /* 现在有一个问题,已知二叉树的前序遍历和中序遍历: PreOrder:GDAFEMHZ InOrder:ADEFGHMZ 我们如何还原这颗二叉树,并求出他的后序遍历 我们基于一个事实:中序遍历一定 ...

  9. Servlet的相关类--ServletConfig(接口)

    ServletConfig是一个接口,有关配置文件的 servlet的配置信息<---对应--->ServletConfig web.xml配置文件会被加载到内存中,然后解析器会对它进行解 ...

  10. hadoop学习笔记--找到执行hadoop的入口

    参与个hadoop项目,之前没搞过,赶紧学习: 照葫芦画瓢,得到代码是hdfs2local.sh脚本和LiaoNingFilter.jar包,迫不及待用jd-gui打开jar包,搜索到main(在MA ...