ubuntu云主机上Flask+uwsgi+Nginx配置
环境:
ubuntu:18.10
全程使用root权限!!!
云主机IP
所有文件请见文末附录
第一步,编译安装nginx以及必要的系统组件
①apt-get install zlib1g-dev
apt-get install libssl-dev
apt-get install libpcre3 libpcre3-dev
apt-get install -y uwsgi-plugin-python3(这个应该可以不需要)
需要自己编译nginx安装,
wget http://nginx.org/download/nginx-1.12.1.tar.gz && tar -zxf nginx-1.12.1.tar.gz && mv nginx-1.12.1 nginx && cd nginx && ./configure \
--prefix=/usr/local/nginx \
--pid-path=/usr/local/nginx/nginx.pid \
--lock-path=/usr/local/nginx/nginx.lock \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/usr/local/nginx/client \
--http-proxy-temp-path=/usr/local/nginx/proxy \
--http-fastcgi-temp-path=/usr/local/nginx/fastcgi \
--http-uwsgi-temp-path=/usr/local/nginx/uwsgi \
--with-http_stub_status_module \
--with-http_ssl_module \
--http-scgi-temp-path=/usr/local/nginx/scgi
objs文件夹下面的的MakeFile删除-Werror
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
然后需要重新开个终端或者重新远程连接云主机,才会让nginx -t的时候改变查找路径(因为nginx.conf的默认路径是/etc/nginx/nginx.conf)
②pip3 install uwsgi
如果调试的过程中不小心删除了nginx的error.log,可以使用nginx -s reload让error.log再次生成
#-------------------------------------------------------------------------------
第二步,启动uwsgin、工程和nginx
当前目录下启动uwsgi
uwsgi -M --ini uwsgi.ini
启动web应用
python3 main.py
如果报错信息提示找不到sock文件,可以手动生成socket缓存文件
touch usr/local/nginx/conf/uwsgi.sock
启动nginx
nginx -c /usr/local/nginx/conf/nginx.conf
nginx -s reload
第三步,测试
chromium浏览器打开:
http://IP:10073/uwsgi_learn/
效果如下:
尝试打开多个网页,然后输入:
root@ubuntuguest:/usr/local/nginx/conf# lsof -i:10073
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 31896 root 3u IPv4 421798 0t0 TCP ubuntuguest.lan:10073->115.213.79.161:5766 (ESTABLISHED)
nginx 31896 root 5u IPv4 421745 0t0 TCP ubuntuguest.lan:10073->115.213.79.161:5721 (ESTABLISHED)
nginx 31896 root 6u IPv4 339467 0t0 TCP *:10073 (LISTEN)
root@ubuntuguest:/usr/local/nginx/conf# lsof -i:10071
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
python3 32756 root 3u IPv4 404126 0t0 TCP localhost:10071 (LISTEN)
另外根据[1]:
Nginx 总并发连接数 = worker 数量 * worker_connections
注意PID数量可以超过配置文件中的process数量,process数量表示的是有多少个逻辑CPU核会被安排这个web app的任务,
当然如果只有一个人开一个网页去访问,其他的逻辑CPU也是处于围观状态.
#---------------------------------------------------------
如果碰到502报错,注意查看/usr/local/nginx/error.log,
如果碰到internal server error,查看工程文件夹(和main.py同一个路径)下面的run.log(由uwsgi启动的时候自动生成),
根据报错信息来排错.
#------------------ 实验附录-------------------------------
main.py
from flask import Flask
import os
app = Flask(__name__)
@app.route("/uwsgi_learn/")
def hello():return '''<h1 style="color:blue">Hello World!</h1>'''
def killport(port):command='''kill -9 $(netstat -nlp | grep :'''+str(port)+''' | awk '{print $7}' | awk -F"/" '{ print $1 }')'''os.system(command)
if __name__ == "__main__":port=10071killport(port)app.run(host='127.0.0.1',port=port)
uwsgi完整文件:
[uwsgi]
wsgi-file = ./main.py
callable=app
master = true
processes = 4
chdir =./
socket = /usr/local/nginx/conf/uwsgi.sock
#socket = 127.0.0.1:10072
logto = ./run.log
chmod-socket = 660
vacuum = true
limit-as=256
nginx.conf
user root;
worker_processes 2;
error_log /usr/local/nginx/error.log;
pid /usr/local/nginx/nginx.pid;events {worker_connections 1024;
}http {include /usr/local/nginx/conf/mime.types;default_type application/octet-stream;server {listen 10073;server_name localhost;location / {include uwsgi_params;uwsgi_pass unix:/usr/local/nginx/conf/uwsgi.sock;proxy_http_version 1.1;
proxy_set_header Connection "";uwsgi_read_timeout 1800;uwsgi_send_timeout 300;proxy_read_timeout 300;}}
}
Reference:
[1]https://blog.csdn.net/pencilseo/article/details/82021218
ubuntu云主机上Flask+uwsgi+Nginx配置相关推荐
- flask uwsgi nginx *504* Gateway Time ou解决办法
flask uwsgi nginx 504 Gateway Time ou解决办法 此方法有可能无效 修改 vi /etc/nginx/conf.d/配置文件名.conf 添加如下信息: uwsgi_ ...
- 主机上的Distributed Switch配置与vCenter Server中的配置不一样
问题描述: 这两天发现网络频繁闪断,开始以为是机房调试网络问题,登录到vcenter查看主机报警,报警信息是主机上的Distributed Switch配置与vCenter Server中的Distr ...
- flask uwsgi nginx 部署在 ubuntu 上
flask 部署在 ubuntu 上 文章目录 flask 部署在 ubuntu 上 视频 创建部署目录 把项目放到部署目录中 安装虚拟环境 激活虚拟环境 安装python依赖库 安装uwsgi 创建 ...
- python 云服务器 搭建网站(flask+uwsgi+nginx)
文章目录 配置阿里云安全端口 python3.6的安装 python优先级的更换 pip优先级更换pip python Uwsgi 虚拟环境安装 Nginx 安装宝塔面板 搭建web环境 其实我站点已 ...
- python-django 阿里云ECS服务器部署uwsgi+nginx过程解说
需求:在本地已经完成了一个博客系统/数据可视化系统的开发,需要部署到系统上,展示个人主页/个人作品 编程语言:Python 系统框架:Django 数据库:MySQL 服务架构:uwsgi+nginx ...
- Flask+uwsgi+Nginx环境搭建
2019独角兽企业重金招聘Python工程师标准>>> 开源软件准备 需要的软件列表: setuptools-33.1.1.zip Python-2.7.13.tgz pip-9.0 ...
- Django uWSGI+Nginx配置
一.Django配置 1. 创建一个新项目 1 django-admin.py startproject mysite 2. 创建一个应用 1 python3 startapp app01 3. 编辑 ...
- 阿里云Centos7服务器域名解析和Nginx配置
Python很容易就能上手,没事就多学点.猫哥最喜欢的一句话:价值决定价格!只有不断提升自己,才可以"为所欲为".Python进阶之路上,特别是大数据.机器学习都需要大量的运算,我 ...
- CentOS docker 部署 flask + uWSGI + Nginx + Supervisor错误
我用Superviso 启动 Nginx 和 uwsgi Superviso配置如下: Nginx 简单配置: 启动的效果: 启动Nginx的错误日志: 一直提示我端口被占用 但是我 ps -aux ...
最新文章
- html5设置文字不能复制,网页文字不能复制?巧解网页文字不能复制
- SpringBoot学习笔记(一)整合Mybatis
- 零基础学Python(第九章 循环控制【break】与【continue】)
- 如何使用Chrome开发者工具找到Marketing Cloud某个contact的guid
- jQuery api学习笔记
- Java文件操作增强工具
- 单元测试(UT)、功能测试(FT)(转)
- 嵌入式linux面试题库,嵌入式linux面试题解析(二)——C语言部分三
- Flutter MaterialApp概述以及主题配置概述
- 5G独立组网与非独立组网
- .NET防止重复提交
- 英语学习/词典app行业top5简要分析
- 语音提示倒计时小工具
- 渠道对账及差错处理系统设计
- android累计时间计算公式,使用时间智能函数计算累计值YTD、QTD、MTD - DAX圣经 - Power BI极客...
- 解决MacBook无法读写移动硬盘的问题
- 扰动分析 matlab,扰动材料力学有限元分析:基于MATLAB编程
- “StarRocks 极客营” 重磅来袭,和技术大牛一起推开数据库梦想之门!
- MT6762 datasheet,MT6762规格书,MT6762芯片参数资料
- CTF解题记录-Misc-当铺秘密
热门文章
- eclipse新建maven项目(2)
- jquery file upload 后台收到的文件名中文乱码, filename中文乱码
- PHP动态多文件上传的具体代码
- Windows 10 解决 0x80070021 错误
- sublime3 ctl+b无效
- [转]Data mining with WEKA, Part 3: Nearest Neighbor and server-side library
- java–Servlet基础
- C++ Primer ----- 关于初始化
- Python3爬虫之中文乱码问题分析与解决方法
- 以前我们学计算机编程,在编程之前像计算机一样思考