这里是更新的部分--------------------------------------
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
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
选择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+小程序