flask+微信小程序开发(小白级+全开源+免费技术支持[仅这个项目])

时间:2024-02-21 07:44:50

这里是更新的部分--------------------------------------

1. 部署uWSGI+Supervisor来代替manage.py runserver,只需要简单的几步

上面是我的文件信息

配置uWSGI(记得在虚拟环境下)

安装uWSGI

pip install uwsgi
uwsgi --version  # 查看版本

在manage.py目录下,创建uwsgi.ini文件并编辑,即vim uwsgi.ini 即可,然后添加以下配置

[uwsgi]
master = true  # 启动主进程
http=:5000  # flask是用htttp,:5000 等同于0.0.0.0:5000,但写法不同
chdir = /home/flask_work  # 项目目录
wsgi-file=/home/flask_work/manage.py  # 项目对应的启动文件
callable=app  # 启动文件里面的实例化目标
processes=4  # 进程数,一般是4,看核数,我的云服务是1核...(穷)
threads=2  # 线程数,一般是2,氪金大佬随意
buffer-size = 65536  # 包解析大小,这是配置的64K
vacuum=true  # 自动移除unix Socket 和 Pid 文件 当服务停止的时候
pidfile =uwsgi.pid  # 记录主进程pid号

此时uWSGI已配置完毕,是不是贼简单,当然这是简单版的,启动

 

uwsgi --ini uwsgi.ini  # 启动uwsgi,一定要在uwsgi.ini所在目录
nohup 和 &  # 是指后台运行,此时你回车两下,可以输入命令后,就exit退出这个终端
# 可以在另外的新窗口ps -ef|grep uwsgi看到你已经开启的python服务(记得先关掉原有的runserver)

此时还不够安全,万一uWSGI挂掉了呢?这时候就需要Supervisor来监控并启动uWSGI

echo会自动帮你生成supervisor配置文件,你只需要在最下面加上这段话

[program:flask_work]
command = /root/.virtualenvs/flask_work/bin/uwsgi /home/flask_work/uwsgi.ini
autostart=true
# 以下备注记得不要也复制上去,就复制上面3段就可以了
# [] 第一段表示文件的目录
# 第二段 表示启动命令,前半段是你的虚拟环境里面的uwsgi,不同服务器地址不同,记得看,后半段是uwsgi地址
# autostart 是启动启动

是不是很简单~

# 然后你supervisorctl reload 重启即可
ps -ef|grep uwsgi   # 查看uwsgi信息
kill -9 17025  # 杀掉uwsgi,17025是id号
# 如果杀掉,然后还能看到,而且启动时间成改,即成功!

 

这里是更新的部分--------------------------------------

1. 部署概括:服务器网络、python包、centos环境、mysql/pymysql、npm、nginx、git、

https://github.com/ben1234560/flask_and_wx_samllapp GitHub

https://gitee.com/benjas/CRMXiTongandWoDeShangCheng gitee

+++++++++++++++++++++++++++++++++++

应大家需求:把小程序的后台管理数据/仅cengtos部署版本,超简单(利用flask-admin开发出来[可增删改],能够显示数据[如果要更加完善需要各位的可以自行修改])

快速学习并利用flask-admin[只动了两个模块]

# 终端安装flask_admin 和 中文转换的flask_babelex
pip install flask_admin
pip install flask_babelex

 

# application/apps/index/models.py
# 导入模块
from flask_admin.contrib.sqla import ModelView

# 配置基本模型,主要是进程ModelsView,方便开发,你可以直接在manage.py用ModelView替换它,这样你都不用过来models这里写东西了

class BaseModelview(ModelView):
    def getinfo(self):
        return "this is another model"

 

# manage.py代码部分
from application.apps.index.models import Department,Users,BaseModelview
from flask_babelex import Babel
from flask_admin import Admin

# 给flask_admin添加视图,name是网址名称,template_mode是指定的模板,有2和3
# BaseModelview就是models里面定义的模型类Users和Department也是
admin = Admin(app, name=\'后台管理系统\', template_mode=\'bootstrap3\')
admin.add_view(BaseModelview(Users, db.session,name=\'用户管理\'))
admin.add_view(BaseModelview(Department, db.session, name=\'部门管理\'))

# 中文化方式
babel = Babel(app)
app.config[\'BABEL_DEFAULT_LOCALE\'] = \'zh_CN\'

配置完成,启动(在manage所在的文件下,python manage.py runserver)访问http://127.0.0.1:5000/admin 即可

以下是部署到centos7服务器上

# /etc/nginx/conf.d/default.conf,给nginx启动文件配多一个server并重启nginx即可
server{
    listen  8000;
    server_name www.ben123123.club;        # 监听域名及端口
      location /admin {
        proxy_pass  http://127.0.0.1:5000/admin;
    }
 }

 

 

 

+++++++++++++++++++++++++++++++++++

以下是正文---------

2. 快速部署[centos7/window10,最快的学习就是实践]

  centos6配置

  需要用到

  • 云服务器【我用的是最低配置90天的腾讯云服务器,因为只有90天以上的服务器才可以备案】
  • 一个已备案的域名【没备案的一定要先备案,我的审核了3个星期才通过,我是1块钱买的一年club尾缀的】https://cloud.tencent.com/
  • xshell连接服务器【你可以用电脑自带的cmd】

  开始:

  1.1 域名全开端口+前缀

  1.2 python3环境配置

ssh root@IP  # root用户远程登陆云服务器

  

  

wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
# 找到Python-3.6.8.tgz(一般在当前目录),并解压Python-3.6.8.tgz 到当前文件夹
tar -zxvf Python-3.6.8.tgz

# 进入解压出来的文件夹中
ls # 查看当前目录情况
cd Python-3.6.8/
# 编译安装
./configure --prefix=/usr # 注释:--prefix是设置安装位置
make && make install

# 安装完成后 输入以下命令即可查看是否安装成功
which python3
# 下载相关库
yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

  1.3 Python开发之必备虚拟环境virtualenv

pip3 install -i https://pypi.doubanio.com/simple virtualenv #虚拟环境
pip3 install virtualenvwrapper -i https://pypi.doubanio.com/simple # 虚拟环境管理器

# 设置虚拟环境的储存路径
mkdir $HOME/.virtualenvs

配置虚拟环境的系统环境变量[其中调用python3的路径,不同的服务器路径不同]:
vim ~/.bashrc
# 然后在最下面添加下面四句命令:
export WORKON_HOME=$HOME/.virtualenvs  # 设置虚拟环境目录
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=\'--no-site-packages\'  #纯净初识化,也可以不写[这段注释要删掉,因为前面的引号问题]
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 # 默认python版本为python3
source /usr/bin/virtualenvwrapper.sh  # shell登录时直接执行该文件

# 配置完成后重新运行一下.bashrc文件:
source ~/.bashrc
# 测试一个创建一个虚拟环境:
mkvirtualenv test # 创建一个虚拟环境叫test
workon # 查询有什么虚拟环境
workon test # 使用test虚拟环境
pip list # 查看当前下载中的库
deactivate  # 退出当前虚拟环境
rmvirtualenv test # 删除test虚拟环境

  1.4 官方自带的yum源有一些软件版本会比较旧,所以我一般用的yum源用的阿里云。

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all    清除所有缓存
yum makecache    重新生成缓存

  1.5 git工具的安装

yum install git     # 安装git工具
# 进入项目存储的环境(一般放在自己家目录,由于我是root用户,我就放在home目录下)
cd /home
git clone https://gitee.com/个人网址/lufei_pc.git    # 自己的github项目地址
ls #  查看当前文件下的文件

  2.1 将我的后端代码flask_centos从网上clone下来[可能你是从GitHub过来,也可能是gitee,不过用法大同小异,以下是gitee]

cd /home  # 去到home目录下,我一般都是把代码放home目录,看个人
git init # 创建本地仓库
git clone https://gitee.com/benjas/CRMXiTongandWoDeShangCheng.git
cd xxx  # 进入下载的工程目录,没登录的记得登录,上面有
git checkout -b 远程仓库分支名字 origin/远程仓库分支名字 
git pull #进行更新

  2.2 同步python环境(记得先启动虚拟环境)

mkvirtualenv xxx   # 环境虚拟环境,创建的时候不用-python3,因为我们之前已经配置好bashrc文件了,deactivate退出虚拟环境 workon xxx 进入虚拟环境
cd 项目目录的dock #下面有一个requirement.txt就是生成的后端运行包 pip install
-r requirement # -r读,安装这个文件的全部包,你也可以先打开看看

  安装过程你可能会发生以下报错,而且网上很多解决方法都是混乱的或者没有的

  关于安装MySQL-python找不到ConfigParser模块

  原因:pip是基于python3+版本的,在 Python 3.x 版本后,ConfigParser.py 已经更名为 configparser.py 所以出错

find / -name configparser.py  # 找到它,并复制一份报错所需的模块即可

  重新安装发现新的问题,找不到mysql_config模块

  原因:MySQL的bin目录没有配置到root用户的.bash_profile文件中,也没有配置到/etc/profile中,所以才会导致找不到mysql_config命令

yum install mysql-devel  # 安装相关模块

  以下报错你可能不会发生,因为我修改了一下requirement包,也可能会,即安装pygoject无法安装

  即使换版本也报错,就试下这个(删掉requirement里面的gobject独立安装它)

yum install python-gobject gtk3

  此时python包已安装完成,记得修改setting里面的文件配置即可

  3.1 安装mariaDB(Linux/CentOS7.0发行版已将默认的数据库从 MySQL 切换到 MariaDB两人除了名字简直就是一个东西,而且mysql在该环境下极其难装)

yum install mariadb-server mariadb -y  # 安装
systemctl start mariadb  # 启动

# 确保mariadb服务器启动后,执行命令初始化
mysql_secure_installation

mysql -uroot -p123  # 进入数据库,你可以做跟mysql一模一样的操作了
# 此时你可以设置一个对应的用户权限给对应的库,我没有
create database company_info charset=utf8mb4;  #company_info是对应的数据库名字,后面拉数据需要用到的
show databases;  # 看下是否创建成功,成功就退出迁移数据
exit;  # 退出数据库

  3.2 删除原有数据版本及迁移测试数据

rm -rf migrations  # -rf即强势删除目录[*]
# 数据模型迁移,迁移成自己的migrations

python manage.py db init # 项目刚创建时进行初始化
python manage.py db migrate -m \'创建基本数据库\'
python manage.py db upgrade

mysql -uroot -p123 company_info < company_info.sql  # 前面的company是数据库内的刚刚创建的库,company_info.sql 是可迁移的测试数据

# 迁移完成后可以进去库内看一下
mysql -uroot -p123
use company_info;
show tables;
select * from tb_use; # tb_use是表名字

# 此时可以启动python后端,在manage所在的文件下,python manage.py runserver

  4.1 nginx安装配置及启动[非虚拟环境下安装]

yum install -y nginx

  需要报错,先执行以下操作,再继续安装

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx

whereis nginx # 查看位置在哪里

  如果发生以下报错 解决 /var/run/nginx.pid failed

nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
sudo nginx -c /etc/nginx/nginx.conf
nginx -s reload # 重启nginx

  4.2 配置nginx【此步骤前必须已先处理好小程序的域名备案及证书,未处理可看下面小程序篇,而且小程序请求的网址也需要改改,那是我的服务器网址,会开一段时间但别搞事情,因为我很多东西都没配...】

https://cloud.tencent.com/document/product/400/35244 这是证书指南,不过路径需要改一下,证书还要生成,下面的小程序篇有网址

 

server {
    listen  8080;
    server_name www.ben123123.club;        # 监听域名及端口
     ssl on;
     ssl_certificate 1_www.ben123123.club_bundle.crt;#证书文件名称
     ssl_certificate_key 2_www.ben123123.club.key;#私钥文件名称
     ssl_session_timeout 5m;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #请按照这个协议配置
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#请按照这个套件配置
     ssl_prefer_server_ciphers on;
    location / {
        proxy_pass  http://127.0.0.1:端口号/;   # 当请求过来时,跳转到这个网址,也可以跳转到html等
    }
    location /static/ {

    }
 }
nginx -s reload # 重启即可
ps aux|grep nginx   # 查看当前nginx进程

 

   微信小程序配置

  1.1 申请证书及解析压缩证书

    https://cloud.tencent.com/document/product/400/8422官方链接

   2.1 window下微信小程序配置【只有window跟OS版】,最全的window下安装npm实现小程序构建npm

    下载 node.js http://nodejs.cn/download/

   

  选择C盘以外的盘,然后在cmd 里输入命令 node -v,如果有版本则成功,没有则配路径,以下是我的node路径

https://youzan.github.io/vant-weapp/#/quickstart 这是vant组件库的网址

  关于../wxs/utils.wxs not found from .报错

  点击工具/重新构建npm即可

  2.2 此时小程序也已经配完,你只需要修改一下请求的网址即可

  

  window 版,拉下window版的flask后端[删掉migrations迁移自己的migrations(上面有方法)并迁移测试数据即可],小程序按上面配置[然后修改下网址的访问为本地],备案没通过的就用window版

3. 关于微信小程序前端的一些知识

  1. setData的异步进行,获取数据后打印是没有的,但是wxml已经收到了

  2. setStorageSync 同步缓存的利用【数据更安全】

  3. 第三方组件vant-Weapp的使用

  4. 生命周期onLoad和onShow的合理利用(如果想要每次切换页面都刷新,就用onShow,而onLoad则是让页面数据显示看起来更流畅)

  5. 跳转到tarbar 页面需要不能用negativeTo等【swi...】

  6. 数据的安全需要前后端都进行检测限制

4. 关于该项目有什么问题都可以找我【或者以外的】QQ909336740,回复速度不定,祝各位能快速掌握flask+小程序