Flask框架從0到1實現部落格網站(請以學習的目的觀看,博主也是以學習為主)
阿新 • • 發佈:2020-12-28
一,專案中用到的技術(知識點)
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 #後臺執行
這樣執行正常就可以啟動伺服器了。