环境:
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配置相关推荐

  1. flask uwsgi nginx *504* Gateway Time ou解决办法

    flask uwsgi nginx 504 Gateway Time ou解决办法 此方法有可能无效 修改 vi /etc/nginx/conf.d/配置文件名.conf 添加如下信息: uwsgi_ ...

  2. 主机上的Distributed Switch配置与vCenter Server中的配置不一样

    问题描述: 这两天发现网络频繁闪断,开始以为是机房调试网络问题,登录到vcenter查看主机报警,报警信息是主机上的Distributed Switch配置与vCenter Server中的Distr ...

  3. flask uwsgi nginx 部署在 ubuntu 上

    flask 部署在 ubuntu 上 文章目录 flask 部署在 ubuntu 上 视频 创建部署目录 把项目放到部署目录中 安装虚拟环境 激活虚拟环境 安装python依赖库 安装uwsgi 创建 ...

  4. python 云服务器 搭建网站(flask+uwsgi+nginx)

    文章目录 配置阿里云安全端口 python3.6的安装 python优先级的更换 pip优先级更换pip python Uwsgi 虚拟环境安装 Nginx 安装宝塔面板 搭建web环境 其实我站点已 ...

  5. python-django 阿里云ECS服务器部署uwsgi+nginx过程解说

    需求:在本地已经完成了一个博客系统/数据可视化系统的开发,需要部署到系统上,展示个人主页/个人作品 编程语言:Python 系统框架:Django 数据库:MySQL 服务架构:uwsgi+nginx ...

  6. Flask+uwsgi+Nginx环境搭建

    2019独角兽企业重金招聘Python工程师标准>>> 开源软件准备 需要的软件列表: setuptools-33.1.1.zip Python-2.7.13.tgz pip-9.0 ...

  7. Django uWSGI+Nginx配置

    一.Django配置 1. 创建一个新项目 1 django-admin.py startproject mysite 2. 创建一个应用 1 python3 startapp app01 3. 编辑 ...

  8. 阿里云Centos7服务器域名解析和Nginx配置

    Python很容易就能上手,没事就多学点.猫哥最喜欢的一句话:价值决定价格!只有不断提升自己,才可以"为所欲为".Python进阶之路上,特别是大数据.机器学习都需要大量的运算,我 ...

  9. CentOS docker 部署 flask + uWSGI + Nginx + Supervisor错误

    我用Superviso 启动 Nginx 和 uwsgi Superviso配置如下: Nginx 简单配置: 启动的效果: 启动Nginx的错误日志: 一直提示我端口被占用 但是我 ps -aux ...

最新文章

  1. html5设置文字不能复制,网页文字不能复制?巧解网页文字不能复制
  2. SpringBoot学习笔记(一)整合Mybatis
  3. 零基础学Python(第九章 循环控制【break】与【continue】)
  4. 如何使用Chrome开发者工具找到Marketing Cloud某个contact的guid
  5. jQuery api学习笔记
  6. Java文件操作增强工具
  7. 单元测试(UT)、功能测试(FT)(转)
  8. 嵌入式linux面试题库,嵌入式linux面试题解析(二)——C语言部分三
  9. Flutter MaterialApp概述以及主题配置概述
  10. 5G独立组网与非独立组网
  11. .NET防止重复提交
  12. 英语学习/词典app行业top5简要分析
  13. 语音提示倒计时小工具
  14. 渠道对账及差错处理系统设计
  15. android累计时间计算公式,使用时间智能函数计算累计值YTD、QTD、MTD - DAX圣经 - Power BI极客...
  16. 解决MacBook无法读写移动硬盘的问题
  17. 扰动分析 matlab,扰动材料力学有限元分析:基于MATLAB编程
  18. “StarRocks 极客营” 重磅来袭,和技术大牛一起推开数据库梦想之门!
  19. MT6762 datasheet,MT6762规格书,MT6762芯片参数资料
  20. CTF解题记录-Misc-当铺秘密

热门文章

  1. eclipse新建maven项目(2)
  2. jquery file upload 后台收到的文件名中文乱码, filename中文乱码
  3. PHP动态多文件上传的具体代码
  4. Windows 10 解决 0x80070021 错误
  5. sublime3 ctl+b无效
  6. [转]Data mining with WEKA, Part 3: Nearest Neighbor and server-side library
  7. java–Servlet基础
  8. C++ Primer ----- 关于初始化
  9. Python3爬虫之中文乱码问题分析与解决方法
  10. 以前我们学计算机编程,在编程之前像计算机一样思考