django+nginx+gunicorn+pipenv微信小程序实践笔记
一、我采用pipenv来管理虚拟环境,在本地新建虚拟环境:
mkdir wxProject
#进入环境目录,创建虚拟环境
pipenv install
#激活虚拟环境
pipenv shell
#然后可以安装必须的工具
pipenv install django,django-simple-serializer(一个Model的序列化工具),requests,gunicorn (WSGI服务器)
#创建django项目
django-admin startproject wxMINI
#进入项目根目录并使用管理工具manage.py创建django应用
python manage.py startapp wxAPP
#然后就可以用IDE工具开发项目
遇到的问题:
1、BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR是项目的根目录,在其它地方使用是os.path.join(BASE_DIR,'media/photo/')这样的路径拼接中,后面的'media/photo/'前面不应该做“/”,
#这种写法会路径错误
os.path.join(BASE_DIR,'/media/photo/')
2、STATIC_ROOT是必须的,在部署时收集静态文件python manage.py collectstatic会根据该设置项进行自动处理(比如ADMIN用到的CSS,JS文件)
STATIC_URL是网络访问引用名,因为在实际的接口或程序中生成静态文件的相对路径,然后根据该引用名进行访问。
3、gunicorn启动服务:gunicorn -w 2 -b 127.0.0.1:8080 wxMINI:wsgi:application
-w:启动进程数
-b:绑定本地端口
wxMINI:项目目录下同名文件夹(项目配置文件目录)
wsgi:固定的文件名,django创建项目时自动创建的
application:固定名称,django自动创建的wsgi中的服务应用入口
4、nginx
server {
charset utf-8;
listen 80;
server_name elle.meme-info.com;
access_log /www/wwwroot/wxMini/MiniX/logs/nginx.access.log;
error_log /www/wwwroot/wxMini/MiniX/logs/nginx.error.log;
location /static {
alias /www/wwwroot/wxMini/MiniX/static;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
5、微信小程序接口统一使用https,阿里云可开通免费SSL认证证书,同时开通CDN,解析域名设置回源路径等。
6、进程管理supervisor
yum install supervisor
默认配置文件为/etc/supervisor.conf,它包含了默认配置项,具体项目的配置在/etc/supervisor.d/*.ini。可以根据项目或进程来新建配置文件,以项目或进程命名独立分开
[program:myapp] command=/home/root/myproject/.venv/bin/gunicorn -w4 -b0.0.0.0:2170 myapp:app ;supervisor启动命令
directory=/home/root/myproject ; 项目的文件夹路径
startsecs=0 ; 启动时间
stopwaitsecs=0 ; 终止等待时间
autostart=false ; 是否自动启动
autorestart=false ; 是否自动重启
redirect_stderr=true ; 把 stderr 重定向到 stdout,默认 false
stdout_logfile=/home/root/myproject/log/gunicorn.log ; log 日志
stderr_logfile=/home/root/myproject/log/gunicorn.err ; 错误日志
#日常管理
supervisorctl status # 查询进程状态
supervisorctl stop node # 关闭 [program:node] 的进程supervisorctl start node # 启动 [program:node] 的进程supervisorctl restart node # 重启 [program:node] 的进程supervisorctl stop all # 关闭所有进程supervisorctl start all # 启动所有进程supervisorctl reload # 重新读取配置文件,读取有更新(增加)的配置文件,不会启动新添加的程序supervisorctl update # 重启配置文件修改过的程序django+nginx+gunicorn+pipenv微信小程序实践笔记的更多相关文章
- 微信小程序练习笔记(更新中。。。)
微信小程序练习笔记 微信小程序的练习笔记,用来整理思路的,文档持续更新中... 案例一:实现行的删除和增加操作 test.js // 当我们在特定方法中创建对象或者定义变量给与初始值的时候,它是局部 ...
- 【微信小程序学习笔记】入门与了解
[微信小程序学习笔记(一)] IDE 下载安装 下载地址 官方工具:https://mp.weixin.qq.com/debug/w … tml?t=1476434678461 下载可执行文件后,可按 ...
- 微信小程序学习笔记二 数据绑定 + 事件绑定
微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...
- 微信小程序学习笔记一 小程序介绍 & 前置知识
微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...
- Django基于JWT实现微信小程序的登录和鉴权
什么是JWT? JWT,全称Json Web Token,用于作为JSON对象在各方之间安全地传输信息.该信息可以被验证和信任,因为它是数字签名的. 与Session的区别 一.Session是在服务 ...
- 微信小程序实战笔记
前言: 微信小程序最近刚从鹅厂生产出来,我有幸参与了一次小程序的实战,有必要记录我的开发过程.看上去小程序很简单,但是在深入开发的时候才能具体体会里面的变化,接下来记录我的第一个微信小程序的点点滴滴! ...
- 微信小程序学习笔记(阶段一)
一阶段学习过程: (一)看官方文档的简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/ (二)看小码哥视频:https://chuanke.baidu.co ...
- 一个C#程序员学习微信小程序的笔记
客户端打开小程序的时候,就将代码包下载到本地进行解析,首先找到了根目录的 app.json ,知道了小程序的所有页面. 在这个Index页面就是我们的首页,客户端在启动的时候,将首页的代码装载进来,通 ...
- 微信小程序开发笔记
前言: 因为前段时间一直在做关于微信小程序方面的项目,作为一名后端的攻城狮而言做一些简单的前端页面数据操作和管理还是比较容易快上手的,当然前提是要理解微信小程序的基本语法和请求原理.该篇博客主要记录的 ...
随机推荐
- 水管工游戏——dfs
问题描述: 水管工游戏是指如下图中的矩阵中,一共有两种管道,一个是直的,一个是弯的,所有管道都可以自由旋转,最终就是要连通入水口可出水口.其中的树为障碍物. 方案: 输入格式:输入的第一行为两个整数N ...
- 【转】Oracle EBS中查询Profile的各种SQL
参考 http://blog.csdn.net/pan_tian/article/details/7652968#t0 Using API FND_PROFILE.save to update pro ...
- 实现一个自定义的ArrayList类,实现将原List中的每个数据都乘以10
1.首先自定义一个Operate接口,如下所示: public interface Operate { public Integer caozuo(Integer i); } 2.实现自定义的Arra ...
- 【论文速读】Fangfang Wang_CVPR2018_Geometry-Aware Scene Text Detection With Instance Transformation Network
Han Hu--[ICCV2017]WordSup_Exploiting Word Annotations for Character based Text Detection 作者和代码 caffe ...
- awk、sed、date命令使用
个人学习笔记总结 [root@a ~]# awk 'END{print NR}' c.txt #没错,这就是文件的行数,当然,这种统计方法不是linux下最快的,但也是一种思路3[root ...
- java消息服务学习之JMS概念
JMS即Java消息服务(Java Message Service)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信. ...
- 5.1JAVA基础复习——JAVA中的静态代码块、构造代码块、构造函数、局部代码块区别
构造代码块: 在类中定义可以给所有对象进行初始化.局部代码块: 在方法中定义属性的生命周期.静态代码块: 在类中定义用于给类调用时属性的初始化 构造函数与构造代码块的区别: 构造函数是给对应的对象进行 ...
- window 10 删除带有管理员权限的Oracle文件夹
因为文件已经被删除就不附图解释了 因为文件安装的方式错误,所以本是按照正常步骤卸载Oracle,前面的禁用Orace服务与删除Oracle注册表都没有出错,但到最后一步---------Oracle文 ...
- Max Sum Plus Plus HDU - 1024
Max Sum Plus Plus HDU - 1024 Now I think you have got an AC in Ignatius.L's "Max Sum" ...
- 加域电脑登陆系统后桌面文件丢失,登录系统提示用户名为“Temp”。
注册表中定位到“HKEY_LOCAL_MACHINE\\\\SOFTWARE\\\\Microsoft\\\\Windows NT\\\\CurrentVersion\\\\ProfileList”, ...