linux+nginx+uwsgi+flask部署四部曲之四:部署flask应用程序

linux+nginx+uwsgi+flask部署四部曲之一:安装python3.6

linux+nginx+uwsgi+flask部署四部曲之二:安装uwsgi

linux+nginx+uwsgi+flask部署四部曲之三:安装nginx

linux+nginx+uwsgi+flask部署四部曲之四:部署flask应用程序

环境准备

virtualenv:为了避免系统环境与应用环境之间的冲突,使用虚拟环境来安装应用的依赖,virtualenv可以为每个python应用创建独立的开发环境,安装方式:pip install virtualenv

虚拟环境使用

flask项目地址:/usr/local/flasky,只需要在项目地址下运行指令:virtualenv venv

约定俗成一般使用“venv”作为虚拟环境的名称,这样我们就创建了一个虚拟环境的文件夹venv

接下来激活虚拟环境,只用指令:source venv/bin/activate

激活虚拟环境后,命令行抬头会有(venv)标识,一切安装python的操作都会将包和引用装在虚拟环境中,不会影响全局的python环境,退出虚拟环境的指令,直接敲:deactivate

配置flask应用环境

flask应用开发的时候,会应用到非常多的模板,pip freeze >requirements.txt,该指令把开发环境的flask依赖等导出一个文件名为requirements.txt的文本,然后centos中使用指令:pip install -r requirements.txt。这样就会在虚拟环境中安装一个与开发环境一致的副本了。注意一定要在虚拟环境中使用批量安装指令,不然就安装到全局去了。

上传项目文件

使用工具或者rz命令上传

配置uWSGI

我们直接在flask的根目录下面新建一个文件“uwsgi.ini”,使用的方式是配置启动。文件内容如下

[uwsgi]
#指向网站根目录
chdir=/usr/local/flasky
#虚拟环境目录
home = /usr/local/flasky/venv
# python启动程序文件
wsgi-file=app.py
#python程序内用于启动的application变量名
callable=app
processes = 4
threads = 2
# py文件修改,自动加载
py-autoreload=1
#设置uwsgi包解析的内部缓存区大小。默认4k
buffer-size = 32768
chmod-socket = 664
# 退出uwsgi是否清理中间文件,包含pid、sock和status文件
vacuum=true
# uwsgi 启动时所使用的地址与端口,配置nginx时候使用
socket = 0.0.0.1:5001
#没有nginx时,要用浏览器测试是否可以成功访问需要配置http端口
http=:9090
# 状态监测地址
stats=0.0.0.1:9191
#使用协程gevent启动使用
listen=100

配置文件的执行方式,命令行输入指令:uwsgi uwsgi.ini

或者不写配置文件(不建议这样做,一般都需要配置nginx一块使用),直接命令行输入

uwsgi --http :9090 --socket 0.0.0.1:5001 --wsgi-file app.py --master --processes 4 --threads 2 --stats 0.0.0.1:9191

可以在浏览器访问服务器地址:9090端口查看效果

ctrl+c关闭程序

启动 uWSGI 要注意一个问题,因为一般我们通过 SSH 工具远程操作 Linux,所以当我们退出 SSH 的时候,服务就会终止。如果希望在关闭SSH后,操作系统仍然能提供服务,在启动uwsgi的时候,使用 nohup 命令:nohup uwsgi uwsgi.ini &

协程启动方式(需安装gevent):uwsgi --gevent 100 --gevent-early-monkey-patch uwsgi.ini

配置Nginx

我们找到nginx的配置文件(/etc/nginx),找到文件夹(conf.d)然后在conf.d下面新建配置文件(flask_ng.conf)

server {
  listen 80;
  server_name xxx.xxx.xxx.xxx; #公网地址
  location / {
      include  uwsgi_params;
      uwsgi_pass 0.0.0.1:5001; # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
      uwsgi_param UWSGI_PYHOME /usr/local/flasky/venv; # 指向虚拟环境目录
      uwsgi_param UWSGI_CHDIR /usr/local/flasky; # 指向网站根目录
      uwsgi_param UWSGI_SCRIPT app:app; # 指定启动程序
  }
}

另外,在nginx.conf.default中必须把pid   logs/nginx.pid打开

启动Nginx

service nginx start

service nginx stop

service nginx restart

在浏览器中直接访问公网地址xxx.xxx.xxx.xxx即可查看效果

转载的话请注明出处,谢谢

猜你喜欢

转载自blog.csdn.net/qq_15111861/article/details/82017282