python flask部署簡(jiǎn)單流程

flask+ubuntu+gunicorn+supervisor+nginx

1.安裝python虛擬環(huán)境

pip install virtualenv
mkdir project
cd project
virtualenv venv
source venv/bin/activate

2.venv環(huán)境下安裝flask

pip install flask

3.書(shū)寫(xiě)python程序測(cè)試環(huán)境

#myapp.py
from flask import Flask
app = Flak(__name__)
@app.route('/')
def index():
    return 'hello world'
if __name__=='__main__':
    app.debug = True
    app.run()

運(yùn)行:python myapp.py

4.安裝Gunicorn

pip install gunicorn

5.使用gunicorn 啟用myapp.py

gunicorn -w4 -b0.0.0.0:8888 myapp:app
#-w 后面接worker數(shù)量
#-b 后面接ip及端口

6.安裝Supervisor

#在非venv環(huán)境下運(yùn)行,要求是python2
pip install supervisor

7.配置supervisor

#輸出supervisor.conf
echo_supervisord_conf > supervisor.conf
#修改
vim supervisor.conf
#最后添加
[program:myapp]
command=/詳細(xì)路徑/venv/bingunicorn -w4 -b0.0.0.0:8888 myapp:app
autostart=false
autorestart=false
directory=/myproject路徑/
stdout_logfile=/home/ubuntu/pythonweb/myproject/log/gunicorn.log
stderr_logfile=/路徑/

8.supervisor指令

#啟動(dòng)supervisor
supervisord -c supervisor.conf
#控制
supervisorctl -c supervisor.conf

9.安裝nignx

sudo apt-get install nginx

10.配置nginx

主要是默認(rèn)的default中的server配置

11.nginx使用

#開(kāi)啟
sudo service nginx start
#重啟
sudo service nginx restart
#重載
sudo service nginx reload
#停止
sudo service nginx stop

12.mysql的安裝

#中途會(huì)有賬號(hào)密碼設(shè)置
sudo apt-get install mysql-server mysql-client

13.mysql的使用

mysql -u USER -p PASSWORD

14.安裝pymysql驅(qū)動(dòng)

#venv下
pip install pymyql

15.安裝SQLAlchemy

pip install flask-sqlalchemy

16.使用SQLAlchemy+pymsql

#1.連接
from flask_sqlalchemy import SQLAlchemy
from flask import Flask
app = Flask(__main__)
#2.配置
app.config['SQLALCHEMY_DATABSE_URI']='mysql+pymyslq//root:passord//localhost/databasename?charser=utf-8'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
#3.實(shí)例化
db=SQLAlchemy(app)
#4.創(chuàng)建table
db.create_all()
#5.添加
db.session.add(..)
db.session.add_all([..])
#6.提交
db.session.commit()
#7.其他
db.drop_all()
db.delete(..)

17.關(guān)于config

#數(shù)據(jù)庫(kù)
數(shù)據(jù)庫(kù)URL:SQLALCHEMY_DATABASE_URI
數(shù)據(jù)庫(kù)自動(dòng)提交的變動(dòng):SQLALCHEMY_COMMIT_ON_TERADOWN
#郵件
郵件服務(wù)器:MAIL_SERVER
郵件端口:MAIL_PORT
是否使用安全協(xié)議:MAIL_USER_TLS
郵件密碼:MAIL_USERNAME
郵件賬戶:MAIL_PASSWORD
郵件管理員: MAIL_AMIN

18.數(shù)據(jù)庫(kù)的初始化問(wèn)題

No application found. Either work inside a view function or push an application context

解決方法:

#1
from yourapp import create_app
app = create_app()
app.app_context().push()
db.create_all()
#2
from yourapp import create_app
app = create_app()
db.create_all(app=app)

19 jinja2語(yǔ)法,渲染值時(shí)不轉(zhuǎn)義

{{值變量|safe}}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容