python flask服务部署、linux离线安装python、linux离线安装uWSGI、linux离线安装Gunicorn、linux离线安装pip

要部署flask web服务,先要了解:

1.什么是WSGI,uwsgi和gunicorn?
2.在Python Web部署中起到什么作用?

WSGI(Web Server Gateway Interface)
定义:WSGI 是 Python 的一种标准接口,用于将 Web 服务器与 Python Web 应用程序连接起来。它定义了一个简单的调用约定,使得 Web 服务器能够与任何符合该标准的 Python 应用进行交互。
作用:WSGI 使得不同的 Web 服务器(如 Nginx、Apache)可以与 Python Web 框架(如 Flask、Django)无缝协作。
特点:通过 WSGI,开发者可以编写与特定服务器无关的应用程序,从而提高了代码的可移植性。

uWSGI
定义:uWSGI 是一个高性能的 Web 服务器和应用服务器,它实现了 WSGI 标准,并提供了额外的功能,如负载均衡和进程管理。
特点:
多协议支持:除了 WSGI,它还支持其他协议(如 HTTP、FastCGI)。
进程管理:uWSGI 可以管理多个工作进程,提高并发处理能力。
性能优化:通过使用共享内存和异步处理,uWSGI 提供高效的请求处理。
使用场景:常用于生产环境中,与 Nginx 等反向代理服务器一起搭配使用

Gunicorn
定义:Gunicorn(Green Unicorn)是一个基于 WSGI 的 Python 应用服务器,旨在为 Python Web 应用提供快速、轻量的服务。
特点:
简单易用:配置简单,适合快速启动和开发阶段。
多工作进程:支持多进程模型,可以轻松处理并发请求。
良好的性能:在许多场景下,Gunicorn 提供了良好的性能,并且易于与 Nginx 等反向代理结合使用。
使用场景:广泛用于生产环境,特别是与 Django 和 Flask 等框架结合使用。

总结:
    WSGI 是一个标准接口,定义了 Web 服务器与 Python 应用如何交互。
    uWSGI 和 Gunicorn 是实现 WSGI 的两个不同的应用服务器,各有特点和优势,通常根据项目需求选择使用

Linux下部署flask应用:

1. 准备环境

解压 .tar.xz 文件

tar -xf Python-3.12.5.tar.xz

解压 .tgz 文件

tar -xzf Python-3.12.5.taz

1.1进入解压目录
cd Python-3.12.5
1.2配置编译选项:
./configure --enable-optimizations

1.3编译和安装:
make
sudo make altinstall

1.4验证安装
# 检查 Python 版本
python --version

1.5检查 pip 版本
python -m pip --version

#pip下载地方:pypi安装包下载_开源镜像站-阿里云

1.6安装 pip
python get-pip.py


虚拟环境:使用 venv 或 virtualenv 创建虚拟环境来隔离项目依赖。
python -m venv venv
source venv/bin/activate

2.安装依赖
pip install -r requirements.txt

离线模式:

2.1下载
pip download -r requirements.txt -d /usr/downloaded/packages -i https://pypi.tuna.tsinghua.edu.cn/simple
2.2上传后安装
pip install --no-index --find-links=/usr/downloaded/packages -r requirements.txt

3.配置 WSGI 服务器
选择服务器:可以使用 Gunicorn 或 uWSGI。

下载:

pip download gunicorn -d /usr/downloaded/packages -i https://pypi.tuna.tsinghua.edu.cn/simple

上传、安装

pip install --no-index --find-links=/path/to/downloaded/packages gunicorn


Gunicorn 示例:
gunicorn -w 4 myapp:app

其中 myapp 是你的应用模块名,app 是 Flask 实例

如果是uwsgi示例:

下载:

pip download uwsgi -d /usr/downloaded/packages -i https://pypi.tuna.tsinghua.edu.cn/simple

上传、安装

cd /path/to/downloaded/packages

pip install --no-index --find-links=. uwsgi

uwsgi --http :8000 --processes 4 --module myapp:app

--http :8000:表示 uWSGI 监听在 8000 端口上,你可以根据需要更改这个端口。
--processes 4:表示启动 4 个工作进程。
--module myapp:app:指定你的应用模块,其中 myapp 是 Python 文件名(不带 .py 后缀),app 是 WSGI 应用对象的名称。

4.配置反向代理
Nginx 示例:
编辑 /etc/nginx/sites-available/your_site 文件:
server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

链接到 sites-enabled 并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/your_site /etc/nginx/sites-enabled/
sudo systemctl restart nginx

5.启动 WSGI 服务器:
Gunicorn:
gunicorn -w 4 myapp:app
uWSGI:
uwsgi --http :8000 --module myapp:app

6.配置自动重启
使用 Systemd:创建一个 Systemd 服务文件 /etc/systemd/system/myapp.service:
[Unit]
Description=Gunicorn instance to serve myapp
After=network.target

[Service]
User=your_user
Group=your_group
WorkingDirectory=/path/to/your/app
ExecStart=/path/to/venv/bin/gunicorn -w 4 myapp:app

[Install]
WantedBy=multi-user.target

启动并使其开机自启:
sudo systemctl start myapp
sudo systemctl enable myapp

7.设置安全和监控
SSL/TLS:使用 Let's Encrypt 或其他证书颁发机构配置 HTTPS。
日志:确保配置日志记录,便于监控和调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值