博客
关于我
如何在 CentOS 6.5 上部署 Flask
阅读量:687 次
发布时间:2019-03-17

本文共 3219 字,大约阅读时间需要 10 分钟。

在 CentOS 6.5 中部署 Flask

平时开发的时候,Flask 自带的 Web Server 可以满足需要,但是部署到服务器上则需要专门的符合 WSGI 协议的 Web Server。一种常见的组合是 Nginx + uWSGI。网上的教程挺多的,但大多也只是贴命令,对于关键点未做说明。本文希望能完整介绍 Flask 在 CentOS 上的部署,并且突出几个关键要点。

安装 Python 3.6

CentOS 6 自带的 Python 版本为 2.6.6,因为我是用 Python 3 开发的,为了不与系统自带的 Python 2.6.6 冲突,考虑使用虚拟环境 VirtualEnv,Python 3 在虚拟环境中运行。

安装步骤:

# 下载 python 3.6.1wget https://www.Python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz# 解压tar xJf  Python-3.6.1.tar.xz# 进入 python-3.6.1 目录cd  Python-3.6.1# 安装./configure  --prefix=/usr/local/python3 && make && make install#创建软连接ln -s /usr/local/python3/bin/python3 /usr/bin/python3ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

创建软连接的作用是能够区分 Python 2 和 Python 3,能够区分 Python 2 中的 pip 和 Python 3 中的 pip3。因为我们接下来要使用 Python 3 中的 pip 来安装 VirtualEnv。正确安装 python3 应该会同时安装好 pip,如果没有,参考这篇文章:

安装 virtualenv

pip3 install virtualenv

创建 python 的虚拟环境

/usr/local/python3/bin/virtualenv  -p /usr/bin/python3 venv

进入操作系统的目标目录,比如 在 \~/py36venv 下运行上述命令创建虚拟环境。命令说明:virtualenv 命令位于 /usr/local/python3/bin 目录下。使用 -p PYTHON_EXE 选项,作用是在创建虚拟环境的时候指定 Python 版本 (只能指定已安装好的 Python 版本)。

激活和关闭虚拟环境

激活:

[root@localhost py36venv]#  source venv/bin/activate

关闭

(venv)[root@localhost py36venv]#  deactivate

安装 Flask

在虚拟环境下安装 使用 pip install flask 安装 Flask。

安装 Nginx

安装 Nginx 有两种方式, yum 安装和源码安装的方式。两种方式有一些区别。这里使用 yum 安装:

yum install nginx

安装之后通过 rpm -ql nginx 命令查看安装路径。可能碰到的错误: No package nginx available, 则先进行如下操作:

# CentOS Linux v6.x user type the following command:# wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm# rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpmReference: https://www.cyberciti.biz/faq/install-nginx-centos-rhel-6-server-rpm-using-yum-command/

查看 Nginx 版本及配置参数

nginx -V

nginx 的主配置文件是:/etc/nginx/nginx.conf,用 vi 或者 vim 查看配置文件, 文件中这样的一行:

include /etc/nginx/conf.d/*.conf;

表示在 /etc/nginx/conf.d 目录下面创建扩展名为 conf 的文件,将会被加载作为配置文件。所以并需要修改 nginx.conf 主配置文件。并且可以创建多个不同的配置文件从来区分不同的 Web 服务。后面我们将创建支持 WSGI 规范运行 Flask 的 Web 服务。

启动和停止 Nginx

# 启动service nginx start # 停止service nginx stop# 重新启动service nginx restart# 重新加载service nginx reload

启动 Nginx 后,在浏览器中输入: http://localhost ,显示 nginx 的初始界面,表示启动成功。

在虚拟环境中安装 uWSGI

在虚拟环境中安装 uWSGI: pip install uwsgi

测试 uWSGI

安装 uWSGI 后,创建一个名为 test.py 的 Python 文件,输入以下测试代码:

def application(env, start_response):    start_response('200 OK', [('Content-Type','text/html')])    return [b"Hello World"]

使用命令:

uwsgi --http :9090 --wsgi-file test.py

来测试 uwsgi 能否能正确提供 Web 服务,如果启动正常,在浏览器中输入 http://localhost:9090 ,将收到返回的字符串 Hello World。当然,对于长期需要提供服务的 Flask Web 应用程序,最好是将配置放在配配置文件中。我们在 ~/py36venv 路径下配置 config.ini 文件。文件的内容如下:

[uwsgi]# uwsgi 启动时所使用的地址与端口socket = 127.0.0.1:8001# 指向网站目录chdir=/root/flask_restful_mysql# python 启动程序文件wsgi-file = manage.py# python 程序内用以启动的 application 变量名callable = app# 处理器数processes = 4# 线程数threads = 2buffer-size = 32768#状态检测地址stats = 127.0.0.1:9191

启动及关闭 uWSGI

  • uwsgi 启动 :虚拟环境下 uwsgi config.ini

  • uwsgi 关闭:虚拟环境下 killall -9 uwsgi

  • 查看 uwsgi 进程: ps -ef | grep uwsgi

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

nohup uwsgi config.ini &

源代码如何上传到 Linux

最简单的办法是通过 WinSCP工具,可以将 Windows 中的源代码上传到 Linux。但可能每次对代码的修改都需要重新部署,比较费时。自动化可以考虑 Fabric 自动部署。这里就不展开了。

转载地址:http://qpthz.baihongyu.com/

你可能感兴趣的文章
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_说明操作步骤---大数据之Nifi工作笔记0028
查看>>