1. 程式人生 > >Flask框架專案_新經資訊

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程式例項名
  • 其他操作

拷貝原生代碼到遠端

scp -r 本地檔案路徑 [email protected]:遠端儲存路徑