我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程

Python基础环境搭建
CENTOS 6.X 系列默认安装的 Python 2.6 ,目前开发中主要是使用 Python 2.7 ,这两个版本之间还是有不少差异的,程序在 Python 2.6 下经常会出问题。

比如: re.sub 函数 ,2.7 支持 flags 参数,而 2.6 却不支持。

所以,打算安装 Python 2.7 来运行 Flask 应用程序,但 2.6 不能删除,因为系统对它有依赖。

1、安装 sqlite-devel
因为 Flask 应用程序可能使用能 Sqlite 数据库,所以这个得装上(之前因为没装这个,导致 Python 无法导入 sqlite3 库。
当然,也可以从源码编译安装。


yum install sqlite-devel -y

2、安装 Python 2.7


wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
tar xf Python-2.7.8.tgz
cd Python-2.7.8
./configure --prefix=/usr/local
make && make install

安装成功之后,你可以在 /usr/local/bin/python2.7 找到 Python 2.7。

3、安装 setuptools + pip
这里需要注意,一定要使用 python2.7 来执行相关命令。


# First get the setup script for Setuptools:
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py

# Then install it for Python 2.7 :
python2.7 ez_setup.py

# Now install pip using the newly installed setuptools:
easy_install-2.7 pip

# With pip installed you can now do things like this:
pip2.7 install [packagename]
pip2.7 install --upgrade [packagename]
pip2.7 uninstall [packagename]

4、使用 virtualenv


# Install virtualenv for Python 2.7 and create a sandbox called my27project:
pip2.7 install virtualenv
virtualenv-2.7 my27project

# Check the system Python interpreter version:
python --version
# This will show Python 2.6.6

# Activate the my27project sandbox and check the version of the default Python interpreter in it:
source my27project/bin/activate
python --version
# This will show Python 2.7.X
deactivate

基本就是这些了,网上很多教程都说要做软链接,但我感觉那样做或多或少会对系统有一些未知的影响。这个方法能尽量保持系统的完整性,很多自带 Python 程序其实在头部都指定了 #!/usr/bin/python ,所以它们用的其实是 Python 2.6 ,而不是新安装的 Python 2.7 。

Nginx+Supervisor+Gunicorn部署Flask应用程序

1.安装supervisor


$ sudo pip install supervisor

创建一个Flask程序
创建虚拟环境:


$ mkdir /tmp/wwwroot/web1
$ cd /tmp/wwwroot/web1
$ virtualenv deps
$ source deps/bin/activate
$ pip install flask gunicorn

创建一个简单的Flask程序:


$ cat > myapp.py << EOF

from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
  return "hello flask 01"

使用gunicorn执行Flask程序:

最简单的用法:


$ gunicorn -b 127.0.0.1:3721 myapp:app

现在访问http://127.0.0.1:3721,应该可以看到"hello flask 01"。

这里3721端口只是一个演示。

2.配置supervisor
创建配置文件:


$ cd /tmp/wwwroot
$ echo_supervisord_conf > supervisor.conf
$ cat >> supervisor.conf << EOF

[program:myapp]
;user=digwtx
command=/tmp/wwwroot/web1/deps/bin/gunicorn -b 127.0.0.1:3721 myapp:app
directory=/tmp/wwwroot/web1
process_name=%(program_name)s ; process_name expr (default %(program_name)s)
numprocs=1          ; number of processes copies to start (def 1)
stopsignal=QUIT        ; signal used to kill process (default TERM)
redirect_stderr=true     ; redirect proc stderr to stdout (default false)
stdout_logfile=/tmp/myapp.log    ; stdout log path, NONE for none; default AUTO

启动进程:


$ supervisord -c supervisor.conf

管理进程:


$ supervisorctl -c supervisor.conf

3.配置nginx:
主要是把请求转交给gunicorn进行处理。


server {
  listen 8080;
  #默认请求
  location / {
  #请求转向本机ip:3721
    proxy_pass http://127.0.0.1:3721; # 这里是gunicorn监听的地址
    proxy_redirect off;
    proxy_set_header Host $host:8080; #如果端口不是80要写上
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

现在重启nginx,访问http://127.0.0.1:8080应该可以看到"hello flask 01"。

自动启动:
那么,如果想开机时自动启动怎么办呢?或者说,如果机器重启了,那WEB服务就断了。

其实呢,也很简单,只要在/etc/rc.d/rc.local中加入一句就可以了:


supervisord -c /tmp/wwwroot/supervisor.conf

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程

Python基础环境搭建 CENTOS 6.X 系列默认安装的 Python 2.6 ,目前开发中主要是使用 Python 2.7 ,这两个版本之间还是有不少差异的,程序在 Python 2.6 下经常会出问题。 比如: re.sub 函数
2022-06-04

在阿里云服务器上配置CentOS+Nginx+Python+Flask环境

项目运行环境 阿里云(单核CPU, 1G内存, Ubuntu 14.04 x64 带宽1Mbps), 具体购买和ssh连接阿里云本文不做描述。 实用工具 首先进入阿里云后先要升级下apt-get, 并下载所需软件sudo apt-get u
2022-06-04

在Linux系统上通过uWSGI配置Nginx+Python环境的教程

1.安装ubuntu有uwsgi的ppa:add-apt-repository ppa:stevecrozz/ppa apt-get update apt-get install uwsgi 2. 用uwsgi代替mod_wsgi Ng
2022-06-04

在Windows系统上搭建Nginx+Python+MySQL环境的教程

1 安装nginx 下载windows上的nginx最新版本,http://www.nginx.org/en/download.html。 解压后即可。 运行nginx.exe后本地打开http://localhost,将会看到欢迎页面,这
2022-06-04

如何在CentOS 7上安装并配置Python 3.6环境

这期内容当中小编将会给大家带来有关如何在CentOS 7上安装并配置Python 3.6环境,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。当前***的 CentOS 7.3 默认安装的是 Python 2
2023-06-16

pycharm配置python环境的详细图文教程

PyCharm是一款功能强大的Python编辑器,具有跨平台性,下面这篇文章主要给大家介绍了关于pycharm配置python环境的详细图文教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
2023-01-07

Python环境的安装以及PyCharm编辑器配置教程详解

优质的教程可以让我们少走很多弯路,这一点毋庸置疑。这篇文章主要为大家介绍了纯净Python环境的安装以及PyCharm编辑器的配置,需要的可以参考一下
2023-05-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录