腾讯云Linux环境部署flask web项目(linux+uwsgi+nginx)

环境准备

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后,直接在浏览器中输入

http://腾讯云公网ip:3389/

就可以查看页面内容

以上是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、配置

正在研究中……后续补上


 

发布了89 篇原创文章 · 获赞 79 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/L_15156024189/article/details/89438618