文档章节

Djando多环境配置Redis+nginx

人间四月
 人间四月
发布于 2016/09/28 17:03
字数 764
阅读 47
收藏 2

在root用户下配置遇到了很多问题,建议在linux 个人用户下配置,会减少很多麻烦。

Redis

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
OR
sudo service nginx start
sudo service nginx stop
sudo service nginx restart

2.UWSGI

安装
apt-get install python-dev   #环境依赖
pip install uwsgi

3.uWSGI和nginx部署Django

web client < - > the web server [nginx] < - > the socket < - > uwsgi < - > Django

uWSGI 测试

在django项目根目录下创建test.py文件,添加代码:

# test.py
"""
测试 uwsgi功能
"""
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return ["Hello World"] # python2
    #return [b"Hello World"] # python3

uwsgi --http :8000 --wsgi-file test.py

http :8000 使用HTTP协议,8000端口 wsgi-file test.py 加载指定的文件

打开url,浏览器显示hello world

http://example.com:8000

the web client <-> uWSGI <-> Python


配置nginx

安装完Nginx之后,正常打开 http://hostname

the web client < - > the web server

增加nginx配置
  • 将/etc/nginx/uwsgi_params文件拷贝到项目目录文件下。uwsgi_params下载
  • 在项目目录下创建文件 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; # substitute your machine's IP address or FQDN
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    # Django media
    location /media  {
        alias /path/to/your/mysite/media;  # your Django project's media files - amend as required
    }

    location /static {
        alias /path/to/your/mysite/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed
    }
}
  • 在/etc/nginx/sites-enabled目录下创建本文件的连接,使nginx能够使用它:
sudo ln -s ~/path/to/your/mysite/mysite_nginx.conf /etc/nginx/sites-enabled/

配置文件,告诉nginx从文件系统中拉起media和static文件作为服务,响应服务是django的request

4.测试nginx和uWSGI
uwsgi --socket :8001 --wsgi-file test.py

访问http://example.com:8000 ,如果显示hello world,则下面环节是否通畅: the web client <-> the web server <-> the socket <-> uWSGI <-> Python

用UNIX socket 取代 TCP port

修改 misite_nginx.conf.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,运行uWSGI

uwsgi -socket mysite.sock --wsgi-file test.py
加入失败,错误如下:
connect() to unix:///path/to/your/mysite/mysite.sock failed (13: Permission
denied)

需要给socket添加权限,再次运行

uwsgi --socket mysite.sock --wsgi-file test.py --chmod-socket=666 # (very permissive)
5运行Django application with uswgi and nginx
uwsgi --socket mysite.sock --module mysite.wsgi --chmod-socket=664
配置 uWSGI .ini 文件
# mysite_uwsgi.ini file
[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /path/to/your/project
# Django's wsgi file
module          = project.wsgi
# the virtualenv (full path)
home            = /path/to/virtualenv

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = /path/to/your/project/mysite.sock
# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

运行以下命令就可以拉起django服务

uwsgi --ini mysite_uwsgi.ini # the --ini option is used to specify a file
添加uWSGI为系统启动运行

编辑文件/etc/rc.local, 添加下面内容到这行代码之前exit 0:

/usr/local/bin/uwsgi --socket /path/to/mysite.sock --module /path/to/mysite.wsgi --chmod-socket=666

© 著作权归作者所有

上一篇: 一行Python代码
下一篇: Python操作json
人间四月
粉丝 2
博文 74
码字总数 30455
作品 0
朝阳
程序员
私信 提问
centos Nginx+Tomcat+Session共享+SSL证书+mysql读写分离

现在阿里云服务器上申请SSL证书。然后绑定服务器ip。 服务器配置: 192.168.0.1(42.42.42.42(公网ip)) 192.168.0.2 192.168.0.3 192.168.0.4 192.168.0.5 服务器提供一个对外的弹性ip(公...

微笑出品
2017/10/30
24
0
创建django project及app中的若干问题

1、运行djando-admin.py创建不了project??——默认编辑器的问题 因为在linux下,django-admin.py是可执行文件,所以就执行了。windows下,虽然django-admin.py是可执行文件,但是windows默...

zhoujie0111
2013/06/16
0
0
编辑 SpringBoot | 第五章:多环境配置

原文出处:oKong 前言 写上一篇看英文资料,耗费了心力呀,这章,相对来说简单点。也比较熟悉,但是这很实用。不扯了,开始~ 多环境配置 在开发应用时,常用部署的应用是多个的,比如:开发、...

oKong
2018/08/01
0
0
SpringBoot | 第五章:多环境配置

前言 写上一篇看英文资料,耗费了心力呀,这章,相对来说简单点。也比较熟悉,但是这很实用。不扯了,开始~ 多环境配置 在开发应用时,常用部署的应用是多个的,比如:开发、测试、联调、生产...

oKong
2018/07/15
679
3
Spring Cloud Spring Boot mybatis分布式微服务云架构属性配置文件详解

通过命令行设置属性值 相信使用过一段时间Spring Boot的用户,一定知道这条命令:,通过使用–server.port属性来设置xxx.jar应用的端口为8888。 在命令行运行时,连续的两个减号就是对中的属...

itcloud
2018/06/29
7
0

没有更多内容

加载失败,请刷新页面

加载更多

006-Docker中导出单个或多个tar包

docker中导出单个镜像和多个镜像的tar包 docker save [images] > [name.tar] docker save [images] [images] > [name.tar]...

伟大源于勇敢的开始
今天
6
0
Kotlin基础语法学习

安装好安卓studio,以及插件支持Kotlin 就可以在创建项目的时候选择 Kotlin语言了。 https://www.jianshu.com/p/4ab13691d681 参考手册: https://www.runoob.com/kotlin/otlin-android-setu...

T型人才追梦者
今天
4
0
java实现简单计算器

1.概述 之前作者写过一篇文章,也是关于计算器的,用的是C++与Qt,链接在这里 这次用java的swing写的(这差距好像有点大,好吧是qt太强了). 先上图: 2.UI 总体布局使用流布局. (1)文本框 文本框就...

Blueeeeeee
今天
4
0
纯CSS实现DIV悬浮(固定位置)

纯CSS实现的DIV悬浮效果(固定位置),兼容常用的浏览器:IE8、360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗等。效果如下: 实现代码: <!DOCTYPE html> <html> <head> <meta ...

独钓渔
今天
6
0
OSChina 周二乱弹 —— 给我来个女菩萨

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐#分享XXXTENTACION/Travis Barker的单曲《Pain = BESTFRIEND》: 《Pain = BESTFRIEND》- XXXTENTACION/...

小小编辑
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部