Centos7部署Fastapi

本文介绍了如何在CentOS7.9系统上,使用Python3.8环境部署FastAPI应用,包括安装必要的模块,编写基础代码,通过Gunicorn(配合UvicornWorker)启动服务,以及解决启动过程中遇到的问题。此外,还涉及到了使用配置文件启动服务和Nginx的配置,以实现对FastAPI服务的代理访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fastapi框架是python的一个新型的框架,号称站在巨人肩膀上的框架。它的最大特点就是既是异步框架又是轻量级框架,它借鉴了一些其他的框架的优点,有着堪比GO语言的性能。本次不介绍fastapi的使用方法,而是分享一下它的部署方法,接下来步入正题。

1.安装模块

本人用的是centos7.9、python3.8

yum install update
pip3 install fastapi
pip3 install uvicorn
pip3 install sqlalchemy
pip3 install uvloop
pip3 install httptools

以上的这些模块全部都有用处,全部安装

2.编写代码

首先创建基本的py文件,也是fastapi的启动文件

#fastapi_start.py
from fastapi import FastAPI
import uvicorn

app = FastAPI()


@app.get('/')
async def Index():
    return {"name":"芦苇浮绿水"}

简简单单一个运行程序就写好了,接下来运行

uvicorn fastapi_start:app --reload

运行之后,通过postman访问一下127.0.0.1:8000,输出以下内容

{"name":"芦苇浮绿水"}
3.部署

fastapi的程序写起来是非常方便的,当然部署的方式就不像django那样使用uwsgi做中间服务器了,这里用到gunicorn,它是一个Python WSGI UNIX的HTTP服务器,当然如果你有其他的方式也可不使用这个,没有固定的方式

#下载gunicorn
pip3 install gunicorn

有了这个之后我们大可以使用 gunicorn来启动,网上有很多教程使用以下方式启动的

gunicorn -w 2 -b 127.0.0.1:8000 fastapi_start:app
#实际上这是不可行的,如果直接这样启动,当你访问带有验证模型的接口时就会出现以下错误
'''
Traceback (most recent call last):
  File "/usr/local/python3/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 134, in handle
    self.handle_request(listener, req, client, addr)
  File "/usr/local/python3/lib/python3.6/site-packages/gunicorn/workers/sync.py", line 175, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
TypeError: __call__() missing 1 required positional argument: 'send'
'''

会告诉你缺少一个参数(之前我就是这样,废了半天劲)

使用以下方式启动!!!

gunicorn fastapi_start:app -b 0.0.0.0:8000 -w 4 -k uvicorn.workers.UvicornWorker
'''
此处的uvicorn.workers.UvicornWorker需要两个组件用来支撑
uvloop
httptools
所以一开始的包我们就选择安装它

-b 绑定的地址
-w 使用的工作数量
-d 代表守护程序(默认后台运行)
-c 指定配置文件
'''

简单的使用gunicorn启动过之后在postman中测试,正常输出内容

4.配置文件启动

如果我们指定的参数较多,上面的启动方法就会显得非常的繁琐,这时最好的方法就是用配置文件来启动项目

在你项目的根目录下创建gunicorn.py,用作配置文件,名字不是固定的,随便起

debug = True
daemon = True
bind = '0.0.0.0:8000'      # 绑定ip和端口号
backlog = 512                # 监听队列
#chdir = '/data/fastest'  # gunicorn程序的目录,如果设置环境变量了就不必开启
timeout = 30      # 超时
# worker_class = 'gevent' #使用gevent模式,还可以使用sync 模式,默认的是sync模式
work_class = 'uvicorn.workers.UvicornWorker'

workers = multiprocessing.cpu_count() * 2 + 1    # 进程数
threads = 2 #指定每个进程开启的线程数
loglevel = 'debug'  # 日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'    # 设置gunicorn访问日志格式,错误日志无法设置

"""
其每个选项的含义如下:
h          远程地址
l          '-'
u          当前为“-”,或者版本中的用户名
t          请求日期
r          状态栏 (e.g. ``GET / HTTP/1.1``)
s          状态
b          响应长度 或 '-'
f          referer
a          user agent
T          请求时间(秒)
D          请求时间(微秒)
L          请求时间(十进制秒)
p          进程ID
"""

# 如果使用service启动,这里的pid路径应与service的pid路径保持一致,否则无法启动
pidfile = "/home/fastapi/fastapi_start.pid"

accesslog = "/var/log/gunicorn_access.log"      # 访问日志文件
errorlog = "/var/log/gunicorn_error.log"        # 错误日志文件


#gunicorn.py
# Gunicorn的配置可以参考:
 # https://blog.youkuaiyun.com/y472360651/article/details/78538188
 # https://docs.gunicorn.org/en/stable/settings.html#server-    mechanics

ok,配置文件已经写好,接下来使用配置文件启动

gunicorn fastapi_start:app -c gunicorn.py -k uvicorn.workers.UvicornWorker

此时配置文件启动完成,postman访问接口,输出内容{“name”:“芦苇浮绿水”}

另外我们也可以使用脚本来启动服务,创建gunicorn_fast.service脚本

[Unit]
Description=Gunicorn fast
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking

PIDFile=/home/fastapi/fastapi_start.pid

# 这里使用了虚拟环境下的Gunicorn
ExecStart=/usr/bin/gunicorn  -c  /home/fastapi/gunicorn.py fastapi_start:app
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
systemctl  start/stop/restart gunicorn_fast.service
5.配置Nginx

一个服务怎能没有nginx呢,fastapi也不例外,在nginx.cnf中配置

server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        access_log      /var/log/myweb_access.log;
        error_log       /var/log/myweb_error.log;
        client_max_body_size 300M;
        location / {
            proxy_pass http://127.0.0.1:8000/;
}
}

重启nginx,配置完成

<think>嗯,用户想了解在CentOS 7部署DeepSeek。首先,我需要确定DeepSeek具体指的是什么。因为“DeepSeek”可能有不同的应用场景,比如是某个深度学习框架、企业软件,还是特定的开源项目。考虑到常见的部署需求,可能是指深度求索(DeepSeek)公司的某个AI模型或工具,比如他们的大模型或者相关应用。 假设用户指的是部署DeepSeek的AI模型,比如类似ChatGPT的大语言模型,那么部署步骤通常包括环境准备、依赖安装、模型下载、配置和启动服务。不过,不同的项目可能有不同的具体步骤,所以需要先确认是否有官方文档。但用户可能没有提供详细信息,所以需要给出一般性的指导。 首先,CentOS 7是比较旧的系统,默认的软件包可能较老,比如Python版本可能不够,需要升级。常见的步骤包括安装EPEL仓库,更新系统,安装Python 3.8或更高版本,可能使用虚拟环境。然后安装CUDA和cuDNN,如果使用GPU加速的话。接着,安装PyTorch等深度学习框架,再安装DeepSeek的代码库,可能需要从GitHub克隆,安装依赖,下载模型权重,最后配置和启动服务,比如用Flask或FastAPI暴露API接口。 另外,需要注意CentOS 7的兼容性问题,比如glibc版本是否满足要求。如果模型需要高版本的glibc,可能需要手动编译升级,但这可能会影响系统稳定性。这种情况下,建议使用Docker容器化部署,避免系统环境的冲突。例如,使用NVIDIA Docker镜像,包含所需的CUDA环境和Python版本,然后在容器内部署DeepSeek应用。 可能用户没有提到具体细节,所以需要覆盖两种可能性:直接部署在宿主机和使用Docker。另外,可能涉及到防火墙设置,开放端口,以及使用Nginx反向代理和HTTPS配置,但这些可能属于更高级的步骤,用户可能只需要基础部署。 另外,模型文件通常较大,需要确保磁盘空间足够,下载可能需要较长时间,特别是如果从Hugging Face或官方渠道获取的话。同时,需要关注权限问题,确保服务账户有足够的权限访问相关目录。 可能遇到的常见问题包括依赖冲突、CUDA版本与驱动不兼容、Python包安装失败等,需要逐步排查错误信息,查看日志。如果用户遇到具体问题,可能需要进一步帮助,但当前阶段需要给出一个通用的步骤指南。 总结下来,步骤可能包括: 1. 系统更新和依赖安装 2. Python环境配置(使用虚拟环境) 3. 安装CUDA和cuDNN(GPU支持) 4. 安装PyTorch和依赖库 5. 获取DeepSeek的代码和模型 6. 配置和启动服务 7. 测试和验证 同时,建议使用Docker简化环境配置,特别是对于不熟悉系统管理的用户来说更友好。在</think> CentOS 7部署深度求索(DeepSeek)的 AI 模型或工具(如大语言模型),通常需要以下步骤。以下是通用指南,具体细节可能因项目需求而调整: --- ### **1. 系统准备** - **更新系统及基础工具** ```bash sudo yum update -y sudo yum install -y epel-release wget git curl gcc gcc-c++ make openssl-devel bzip2-devel libffi-devel ``` - **安装 Python 3.8+** CentOS 7 默认 Python 版本较低,需手动安装高版本: ```bash sudo yum install -y python3 python3-devel # 若需更高版本,可通过源码编译或使用第三方仓库(如 Software Collections) ``` - **创建虚拟环境(推荐)** ```bash python3 -m venv deepseek-env source deepseek-env/bin/activate ``` --- ### **2. GPU 支持(可选)** - **安装 NVIDIA 驱动** 通过官方方式安装驱动,并验证: ```bash nvidia-smi # 检查是否识别 GPU ``` - **安装 CUDA 和 cuDNN** 根据模型要求选择版本(如 CUDA 11.8): ```bash # 参考 NVIDIA 官方文档安装 CUDA Toolkit wget https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo sudo mv cuda-rhel7.repo /etc/yum.repos.d/cuda.repo sudo yum install -y cuda-11-8 ``` --- ### **3. 安装依赖库** - **PyTorch 和深度学习库** 根据 CUDA 版本安装 PyTorch: ```bash pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 ``` - **其他依赖** 假设项目依赖在 `requirements.txt` 中: ```bash pip3 install -r requirements.txt ``` --- ### **4. 获取 DeepSeek 模型** - **下载代码仓库** ```bash git clone https://github.com/deepseek-ai/[repository-name].git cd [repository-name] ``` - **下载模型权重** 根据官方指引获取模型文件(如 Hugging Face 或官方渠道): ```bash # 示例:通过 huggingface-cli 下载 pip3 install huggingface_hub huggingface-cli download deepseek-ai/model-name --local-dir ./models ``` --- ### **5. 配置与启动** - **修改配置文件** 根据项目要求调整 `config.yaml` 或环境变量(如模型路径、端口等)。 - **启动服务** ```bash # 示例:启动 FastAPI 服务 uvicorn app:app --host 0.0.0.0 --port 8000 ``` --- ### **6. Docker 部署(推荐)** 若环境配置复杂,建议使用 Docker 避免依赖冲突: ```bash # 使用 NVIDIA 官方镜像 docker run --gpus all -it -p 8000:8000 \ -v /path/to/models:/app/models \ nvcr.io/nvidia/pytorch:23.10-py3 \ bash -c "git clone [repo] && cd [repo] && pip install -r requirements.txt && uvicorn app:app --host 0.0.0.0" ``` --- ### **7. 验证与访问** - **测试 API** ```bash curl http://localhost:8000/api/health ``` - **防火墙开放端口** ```bash sudo firewall-cmd --permanent --add-port=8000/tcp sudo firewall-cmd --reload ``` --- ### **注意事项** 1. **兼容性问题**:CentOS 7 的 `glibc` 版本可能较低,若报错需升级(谨慎操作)。 2. **模型权限**:确保从合法渠道获取模型权重,遵守许可协议。 3. **资源监控**:大型模型需足够内存和显存,建议使用 `htop` 或 `nvidia-smi` 监控。 如需更具体的步骤,请提供 DeepSeek 项目的官方文档或代码仓库链接!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芦苇浮绿水

觉得还不错请博主喝杯饮料

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值