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页面就是我们的首页,客户端在启动的时候,将首页的代码装载进来,通 ...
- 微信小程序开发笔记
前言: 因为前段时间一直在做关于微信小程序方面的项目,作为一名后端的攻城狮而言做一些简单的前端页面数据操作和管理还是比较容易快上手的,当然前提是要理解微信小程序的基本语法和请求原理.该篇博客主要记录的 ...
随机推荐
- sitecore 8.2 item属性查询
查询: query:/sitecore/content/[@@templatename='Homepage'] 结果: home (name: home, path: /sitecore/conten ...
- 用Java实现图片验证码功能
一.什么是图片验证码? 可以参考下面这张图: 我们在一些网站注册的时候,经常需要填写以上图片的信息. 1.图片生成实体类: package com.hexianwei.graphic; import ...
- 解决 flannel.1 interface state DOWN
ip a 查看结果 flannel.1 i state UNKNOWN 并且五 inet 发现日志 device (flannel.1): state change: unmanaged -> ...
- IP通信第四周作业
一.选择交换机的主要技能指标是什么? a.背板带宽.二/三层交换吞吐率. b.VLAN类型和数量. c.交换机端口数量及类型. d.支持网络管理的协议和方法.需要交换机提供更加方便和集中式的管理. e ...
- CodeForces - 468A
Little X used to play a card game called "24 Game", but recently he has found it too easy. ...
- ios开发蓝图
- 使用nginx代理kibana并配置登录验证
由于kibana不支持登录验证,谁都可以访问,放到公网就不合适了,这里配置用nginx进行代理: 生成密码文件 如果安装了httpd可以用htpasswd,比较方便: htpasswd -c /roo ...
- android架构原理
应用层(与用户打交道) 应用架构层(常用的组件和服务) 系统运行层(Android运行环境+原生c/c++库) Linux核心层(linux内核+硬件抽象层)
- Linux性能优化-理解平均负载
1 平均负载含义 当系统变慢的时候,我们一般使用 top 或 uptime 命令来查看系统平均负载情况. 正确定义:单位时间内,系统中处于可运行状态和不可中断状态的平均进程数.错误定义:单位时间内的c ...
- 踩坑之路---JWT验证
使用JWT验证客户的携带的token 客户端在请求接口时,需要在request的head中携带一个token令牌 服务器拿到这个token解析获取用户资源,这里的资源是非重要的用户信息 目前我的理解, ...