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

   2016-06-20 0
核心提示:这篇文章主要介绍了在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程,包括安装supervisor来管理进程的用法,整套配下来相当实用,需要的朋友可以参考下

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

 
标签: CentOS Nginx Python Flask
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Linux下安装与使用本地的perl模块 centos安装pe
    在使用Linux或是unix时,perl是一个非常有用的脚本的语言。关于perl的模块安装,网上也有很多介绍,一方面可以通过不同套件自带的软件安装工具安装,一方面可以通过cpan安装,再者就是可以直接编译源代码。 这样,对于拥有root权限的用户来说,没有任何问题
    02-09
  • Linux上安装Perl模块的两种方法 centos安装perl
    Linux/Unix下安装Perl模块有两种方法:手工安装和自动安装。第一种方法是从CPAN上下载  您需要的模块,手工编译、安装。第二种方法是联上internet,使用一个叫做CPAN的模块自动完  成下载、编译、安装的全过程。  a、手工安装的步骤:  从CPAN下载了D
    02-09
  • Centos 32位 安装 NodeJS
    yum -y install gcc make gcc-c++ openssl-devel wget下载源码及解压:wget https://nodejs.org/dist/v6.9.5/node-v6.9.5.tar.gztar -zvxf node-v0.10.26.tar.gz编译及安装:cd node-v0.10.26 切换目录,执行./configuremakemake install验证是否安装配置成功
    02-09
  • CentOS 7, Attempting to create directory /root/perl5
    CentOS 7, Attempting to create directory /ro
    By francis_hao    Apr 10,2017在使用CentOS 7的时候,首次登陆会出现新建一个perl5文件夹的提示,删除该文件后,之后登陆还是会出现该提示并新建了perl5文件夹。经过查找资料【参考1】,找到不新建此文件夹的办法。只需要将/etc/profile.d/perl-homedir.
    02-09
  • Centos7上安装MySQL5.5报错,/usr/bin/perl is
    今天在Centos7上安装MySQL5.5时报了如下错/usr/bin/perl is needed by MySQL-server-...按照网上的几种说法进行了尝试1、在perl官网下载perl后安装到相应的目录下,仍无法解决问题2、采用强制安装 rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm --nodeps 
    02-09
  • centos7 cpanm安装,及perl模块安装
    1. cpan安装yum安装yum install perl-App-cpanminus.noarch注意:安装完成后,root及非root用户都可以使用cpanm安装模块,root用户直接用cpanm modulename安装即可,非root用户安装命令也是一样的,但是会由于权限问题(permission denied)导致错误,因为使用y
    02-09
  • Windows下配置Perl开发环境(转) centos安装pe
    我也是Perl的初学者,这两天在Windows下配置了Perl的开发环境,现将一些经验总结如下。1. 下载ActivePerl,安装。安装的时候最好让安装程序创建环境变量,这样就可以在cmd中使用Perl了。安装完成后,可以在cmd中输入perl -v测试是否成功。2. 安装ActivePerl会
    02-09
  • (转)CentoS 下报的 Requires: perl(:MODULE_C
    vim /etc/yum.repos.d/epel.repo把 mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5arch=$basearch 改: mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-6arch=$basearch当然 CentOS-Base.repo如果有5也要修改为
    02-09
  • centos安装git时出错提示make[1]: *** [perl.ma
    解决:yum install perl-ExtUtils-MakeMaker package
    02-09
  • CentOS 上配置 lua 的服务器环境(enet)
    安装 lualuarocket安装依赖$ yum install gcc gcc-c++ kernel-devel $ yum install readline-dev$ yum install ncurses-devel.i386下载并编译lua源文件$ wget http://www.lua.org/ftp/lua-5.1.4.tar.gz$ tar zxvf lua-5.1.4.tar.gz$ cd lua-5.1.4$ make linux
    02-09
点击排行