1. 程式人生 > 實用技巧 >Flask框架從0到1實現部落格網站(請以學習的目的觀看,博主也是以學習為主)

Flask框架從0到1實現部落格網站(請以學習的目的觀看,博主也是以學習為主)

一,專案中用到的技術(知識點)

GitHub地址:https://github.com/fantongxue666/Python-Projects

1,安裝python3環境

安裝python3請參考:https://www.jb51.net/article/165639.htm

2,建立flask專案

pycharm建立flask專案請參考:https://www.cnblogs.com/momoyan/p/11028467.html

3,render_template模板引擎

首先建立index.html,畫好模板

然後在app.py檔案中寫介面

@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/index')
def toIndex():
    title='樊同學的'
    user={'username':'樊同學'}
    return render_template('index.html',title=title,user=user)

if __name__ == '__main__':
    app.run()

啟動專案,訪問 http://localhost:5000/index

4,flask連線mysql資料庫

首先進入當前專案路徑的終端,安裝pymysql

寫一個jdbc工具類,全域性呼叫

import pymysql
class DataBaseHandle(object):
    # 相當於java的構造方法,初始化資料庫資訊並建立資料庫連線
    def __init__(self):
        self.host = '127.0.0.1'
        self.username = 'root'
        self.password = '1234'
        self.database = 'test'
        self.db = pymysql.connect(self.host, self.username, self.password, self.database)

    # 增刪改
    def updateDB(self,sql):
        cursor = self.db.cursor()
        try:
            i = cursor.execute(sql)
            self.db.commit()
        except:
            self.db.rollback()
        finally:
            cursor.close()
        return i

    # 查詢
    def selectDB(self,sql):
        cursor = self.db.cursor()
        temp = None
        try:
            cursor.execute(sql)
            temp = cursor.fetchall() # 返回所有記錄列表
        except:
            print("查詢發生錯誤")
        finally:
            self.db.close()
        return temp

然後全域性呼叫

@app.route('/')
def hello_world():
    db = DataBaseHandle()  # 資料庫操作類 全域性
    data = db.selectDB("select * from stu")
    list=[]
    for obj in data:
        list.append({
            'name':obj[1],
            'age':obj[2],
            'time':obj[4]
        })
    return json.dumps(list,cls=DateEncoder)

5,flask專案在linux環境執行上線

檢視系統自帶的python版本

python --version

安裝一些需要用到的工具

yum -y install gcc gcc-c++ autoconf automake make zlib zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel libffi libffi-devel xz xz-devel

上傳python至伺服器

解壓

tar zxvf Python-3.6.10.tgz -C 解壓到的路徑

編譯安裝

# 先進入解壓後的資料夾下
# --prefix=選擇安裝路徑
./configure --prefix=/usr/local/python3
# 等待一段時間後,編譯並安裝
make && make install

配置環境變數

vim /etc/profile
# 在底部新增一行:
export PATH=$PATH:/usr/local/python3/bin
# 儲存退出後重新整理
source /etc/profile
# 配置環境變數後,終端輸入python3檢視是否成功

替換原有的python2

這時雖然終端輸入python3出現的是最新安裝的python3,但是輸入python出來的還是原來python2

我們可以修改python的預設路徑,因為python指向python2

# 將原來python重新命名為python2-6.6
mv /usr/bin/python /usr/bin/python-2.6.6
# 建立新的軟連線,指向python-3.6.10
# 注意:軟連線一定要使用絕對路徑!!!
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python

配置完成以後測試是否安裝成功

# 這裡我用requests庫進行測試
pip install requests
# 更新pip
pip install --upgrade pip

打包Python專案的依賴(也就是本地安裝的專案依賴)

壓縮Python專案和上傳到伺服器,解壓

zip包的解壓命令:unzip 包名

cd到專案裡,安裝依賴

pip3 install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com -r requirements.txt
pip install flask

使用gunicorn部署flask專案

gunicorn安裝

gunicorn安裝非常簡單,使用命令pip install gunicorn即可。一般使用它,主要是為使用其非同步的worker模型,還需要安裝對應的非同步模組。

$ pip install greenlet # 使用非同步必須安裝
$ pip install eventlet # 使用eventlet workers
$ pip install gevent   # 使用gevent workers

gunicorn通常使用的引數如下:

-c CONFIG, --config=CONFIG
# 設定配置檔案。
-b BIND, --bind=BIND
# 設定服務需要繫結的埠。建議使用HOST:PORT。
-w WORKERS, --workers=WORKERS
# 設定工作程序數。建議伺服器每一個核心可以設定2-4個。
-k MODULE
# 選定非同步工作方式使用的模組。

在shell中輸入你的啟動配置

$ gunicorn -w 3 -b 0.0.0.0:5000 app:app
# 此處app:app中,第一個app為flask專案例項所在的包,第二個app為生成的flask專案例項
$ gunicorn -w 3 -b 0.0.0.0:5000 app:app --daemon #後臺執行

這樣執行正常就可以啟動伺服器了。