Flask + Nginx + uwsgi+Centos超详细部署教程

背景

Flask应用开发成,部署到服务器。首先,查找了各种方法、资料,网上方法教程很多,以下内容是真实操作,比较详细,留作以后备用。

准备工作

名称参数
系统Centos7
PythonPython3 (Ancona3 也行)
Nginx1.17.8,其他版本也行,版本不要太老就行
为了方便操作说明,可以用最简单的项目进行测试,如下:

部署方式有2种

第一种,命令行方式,也是最简单的方式。

此方式适合开发测试,因为有命令行交互,可以发现很多问题,便于调试。

python3 xxx.py

在这里插入图片描述

第二种,Flask + Nginx + uwsgi。

当然,Flask+uwsgi也能完成部署,想要了解详细的,以及为啥不推荐这样,可以百度深入学习一下,这方面资料很多。

安装 Nginx

可以参考这篇文章:
CentOS7中安装Nginx

https://www.jianshu.com/p/5a6b2151da95

安装uwsgi

注意:安装之前要先安装依赖环境,否则报错,如下图
未安装依赖,报错了。。

安装依赖:

yum -y install gcc
yum -y install python3-devel
pip3 install uwsgi

创建test.py 文件,内容为
def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World"] # python3
    #return ["Hello World"] # python2

在这里插入图片描述
在这里插入图片描述

uwsgi常用命令

# uwsgi --ini uwsgi.ini             # 启动
# uwsgi --reload uwsgi.pid          # 重启
# uwsgi --stop uwsgi.pid            # 关闭

uwsgi 基础配置

在web部署目录,创建一下几个文件:
touch uwsgi.ini
touch uwsgi.pid
touch uwsgi.log
touch uwsgi.status
其他文件无需编辑,只用编辑ini文件即可,如下:

uwsgi.ini
[uwsgi]

socket=192.168.4.22:88  #你的机器的IP地址:web服务的端口(自定义,非flask run中的端口)
pythonpath=/webDir/web/dailywork # 你的web程序部署路基,注意,写到根目录即flask主文件所在
module=dailyRepo #  你定义的flask module名字,不能乱写,与代码中名字保持一致。
wsgi-file=/webDir/web/dailywork/dailyRepo.py #  你代码主程序
callable=app  # 看截图吧
processes=1  #进程数,这个看你服务器是几核CPU了
threading=3 # 线程数,这两个值相乘就是服务器承载能力了
daemonize=/webDir/web/dailywork/uwsgi.log #  建议与uwsgi.ini在同一个目录,方便管理
stats=/webDir/web/dailywork/uwsgi.status #  建议与uwsgi.ini在同一个目录,方便管理
pidfile=/webDir/web/dailywork/uwsgi.pid #  建议与uwsgi.ini在同一个目录,方便管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Nginx 配置

	server {
           listen       82;
           server_name  localhost;
            location / {
                include uwsgi_params;
                uwsgi_pass  IP地址:端口; #uwsgi.ini 文件中的IP与端口
                uwsgi_param UWSGI_CHDIR /webDir/web/dailywork; #与uwsgi.ini 中pythonpath 路径保持一致
                uwsgi_param UWSGI_SCRIPT dailyRepo:app; # 同上,与ini文件中 保持一致
           }
        }

在这里插入图片描述
配置完成,重启Nginx。/usr/local/nginx/sbin/nginx -s reload
完成

注意

  1. CentOS要关闭防火墙,或者 将web端口加入防火墙列表,否则无法访问。
  2. 首次运行时,建议先通过命令行,执行查看是否有缺失的组件,及时安装。
 如下:根据报错安装 pymsql即可
python3 dailyRepo.py
Traceback (most recent call last):
  File "dailyRepo.py", line 6, in <module>
    from Tools import mysqlOperation as mysql
  File "/webDir/web/dailywork/Tools/mysqlOperation.py", line 1, in <module>
    import pymysql
ModuleNotFoundError: No module named 'pymysql'
  1. 后期有更改,通过 uwsgi --reload uwsgi.pid 重启即可
  2. 很多组件需要root权限,建议安装时用root。
  3. 这是部署后网站,欢迎体验,可以注册 http://114.115.237.213:81
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于 CentOS 操作系统的 Nginx + Uwsgi + Flask 部署服务的详细操作步骤: 1. 安装必要的软件包 ```bash yum install epel-release yum install nginx yum install python3 python3-pip pip3 install uwsgi flask ``` 2. 创建 Flask 应用程序 在服务器上创建 Flask 应用程序,例如: ```python from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello, World!' if __name__ == '__main__': app.run() ``` 3. 创建 uwsgi 配置文件 在服务器上创建一个 uwsgi 配置文件,例如: ```ini [uwsgi] module = wsgi:app master = true processes = 5 socket = /tmp/uwsgi.sock chmod-socket = 660 vacuum = true die-on-term = true ``` 其中,`module` 参数指定 Flask 应用程序所在的模块和变量名,`socket` 参数指定 uwsgiNginx 通信的 Unix 套接字文件位置。 4. 创建 Nginx 配置文件 在服务器上创建一个 Nginx 配置文件,例如: ```nginx server { listen 80; server_name your-domain.com; location / { include uwsgi_params; uwsgi_pass unix:/tmp/uwsgi.sock; } } ``` 其中,`listen` 参数指定监听的端口,`server_name` 参数指定服务器的域名或 IP 地址,`location` 参数指定请求 URL 的路径,`uwsgi_pass` 参数指定 uwsgiNginx 通信的 Unix 套接字文件位置。 5. 启动服务 在服务器上启动 uwsgiNginx 服务: ```bash uwsgi --ini uwsgi.ini & systemctl start nginx ``` 6. 测试服务 在浏览器中输入服务器的域名或 IP 地址,应该能够看到 Hello, World! 的输出。 以上就是在 CentOS 上使用 Nginx + Uwsgi + Flask 部署服务的详细操作步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值