环境准备
1、安装python环境
参见《Linux系统安装Python3环境(超详细)》安装好python环境
2、安装pip命令
执行
easy_install pip
命令即可安装pip, easy_install在已安装的python根目录bin下,如果是Python 3.6.5版本,执行
easy_install-3.6 pip
3、安装flask
执行
pip3 install flask
命令即可安装flask。
单独部署flask
首先考虑部署最简单的flask项目,随便找个目录新建一个app.py文件,这里我们是在/root/flask_web目录下创建了app.py文件,内容如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'my first flask web!'
if __name__ == '__main__':
app.run(host='0.0.0.0',port=3389)
代码中host配置为host='0.0.0.0',port可以根据自己情况而定,这里配置为3389,这个端口需要在腾讯云安全组中放开,如图:
到这里,一个超简单的flask web项目就部署好了,下面运行测试看看效果。在app.py文件所在目录下执行:
python3 app.y
启动flask web项目,在启动过程中可能会出现端口已经存在,可以设置其他未使用的端口(注意需要在腾讯云开放端口)。启动成功后,日志如下:
这里是python3,而不是python,是因为Linux原本已经安装了python2.7,为了兼容性,在未删除python2.7的情况下,我们安装的是Python3.6,并为其创建了python3软链接。注意红色字体警告,大致意思是不要裸奔,建议部署到wsgi服务器上,具体后面我们再说。下面就可以从浏览器上访问这个这个web了。在浏览器上输入
http://腾讯云公网ip:3389
腾讯云公网ip根据自己的ip设置。
可以执行如下命令:
nohup python3 app.y &
永久性启动flask web项目。这里可能会碰到端口已被占用等情况,可以执行
netstat -tunlp grep 端口号
查看端口被哪个进程使用,如图:
执行
kill -9 进程号
可以杀死进程,例如这里8888是被python3使用,进程号是810。
uwsgi方式部署flask
1、安装uwsgi
直接执行
pip3 install uwsgi
命令安装即可。
2、配置uwsgi
任意找一个目录,创建uwsgi的配置文件,文件叫什么名字,请随便。这里在/root/flask_web目录下创建uwsgi.ini配置文件,配置内容如下:
[uwsgi]
http=0.0.0.0:3389
wsgi-file=/root/flask_web/app.py
callable=app
touch-reload=/root/flash_web/
wsgi-file指向app.py文件,此时app.py中app.run不需要配置host和port了,如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'my first flask web!'
if __name__ == '__main__':
app.run()
3、启动uwsgi
执行
uwsgi --ini /root/flask_web/uwsgi.ini
命令。如果需要后台启动uwsgi,添加-d参数即可,如下:
uwsgi -d --ini /root/flask_web/uwsgi.ini
执行该启动命令时,可能会出现如下找不到uwsgi命令的情况:
[root@**** ~]#uwsgi --ini /root/flask_web/uwsgi.ini
-bash: uwsgi: command not found
可以先查找命令
[root@*** ~]# find / -name uwsgi
/usr/local/python3/bin/uwsgi
从结果来看uwsgi在/usr/local/python3/bin目录下,接下来如下为其添加软链接:
ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
执行
ps -ef | grep uwsgi
查看是否启动成功,如图:
配置好并启动uwsgi后,直接在浏览器中输入
就可以查看页面内容
以上是uwsgi简单的配置,可能还需要配置:
pythonpath=/root/flask_web/src
指定项目中的py目录。当配置了pythonpath后,
*** Operational MODE: single process ***
added /root/flask_web/schoolpi/src/ to pythonpath.
uwsgi会将自定义的模块加载到python路径中。否则会出现如下错误:
*** Operational MODE: single process ***
Traceback (most recent call last):
File "/root/flask_web/src/app.py", line 3, in <module>
from service import SortService, MajorService
ModuleNotFoundError: No module named 'service'
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
uwsgi常见配置如下:
http=0.0.0.0:8888
pythonpath=/root/flask_web/src/
# 运行目录
chdir=/root/flask_web/
wsgi-file=/root/flask_web/src/app.py
callable=app
touch-reload = /root/flask_web/
# 进程的数量
processes=4
# 记录pid的文件
pidfile=/root/flask_web/uwsgi.pid
# 日志最大50M
log-maxsize=50000000
# uwsgi日志文件
daemonize=/root/flask_web/uwsgi.log
#项目更新后,自动加载
python-autoreload=1
#### 启动:
uwsgi --ini xxx.ini
#### 重启:
uwsgi --reload xxx.pid
#### 停止:
uwsgi --stop xxx.pid
ngix+uwsgi方式部署flask
1、安装ngix
sudo yum install nginx
参见《http://nginx.org/en/linux_packages.html#》
nginx启动,停止,重启,配置文件命令如下:
nginx -s reload
nginx -s start
nginx -s stop
nginx -t
2、配置
正在研究中……后续补上