Flask框架项目_新经资讯
<>新经资讯
<>一.项目准备分析
<>1.项目目标
需求分析得到
<>2.数据来源
用户上传&网站爬取
<>3.项目开发模式
前后端不分离(新经资讯):数据服务和应用服务在同一个服务器
<>4.技术实现
基于的python语言+Flask框架实现 数据存储实现:SQL+Redis结合使用 第三方扩展:文件存储(七牛云),短信服务(云通讯)等
部署:基于ubuntu 16.04系统,使用 Gunicorn(服务器 )+ Nginx(负载均衡,反向代理)进行布署
<>5.分析功能模块
**首页** 根据分类进行新闻列表展示 上拉加载更多数据 点击新窗口跳转到新闻详情页 顶部显示用户登录信息,未登录显示登录/注册按钮 右侧显示新闻点击排行
**注册** 用户账号为手机号 图片验证码正确后才能发送短信验证码 短信验证码每60秒发送一次 条件出错时有相应的错误提示 **登录** 用手机号与密码登录
错误时有相应的提示 新闻详情 新闻内容 html 数据展示 用户点击收藏可以收藏当前新闻 根据当前登录用户显示收藏状态 用户可以评论该新闻
其他用户可以回复某一条评论 右侧显示新闻点击排行 如果当前新闻由具体作者发布,右侧显示作者信息,并且可以关注作者 **个人中心**
显示个人头像、昵称(未设置时显示为用户手机号) 提供我的关注、我的粉丝入口 提供修改基本资料入口 提供头像设置入口 提供密码修改入口 提供我的收藏入口
提供新闻发布入口 提供我发布的新闻的入口 *个人信息修改* 可以修改用户名 可以修改个人头像 登陆手机号不能修改 上传新头像后页面立即显示新头像 *我的关注*
以分页的形式展示数据 每页展示4个我关注的用户 可以在当前页面进行取消关注 点击关注用户的昵称跳转到用户信息页面 *我的收藏* 以分页的形式展示数据
按收藏时间倒序排序 *发布新闻* 可以发布新闻 可以将新闻页的图片上传到七牛云 发布完新闻跳转到我的新闻列表页面 *我发布的新闻*
按照发布的时候先后顺序排序,最近新闻排在前面 显示当前我发布新闻的新闻状态 点击审核通过的新闻直接跳转到新闻详情页 审核中的无法点击
未审核通过的新闻可以重新发布 点击审核失败的新闻跳转到新闻发布页面,并填充具体新闻内容 *查看其他人用户页面* 显示他人的头像、昵称、粉丝数
可以点击关注和取消关注按钮进行关注操作 展示他发布的新闻 点击新闻在新窗口中打开展示新闻详情 退出 提供退出功能 后台-登录 提供后台登录页面
如果当前用户已登录,进入到登录页面之后直接跳转到后台主页 **后台-用户统计** 登录到后台界面之后展示用户统计界面 显示用户总人数 展示当前月用户新增人数
展示当前日新增数 **后台-用户列表** 按注册时间顺序排序用户列表 显示用户注册时间 显示用户上次登录时间 **后台-新闻审核** 展示待审核新闻内容
点击进入新闻审核界面 可以对新闻进行审核 如果审核不通过,需要有拒绝原因 **新闻版式编辑 进入默认展示所有新闻数据 可以根据新闻标题搜索新闻
**新闻分类管理** 展示所有分类列表 可以添加/修改分类
<>二.项目框架搭建
<>1.Git版本控制
<>2.项目配置
数据库配置mysql&redis Sesson配置(redis存储) 数据库迁移配置
<>3.日志使用
便于程序调试 可以做用户行为分析 方便用户连接程序运行情况
<>4.代码抽取,模块化开发
<>5.数据库设计
ORM模式:对象关系映射,把对数据库的操作设置为对象的操作
<>6.静态文件导入
<>三.功能模块的代码实现
项目码云Gitee地址:https://gitee.com/Hugo1997/Infomation15.git
<>四.项目部署
<>1.阿里云服务器
选择云服务器:阿里云服务器 https://www.aliyun.com 个人免费获取 [https://free.aliyun.com/]
创建服务器选择ubuntu16.04 64位的操作系统 利用命令行进行远程服务器登录 ssh 用户名@ip地址
<>2.相关环境安装
以下操作都在远程服务器上进行操作 (ubuntu 16.04)
* 先更新 apt 相关源 sudo apt-get update
* mysql安装 apt-get install mysql-server apt-get install libmysqlclient-dev
* redis安装 sudo apt-get install redis-server
* 安装虚拟环境 pip install virtualenv pip install virtualenvwrapper
* 使得安装的virtualenvwrapper生效,编辑~/.bashrc文件,内容如下: export
WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/workspace source
/usr/local/bin/virtualenvwrapper.sh 使编辑后的文件生效 source ~/.bashrc
* requirements扩展包文件 Python 项目中可以包含一个 requirements.txt
文件,用于记录所有依赖包及其精确的版本号,以便在新环境中进行部署操作。 在虚拟环境使用以下命令将当前虚拟环境中的依赖包以版本号生成至文件中: pip
freeze > requirements.txt 当需要创建这个虚拟环境的完全副本,可以创建一个新的虚拟环境,并在其上运行以下命令: pip install
-r requirements.txt
* 在安装 Flask-MySQLdb 的时候可能会报错,可能是依赖包没有安装,执行以下命令安装依赖包: sudo apt-get build-dep
python-mysqldb
<>3.Nginx负载均衡
采用 C 语言编写
实现分流、转发、负载均衡
* 安装 $ sudo apt-get install nginx
* 运行及停止 /etc/init.d/nginx start #启动 /etc/init.d/nginx stop #停止
* 配置文件
编辑文件:/etc/nginx/sites-available/default 如果是多台服务器的话,则在此配置,并修改 location 节点下面的
proxy_pass upstream flask { server 127.0.0.1:5000; server 127.0.0.1:5001; }
server { # 监听80端口 listen 80 default_server; listen [::]:80 default_server; root
/var/www/html; index index.html index.htm index.nginx-debian.html; server_name
_; location / { # 请求转发到gunicorn服务器 proxy_pass http://127.0.0.1:5000; #
请求转发到多个gunicorn服务器 # proxy_pass http://flask; # 设置请求头,并将头信息传递给服务器端
proxy_set_header Host $host; # 设置请求头,传递原始请求ip给 gunicorn 服务器 proxy_set_header
X-Real-IP $remote_addr; } }
<>4.Gunicorn服务器
Gunicorn(绿色独角兽)是一个Python WSGI的HTTP服务器从Ruby的独角兽(Unicorn
)项目移植该Gunicorn服务器与各种Web框架兼容,实现非常简单,轻量级的资源消耗
Gunicorn直接用命令启动,不需要编写配置文件
* 安装 pip install gunicorn
* 查看选项 gunicorn -h
* 运行 #-w: 表示进程(worker) -b:表示绑定ip地址和端口号(bind) gunicorn -w 2 -b 127.0.0.1:5000
运行文件名称:Flask程序实例名
参考阅读: Gunicorn相关配置:https://blog.csdn.net/y472360651/article/details/78538188
<https://blog.csdn.net/y472360651/article/details/78538188>
* 其他操作
拷贝本地代码到远程
scp -r 本地文件路径 root@39.106.21.198:远程保存路径