CentOs6搭建nginx+uwsgi+flask

简介: CentOs6搭建nginx+uwsgi+flask
+关注继续查看

一、安装pyton3.6.5

执行 shell脚本 安装

📎insertPy3.sh

测试是否成功

image

测试 ssl模块是否正常加入,没报错就是正常

image

测试pip3是否成功

image


二、创建虚拟环境

创建一个项目文件夹,然后创建一个虚拟环境。创建完成后项目文件夹中会有一个 venv 文件夹:

mkdir /usr/local/project
cd /usr/local/project
python3 -m venv venv

进入虚拟环境

. venv/bin/activate


三、安装flask、uwsgi

pip3 install Flask -i https://pypi.tuna.tsinghua.edu.cn/simple

pip3 install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/simple


创建 helloworld.py 启动Flask web应用

from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/",methods=["GET"])
def indexFun():
    return "index"
@app.route("/helloWorld")
def helloWorld():
    print('请求方式----》', request.method)
    args = request.args.get("name") or "args没有"
    print('', args)
    form = request.form.get('test') or 'form没有'
    print('', form)
    return jsonify(success=True, args=args, form=form)
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8987, debug=True)


创建uwsgi.ini

[uwsgi]
http=:8987
socket=127.0.0.1:8001
wsgi-file=/usr/local/project/helloword.py
callable=app
processes=4
threads=2
stats=127.0.0.1:9191
vacuum=true


安装 nginx

yum install nginx


修改nginx.conf文件 代理uwsgi请求

upstream flask{
        server 127.0.0.1:8001;
    }
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
            include uwsgi_params;
            uwsgi_pass flask;
        }
    }


nginx启动

/usr/local/nginx/sbin/nginx

uwsgi启动

uwsgi uwsgi.ini  /  后台启动 uwsgi -d --ini uwsgi.ini

退出虚拟环境

deactivate


请求 

http://localhost   

http://localhost/helloWorld?name=haha


后记

pip3 安装组件 最好换源 -i https://pypi.tuna.tsinghua.edu.cn/simple 国内源快很多,还有尽量都使用同一个源安装,以防出现不兼容问题。


新补充 

使用 supervisor 管理uwsgi服务,以及后续遇到的问题解决方案:

https://blog.csdn.net/qq_35304570/article/details/80304482

此链接中 supervisor 部分


安装supervisor,新增配置文件到etc下

pip3 install supervisor
echo_supervisord_conf > supervisor.conf  # 生成 supervisor 默认配置文件
vim supervisor.conf            # 修改 supervisor 配置文件,添加 uwsgi 进程管理
mv supervisor.conf /etc/


修改配置文件增加uwsgi子进程配置

vim /etc/supervisor.conf
[program:uwsgi]
redirect_stderr=true
command=/usr/local/project/venv/bin/uwsgi /usr/local/project/uwsgi.ini  ;supervisor启动命令
directory=/usr/local/project                         ; 项目的文件夹路径
startsecs=0                                ; 启动时间
stopwaitsecs=0                              ; 终止等待时间
autostart=true                              ; 是否自动启动
autorestart=true                             ; 是否自动重启
stdout_logfile=/usr/local/project/uwsgi/logs/uwsgi.log              ; log 日志
stderr_logfile=/usr/local/project/uwsgi/logs/uwsgi.err              ; 错误日志


打开这几项注释

[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001        ; ip_address:port specifier, *:port for all iface
username=user              ; default is no username (open server)
password=123               ; default is no password (open server)


新建uwsgi日志文件

mkdir /usr/local/project/uwsgi/logs
touch /usr/local/project/uwsgi/logs/uwsgi.log 
touch /usr/local/project/uwsgi/logs/uwsgi.err


启动supervisor 和 uwsgi子服务

supervisord -c /etc/supervisor.conf
supervisorctl -c /etc/supervisor.conf status 
supervisorctl -c /etc/supervisor.conf start uwsgi


启动过程中可能遇到的错误:

unix:///var/run/supervisor.sock no such file

https://blog.csdn.net/weixin_41762173/article/details/88901970

解决办法:

修改/etc/supervisor.conf中路径

[unix_http_server]
file=/var/run/supervisor.sock   ; the path to the socket file
...
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
touch /var/run/supervisor.sock
chmod 777 /var/run/supervisor.sock
supervisorctl reload


运行supervisorct 报如下错误:

supervisorctl unix:///var/run/supervisor.sock refused connection

解决办法:

unlink /var/run/supervisor.sock
unlink /tmp/supervisor.sock


如果报如下错:

Unlinking stale socket /var/run/supervisor.sock

解决办法:

unlink /var/run/supervisor.sock
目录
相关文章
|
11月前
|
缓存 负载均衡 安全
利用DockerHub在Centos7.7环境下部署Nginx反向代理Gunicorn+Flask独立架构
本次使用Nginx反向代理Flask服务,为什么要加一层Nginx呢?因为Nginx可以直接处理静态文件请求而不用经过应用服务器,避免占用宝贵的运算资源,并且可以缓存静态资源,使访问静态资源的速度有效提高。同时它可以吸收一些瞬时的高并发请求,让Nginx先保持住连接(缓存http请求),然后后端慢慢消化掉这些并发。当然了,最重要的一点就是Nginx可以提供负载均衡策略,这样我们的应用服务就可以横向扩展,分担压力了。
利用DockerHub在Centos7.7环境下部署Nginx反向代理Gunicorn+Flask独立架构
|
数据可视化 前端开发 应用服务中间件
flask+nginx+uwsgi部署服务器(详细保姆级教程)
本次项目我利用flask写了接口需要部署到服务器供前端使用,一路走来爬了很多坑,所以这一次做了详细的记录,从零开始教大家将flask项目跑起来
753 1
flask+nginx+uwsgi部署服务器(详细保姆级教程)
|
应用服务中间件 nginx Python
Nginx转发到Flask应用scheme获取不到https
Nginx转发到Flask应用scheme获取不到https
161 0
|
应用服务中间件 nginx Python
Python编程:uWSGI+nginx配置flask实例
Python编程:uWSGI+nginx配置flask实例
137 0
|
应用服务中间件 Linux Shell
python编程:mac环境gunicorn+nginx部署flask项目
python编程:mac环境gunicorn+nginx部署flask项目
252 0
|
机器学习/深度学习 人工智能 小程序
阿里云服务器部署flask+Pytorch深度学习模型+nginx
本课程设计是开发一款具备AI能力的微信小程序,为了能让真机测试通过并成功上线,需要把flask+Pytorch深度学习模型部署到阿里云服务器,实现前后端的交互。对于服务器部署我们使用nginx进行ssl证书部署,修改nginx.conf文件,安装gunicorn库通过命令gunicorn -w 2 -b 127.0.0.1:5000 -demo:app命令来运行项目,使前后端能够交互,实现小程序的核心功能。
|
开发框架 Ubuntu 应用服务中间件
阿里云部署 Flask + WSGI + Nginx 详解
阿里云部署 Flask + WSGI + Nginx 详解
670 1
|
小程序 应用服务中间件 API
ubuntu18.04安装部署python3、nginx、Flask项目
ubuntu18.04安装部署python3、nginx、Flask项目
199 0
ubuntu18.04安装部署python3、nginx、Flask项目
|
负载均衡 网络协议 Ubuntu
|
数据可视化 搜索推荐 数据挖掘
Flask + echarts 轻松搞定 nginx 日志可视化(下)
最近,线上的业务系统不太稳定,需要分析下访问情况,能拿到的数据只有 nginx 服务器的访问日志,不过难不倒我,用合适的工具,分分钟做出图形化展示,看看怎么做的吧
240 0
Flask + echarts 轻松搞定 nginx 日志可视化(下)
相关产品
云迁移中心
推荐文章
更多