第一篇博客,不是很懂语法之类的,希望通过多写点东西,记录自己的成长,早点成为一个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. hdu5701-中位数计数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5701 题目: Problem Description 中位数定义为所有值从小到大排序后排在正中间的那个 ...

  2. 五一劳动节,讲讲NEO智能合约的调试

    之前我们说过NEO智能合约的调试问题,过去了一段时间,有很多东西都发生了比较大的变化.让我们重新再来探讨一下这个话题. 先说日期,2018年4月27日,马上迎来劳动节.   以后可能还会再次谈论这个话 ...

  3. XVII Open Cup named after E.V. Pankratiev. GP of Tatarstan

    A. Arithmetic Derivative 形如$p^p(p是质数)$的数的比值为$1$,用$k$个这种数相乘得到的数的比值为$k$,爆搜即可. #include<cstdio> # ...

  4. Phone List 字典树 OR STL

    Phone List Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 140     Solved: 35 Description ...

  5. Linux epoll机制

    epoll_create.epoll_ctl.epoll_wait.close 在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就是 ...

  6. Installation of CarbonData 1.1.0 with Spark 1.6.2

    关键词:carbondata spark thrift 数据仓库 [Install thrift 0.9.3] 注意 要装thrift-java必须先装ant . 有人说要装boost,我在cento ...

  7. Codechef July Challenge 2018 : Picking Fruit for Chefs

    传送门 好久没写题解了,就过来水两篇. 对于每一个人,考虑一个序列$A$,$A_I$表示当k取值为 i 时的答案. 如果说有两个人,我们可以把$(A+B)^k$二项式展开,这样就发现把两个人合并起来的 ...

  8. 2018-2019-1 20189210 《LInux内核原理与分析》第七周作业

    一 .Linux内核创建一个新进程的过程 1.操作系统内核三大功能是进程管理,内存管理,文件系统,最核心的是进程管理. 2.对应的三个抽象的概念是进程,虚拟内存和文件.其中,操作系统最核心的功能是进程 ...

  9. Windows下自带压缩文件工具之-makecab

    在内网渗透时,当没有rar.7z等压缩工具时候,拖取文件的时候为了防止流量过大,又必须压缩把文件压缩.当然你可以自己上传一个压缩工具.Windows自带制作压缩文件工具makecb你可以了解哈.压缩单 ...

  10. Windows中使用ssh利用公钥登入远程服务器

      方式:使用 Winscp 密钥登录   我们平时开发多会使用 ftp 来上传下载文件,尤其是很多 Linux 环境下.   其实 Linux 默认是不提供 ftp 的,需要你额外安装 FTP 服务 ...