配置项目的时候一般使用虚拟环境,是各个项目的环境独立起来,更多方便管理。至于如何使用搜索即可,并不难
1、安装python3
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
xz -d Python-3.6.4.tar.xz
tar -xvf Python-3.6.4.tar
 
./configure --prefix=/usr/local/python3.6.4 --enable-shared CFLAGS=-fPIC
加上--enable-shared和-fPIC之后可以将python3的动态链接库编译出来,默认情况编译完lib下面只有python3.xm.a这样的文件,python本身可以正常使用,但是如果编译第三方库需要python接口的比如caffe等,则会报错;所以这里建议按照上面的方式配置,另外如果openssl不使用系统yum安装的,而是使用自己编译的比较新的版本可以使用--with-openssl=/usr/local/openssl这种方式指定,后面目录为openssl实际安装的目录,另外编译完还要将openssl的lib目录加入ld运行时目录中即可. 
 
make;make install;
添加软连接
ln -s /usr/local/python3.6.4/bin/python3 /usr/bin/python3
ln -s /usr/local/python3.6.4/bin/pip3 /usr/bin/pip3
 
防止运行Python是提示找不到库
cp libpython3.6m.so.1.0 /usr/lib/ /usr/lib64/
 
Python3安装后导致yum不能使用,因为执行yum需要python2的版本,修改两个文件
vim /usr/bin/yum vim /usr/libexec/urlgrabber-ext-down 把#!/usr/bin/python 修改为 #!/usr/bin/python2
 
2、先安装nginx(https://www.cnblogs.com/fwqblogs/p/10132205.html)。配置uwsgi
pip install uwsgi
ln -s /usr/local/python3.6.4/bin/uwsgi /usr/bin/uwsgi
 
vim config.ini
 
[uwsgi]
chdir=/home/Py
pythonpath= /home/Py
#项目启动文件
wsgi-file = /home/Py/run.py
#为你的项目入口文件
module=run
#实例化flask的变量 application = Flask(__name__)
callable=application
#当修改文件内容后重启uwsgi
py-autoreload=1
#开启一个master进程监控项目运行
master=true
#uwsgi的端口。要与项目运行的端口一致
socket=/home/Py/flask_socket.sock
socket=127.0.0.1:5000
processes=4
#threads=2
buffer-size=65536
#允许用内嵌的语言启动线程。这将允许你在app程序中产生一个子线程。
enable-threads=true
pidfile=/tmp/uwsgi-master.pid
uid=nginx
gid=root
#当服务器退出的时候自动删除unix socket文件和pid文件。
vacuum=true
#皇帝”模式运行。在这种模式下,它将件事uWSGI配置文件的路径并且为每一个它找到的文件生成实例(‘诸侯’)。无论什么时候一个配置文件被修改了,皇帝都会自动重启诸侯
emperor=true
logto=/var/log/nginx/uwsgi.log
 
后台启动
uwsgi --ini config.ini &
 
● 常用选项:
socket : 地址和端口号,例如:socket = 127.0.0.1:50000
processes : 开启的进程数量
workers : 开启的进程数量,等同于processes(官网的说法是spawn the specified number ofworkers / processes)
chdir : 指定运行目录(chdir to specified directory before apps loading)
wsgi-file : 载入wsgi-file(load .wsgi file)
stats : 在指定的地址上,开启状态服务(enable the stats server on the specified address)
threads : 运行线程。由于GIL的存在,我觉得这个真心没啥用。(run each worker in prethreaded mode with the specified number of threads)
master : 允许主进程存在(enable master process)
daemonize : 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器(daemonize uWSGI)。实际上最常用的,还是把运行记录输出到一个本地文件上。
pidfile : 指定pid文件的位置,记录主进程的pid号。
vacuum : 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件(try to remove all of the generated file/sockets)
disable-logging : 不记录请求信息的日志。只记录错误以及uWSGI内部消息到日志中。如果不开启这项,那么你的日志中会大量出现这种记录:
[pid: 347|app: 0|req: 106/367] 117.116.122.172 () {52 vars in 961 bytes} [Thu Jul 7 19:20:56 2016] POST /post => generated 65 bytes in 6 msecs (HTTP/1.1 200) 2 headers in 88 bytes (1 switches on core 0)
 
配置nginx
location /{
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
uwsgi_param UWSGI_PYHOME /usr/bin/python; #也可对应虚拟环境
uwsgi_param UWSGI_CHDIR /home/Py;
uwsgi_param UWSGI_SCRIPT run:application;
}
有定义路由前缀home时 http://192.168.164.128/home/index/
 
最后如果有多个项目的话 如果用域名到很简单配置多个nginx server 和uwsgi就可以
下面将配置使用ip访问不同项目
假如我有两个项目 分贝在 Py1 和 Py2
匹配该路径下的项目 重定向到81端口 定义81端口的项目uwsgi配置 一个项目对应一个uwsgi配置
location /Py1/{
proxy_pass http://127.0.0.1:81/;
}
server{
listen 81;
server_name localhost;
location /{
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
uwsgi_param UWSGI_PYHOME /usr/bin/python;
uwsgi_param UWSGI_CHDIR /home/Py1;
uwsgi_param UWSGI_SCRIPT run:application;
}
}
 
location /Py2/{
proxy_pass http://127.0.0.1:82/;
}
server{
listen 82;
server_name localhost;
location /{
include uwsgi_params;
uwsgi_pass 127.0.0.1:5000;
uwsgi_param UWSGI_PYHOME /usr/bin/python;
uwsgi_param UWSGI_CHDIR /home/Py2;
uwsgi_param UWSGI_SCRIPT run:application;
}
}
 
 

Python3 flask nginx uwsgi 环境搭建的更多相关文章

  1. [阿里云部署] Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器

    部署地址:123.56.7.181 Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器 这个标题就比之前的"ECS服务器配置Web环境的全过程及参考资料&qu ...

  2. Ubuntu下nginx+uwsgi+flask的执行环境搭建

    选择web framwork是个非常艰难的事情, 主要分为轻量级和重量级框架. 因为没有搭建站点这样的须要, 所以回避SSH, Django这样的框架, 而选择一个轻量级框架. 自己也比較青睐pyth ...

  3. Flask+Nginx+uWSGI在Ubuntu服务器上的配置

    Flask+Nginx+uWSGI在Ubuntu服务器上的配置 Step1 安装系统环境 Ubuntu服务器选择是阿里云的ECS服务,ECS提供单独的内存\CPU\带宽\存储规格可以选择,并且提供合适 ...

  4. Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器

    Ubuntu+Django+Nginx+uWSGI+Mysql搭建Python Web服务器 闲着无聊的时候部署了一个Django项目玩,用vm虚拟机部署的. 准备工作 我使用的系统是Ubuntu16 ...

  5. Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统

    Python3.6+nginx+uwsgi部署Django程序到阿里云Ubuntu16.04系统 这个是写好的Django程序在本地机运行的情况,一个查询接口. 准备工作 1.首先购买一台阿里云的EC ...

  6. CentOS上部署Django+Nginx+Uwsgi环境

    在CentOS上部署Django+Nginx+Uwsgi环境 奇谭  2016-09-01 评论  Linux  python django nginx uwsgi VirtualEnv的作用:创建隔 ...

  7. nginx+php环境搭建详解(Linux)

    今天在内网环境下,给linux主机安装nginx+php环境,由于是内网环境,只能手动解压缩包进行安装,在这过程中我也着实遇到了一些问题(困扰了我许久),还好最后搭建环境成功了,所以写篇博客记录一下, ...

  8. Nginx基础环境搭建

    1.下载docker toolbox https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 2.选择好安装目录 一路nex ...

  9. 基于Centos7+Flask+Nginx+uWSGI+Python3的服务器网页搭建教程

    之前完成了贴吧签到系统的搭建,笔者想将这个功能分享给更多人使用,所以尝试搭建了一个网页,一路遇到了很多问题,最终解决了,记录下过程分享给大家 首先安装 uWSGI ,和 Nginx 配套使用,具体用途 ...

随机推荐

  1. 20135320赵瀚青LINUX第三章读书笔记

    第三章 进程管理 3.1 进程 进程的定义: 是处于执行期的程序以及它所包含的资源的总称. 线程的定义: 是在进程中活动的对象. 每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 内核调度 ...

  2. 实现ModelDriver接口的功能(转)

    ModelDriver接口 来自com.opensymphony.xwork2.ModelDriven.是xwork-2.1.2-750.jar包的东西. 下面是源码: package com.ope ...

  3. [BZOJ4016]最短路径树问题

    Description 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点分别走一次并返回. 往某一个点走时,选择总长度最短的路径走.若有多条长度最短的路径,则选择经过的顶点序列字典序最 ...

  4. springBoot的文件上传功能

    知识点: 后台:将上传的图片写入指定服务器路径,保存起来,返回上传后的图片路径(在springBoot中,参考博客:http://blog.csdn.net/change_on/article/det ...

  5. centos7 firewall 操作

    一.firewall配置 The configuration for firewalld is stored in various XML files in /usr/lib/firewalld/ a ...

  6. 【ROI Pooling】ROI Pooling层详解(转)

    原文链接:https://blog.deepsense.ai/region-of-interest-pooling-explained/ 目标检测typical architecture 通常可以分为 ...

  7. (转)一个大牛的acm历程(看着就要颤抖)

    从我接触程序竞赛到现在应该有十多年了,单说ACM竞赛,从第一次非正式参赛到现在也差不多有7年多的样子.有太多的故事,想说的话,却一直没能有机会写下来.一方面是自己忙,一方面也是自己懒.所以很感谢能有人 ...

  8. R中去除为NA的行--转载

    下面用实例来说明这两个函数的作用: 这是一个数据框final: gene hsap mmul mmus rnor cfam 1 ENSG00000208234 0 NA NA NA NA 2 ENSG ...

  9. Java网络编程学习A轮_01_目标与基础复习

    A. A轮目标 复习网络编程基础知识,重点学习下TCP三次握手四次挥手,以及可能引发的异常情况. 回顾 Socket 编程,好多年没写(chao)过相关代码了. 重学 NIO,以前学的基本忘光了,毕竟 ...

  10. 实现Promise的first等各种变体

    本篇文章主要是想通过ES6中Promise提供的几个方法,来实现诸如first.last.none.any等各种变体方法! 在标准的ES6规范中,提供了Promise.all和Promise.race ...