Django 部署到微信炸金花程序开发

在网上搜了很多篇微信炸金花程序开发( h5.super-mans.com Q:2012036433)微信炸金花程序开发
,忙了一下午头昏脑胀,最终完成了部署。部署文章流程讲解都很好,但在细节上或许缺乏一些注意力,导致我多篇文章来回切换在字里行间寻找蛛丝马迹。既然我完成了部署,那我何不写下自己的流程和心得,让后来人有一些参考?

原理

Django+uwsgi+Nginx的工作模式如下图所示,三个服务各司其职,分别为:

Nginx负责接收浏览器的连接,静态文件Nginx能够自己处理,有诸如查询数据库,判断输入数据等,调用uwsgi。
uwsgi为web网关服务网关接口,起到桥梁的作用,连接Django应用和Nginx。对于Nginx的调用,会发回给Django应用。
Django实际的生产者,处理业务逻辑,读写数据库,流程判断等,实现网站具体的功能。

部署流程

一、完成的Django项目

首先,要有一个完成的Django项目,通过浏览器能打开。

在我的服务器上有一个tutotial的Django项目,是个博客的学习项目。

使用python manager.py runserver 0.0.0.0:8000能够运行。通过浏览器访问是正常的。

二、安装uwsgi并配置

2.1 安装uswgi。

使用pip工具安装uswgi,pip install uswgi

使用一个测试程序来测试uswgi能否正常运行。新建一个test.py,内容如下。

test.py

使用命令:uwsgi --http :8002 --wsgi-file test.py,开启一个uswgi的服务。--http指访问端口为8002,--wsgi-file 指uwsgi的请求处理函数为test.py。如下图所示,为开启之后正常的输出项

通过浏览器能够访问到该服务。当访问端口8002时,处理函数为test.py中的application,返回一个text,格式为html,内容是“hello world”。

2.2 配置uswgi文件

使用uswgi作为nginx和django之间的搬运工,要将服务长久化就必须写一个配置文件。如下配置文件,路径在django主目录,是对上一步骤的命令行中命令的文件化。其中我们熟悉的配置项:

对外端口 http:9000,指定服务的开启端口
wsgi-flie tutorial/wsgi.py 指定请求的处理文件,在django项目中自动创建的文件。位于tutorial/tutorial/wsgi.py
除此之外还有:

chdir django的主目录
socket 和nginx交互的端口。
daemonize 让程序后台运行。默认开启程序时如上图中会在终端中输出连接信息,开启该项配置关闭输出信息。
uwsgi起到一个桥梁的作用,具体体现在:wsgi-file连接django项目,socket连接Nginx。

uwsgi.ini

复制代码
[uwsgi]

对外提供 http 服务的端口

http = :9000

#the local unix socket file than commnuincate to Nginx 用于和 nginx 进行数据交互的端口
socket = 127.0.0.1:8001

the base directory (full path) django 程序的主目录

chdir = /home/ccf/code/django_learn/tutorial

Django‘s wsgi file

wsgi-file = tutorial/wsgi.py

maximum number of worker processes

processes = 4

#thread numbers startched in each worker process
threads = 2

#monitor uwsgi status 通过该端口可以监控 uwsgi 的负载情况
stats = 127.0.0.1:9191

clear environment on exit

vacuum = true

后台运行,并输出日志

daemonize = /var/log/uwsgi.log
复制代码

2.3 运行uwsgi

使用uwsgi可执行文件,载入uwsgi.ini配置文件。

当程序运行之后,有两个端口可以访问到:

http:9000 能够通过端口9000访问
socket 预留给Nginx访问。
如下使用9000端口,访问到django的项目。

三、安装Nginx服务器

3.1 安装Nginx

使用apt-get install nginx,一键安装nginx。

3.2 配置nginx

上面的配置中,uswgi已经连接到django,大桥的一端已经通车,剩下的就nginx和uwsgi合龙。nginx的配置项路径为:/etc/nginx/nginx.conf。如下是nginx的完整配置文件,修改如下蓝色字体。在http的配置项中增加了一个server配置项,该server就是连接uwsgi服务的配置。

/etc/nginx/nginx.conf

复制代码
user root;
worker_processes auto;
pid /run/nginx.pid;

events {
worker_connections 768;

multi_accept on;

}

http {

##
# Basic Settings
##

sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

include /etc/nginx/mime.types;
default_type application/octet-stream;

##
# SSL Settings
##

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;

##
# Logging Settings
##

access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;

##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

##
# Virtual Host Configs
##

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

server {
#这里是访问时用到的端口
listen 8000;
server_name 127.0.0.1;
charset UTF-8;
#这块存让日志文件
access_log /var/log/nginx/SchoolBuy_access.log;
error_log /var/log/nginx/SchoolBuy_error.log;
client_max_body_size 75M;
location / {
#一定要有该配置项
include uwsgi_params;
#同uwsgi内容,连接uwsgi的socket。
uwsgi_pass 127.0.0.1:8001;
#链接超时时间
uwsgi_read_timeout 30;
}

      location /static/ {
           autoindex on;
           #这里的路径一定要到达静态文件的文件夹。即collectedstatic/,重点在最后的横杠。不然会报错
           alias /home/ccf/code/django_learn/tutorial/collectedstatic/;
           }

      location /media/ {
              autoindex on;
            alias /home/ccf/code/django_learn/tutorial/media/;
      }

}
}

#mail {

See sample authentication script at:

http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript

auth_http localhost/auth.php;

pop3_capabilities "TOP" "USER";

imap_capabilities "IMAP4rev1" "UIDPLUS";

server {

listen 8088;

protocol pop3;

proxy on;

}

server {

listen localhost:143;

protocol imap;

proxy on;

}

#}
复制代码
listen nginx监听的端口

include uwsgi_params 必填项

uwsgi_pass 127.0.0.1:8001 连接uwsgi的socket的端口。

其中稍难理解的是location/staic 和 location/media。简单来讲,在一个完整的django项目中,为了便于django发布应用,就是部署到web服务器,会将所有的静态文件和图形图像文件放在一个指定的文件夹中,这样Nginx收到请求之后就不用再去询问django,而是直接去指定的静态文件夹中获取。该方法极大的增加了并发的数量。static和media就是django的两个静态文件夹,在我的环境中如下:

media文件根据django项目而定是否有,如果没有collectedstatic文件夹要执行如下两步:

1、配置setting.py文件,添加STATIC_ROOT配置项,指定静态文件的收集文件夹当前路径下的collectedstatic/,当前路径指django主项目路径。

2、执行 python manage.py collectstatic,收集所有的静态文件。

3、可以查看在django主目录下出现了collectedstatic,内容如下,为admin的后台的css,js等文件和blog项目的静态文件。

3.3 使配置生效

Nginx检查配置文件

nginx -t 是nginx检查配置文件是否有错误的命令,如果正常,输出如下:

使配置文件生效

nginx -s reload 是nginx重新载入配置文件的命令,可以让配置项生效。

3.4 浏览器访问

浏览器能够正常访问,部署成功。

在部署中每个人都会遇到自己的问题,我的经验也不适用于所有人。参考我的过程,如果遇到问题,欢迎留言交流。

原文地址:http://blog.51cto.com/13596939/2068942

时间: 2024-11-07 20:11:31

Django 部署到微信炸金花程序开发的相关文章

nopcommerce4.2微信小程序/微信商城开发/微信电商程序开发

基于nopcommerce4.2 开发的微信小程序1.0版本,实现了电商的基础功能,用户可以正常下单.  分类:支持两种情况 1.只需要一级分类(顶部一级分类,下面商品展示) 2.需要展示多级分类(左一级分类,右侧二级分类),点击分类跳转到对应的分类商品 (下面为只需要一级分类的,情况截图)  商品页:轮播图片.价格信息.简要信息.详情信息.属性规格选择等(评价功能完善中) PS:其他信息,例如相关商品展示,后期在完善! 商品属性规则选择  购物车(删除/修改数量) 订单页:地址.留言.价格.运

微信小程序详细图文教程-10分钟完成微信小程序开发部署发布(3元获取腾讯云服务器带小程序支持系统)

很多朋友都认为微信小程序申请.部署.发布很难,需要很长时间. 实际上,微信和腾讯云同是腾讯产品,已经提供了10分钟(根据准备资源情况,已完成小程序申请认证)完成小程序开发.部署.发布的方式.当然,实现的是基础功能.但是,可以给学习者很便捷的体验和很好的启发. 不过,随着微信平台和云服务的发展,真担心,程序猿会失业! 目录 一.微信小程序申请 二.服务器设置(申请.部署.域名) 1.申请服务器 2.部署服务器 3.域名申请和配置 三.小程序发布 1.下载DEMO 2.下载开发工具并安装 3.配置参

Consul服务之微信H5炸金花出租平台搭建注册与发现

服务发现是基于微服务架构的关键原则之一.尝试配置每个客户端或某种形式的约定可能非常困难,可以非常脆弱.Consul通过HTTP API和DNS提供服务发现服务.Spring Cloud Consul利用HTTP API进行服务注册和发现.这不会阻止非Spring云应用程序利用DNS界面.Consul代理服务器在通过八卦协议进行通信的群集中运行,并使用筏式协议协议. 微信H5炸金花出租平台搭建参考网站:h5.fanshubbs.com 联系Q1687054422 Consul 四大特性 Servi

Java游戏服务器微信房卡炸金花平台出租成长之路

Java游戏服务器成长的微信房卡炸金花平台出租QQ1279829431(h5.mostsheng.com)17061863554源码出售平台出租系列,已经很长时间没写了,不是不想写,而是这一年,基本都是在忙别的了,今天特地挤出时间,对我的2016年,做一个不留遗憾的总结. 2016的事件 不知不觉,又到了春节抢票的时候了,这两天除了盼着年终能发点奖金以外,就是盼着能买一张合适的火车票,今年是离家最久的一年,幸运的是,我成都的小房子要结房了,必须要我本人到场,这就能给我一个理由多请一周的假提前回去

微信房卡炸金花搭建之【Webpack3.x】学习笔记

微信房卡炸金花搭建之[Webpack3.x]学习笔记资源下载:http://www.aqiulian.com,更多Webpack3.x相关问题询问QQ:212303635 本文环境:Visual Studio Code.Windows10 什么是Webpack? WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Sass,TypeScript等),并将其转换和打包为合适的格式供浏览器使用.在3.0出现后,W

如何入门微信小程序开发

最近微信开发小程序挺火的,自己选择了腾讯云官方推出的相册. 先下载: 破解版IDE下载地址,以及使用说明: http://download.csdn.net/detail/richard_jason/9660819 http://download.csdn.net/detail/richard_jason/9660821 这里由于csdn有上传大小限制,所以只能做两次上传了.要放在一起看哦. 安装步骤 一个步骤都不能错哦 1.安装0.7 - 扫码登陆 - 关闭0.7 2.安装0.9 --不要启动

如何快速开发一套微信商城小程序?

小程序的价值相信已经不用我多说,未来大部分应用场景都将使用微信小程序进行研发.开发一套商城小程序需要哪些步骤,怎么开通?快搞定小编来为大家解疑. 第一步:确定商城小程序产品功能.UI风格 在设计小程序的时候一定要符合"轻便.即用即走"的定位,小程序只是场景化的产品,功能不宜过多,更多的是起到平台覆盖和完善用户使用场景的作用. 第二步:注册微信小程序并申请微信支付 进入微信公众平台mp.weixin.qq.com,按提示注册即可.需注意的是,个人暂时不能注册小程序,注册时必须提供企业营业

我们的微信小程序开发

基于微信小程序的系统开发准备工作 腾讯推出微信小程序也有一段时间了,在各种行业里面也都掀起一阵阵的热潮,很多APP应用被简化为小程序的功能迅速推出,同时也根据小程序的特性推出各种独具匠心的应用,相对传统的APP来说,微信小程序确实能够大大降低开发成本和难度,但也意味着需要掌握整个微信小程序的各种接口功能.应用场景等相关技术点,本篇随笔先从大的方面来介绍微信小程序开发的一些知识,如架构设计.技术路线 .工具准备等方面做一些浅薄的介绍,希望大家也有所收益,有所借鉴,则善莫大焉. 1.小程序的统一架构

一个C语言开发的炸金花纸牌游戏附带vs性能分析报告

一.游戏说明: 编写的是一个模拟炸金花的纸牌游戏,游戏附有一个操作说明文档,按照文档上的操作方法,可以简单的开启游戏,整个程序包扩一个编译好的.exe文件,和两个资源文件夹,分别存有该游戏运行时候所需要的照片资源和音乐资源,用户可以直接点击exe文件运行游戏,然后按照相关操作方法来进行游戏. 二.编程语言环境介绍: 本游戏是在VC6.0环境下,用C语言加上一个easyx的C语言图形库实现的.程序源文件建立的是.cpp文件,但是程序开发是采用的C语言语法和风格,建立.cpp文件的原因是,easyx