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}}