文章目录

  • 前言
  • 一、如何启动服务
  • 二、挂载和开机启动服务
    • 1. 配置systemctl 服务
    • 2. 创建server用户
    • 3. 启动服务
  • 总结


前言

如果你的后端服务写好了如果部署到你的服务器呢,本次通过fastapi写的服务实例,示范如何部署到服务器,并做服务管理。


一、如何启动服务

首先将app文件放到服务器目录,实例app文件如下:

from fastapi import FastAPI, APIRouter
from fastapi.middleware.cors import CORSMiddleware
import uvicornapi_router = APIRouter()app = FastAPI()
app.include_router(api_router)# 添加跨域中间件
app.add_middleware(CORSMiddleware,allow_origins=["*"],allow_credentials=True,allow_methods=["*"],allow_headers=["*"],
)__VERSION__ = '1.0.0'@app.get("/version", status_code=201)
async def say_hi():return {"message": 'connection is OK !',"version": __VERSION__,"success": True}def start_sever():uvicorn.run(app, host='127.0.0.1', port=8080)if __name__ == '__main__':start_sever()

在app目录执行

gunicorn -w 4 -k uvicorn.workers.UvicornWorker app.main:app --bind 0.0.0.0:8000

Gunicorn 和 Uvicorn 都是 Python Web 服务器的工具,uvicorn支持携程操作,gunicorn支持多核操作,两者搭配使用,通过-w 参数配置核心数。

注意:上面的app.main使用自己的项目名,如果显示端口被占用,可以更改另一个端口。

此时服务已经启动了,通过浏览器检查 http://127.0.0.1/docs可以看到fastapi提公的api文档。

二、挂载和开机启动服务

1. 配置systemctl 服务

配置systemctl 服务文件:

/etc/systemd/system/your-serverr.service

[Unit]
Description= your server
After=network.target[Service]
User=server_user
Group=server_user
WorkingDirectory=/opt/data-center-server/server
Environment="PATH=/usr/local/bin:/usr/bin:/bin"
Environment="PYTHONPATH=/opt/data-center-server/server"# 使用您已验证成功的命令格式ExecStart=/usr/bin/gunicorn \-k uvicorn.workers.UvicornWorker \server:app \--bind 0.0.0.0:8080Restart=always
RestartSec=3
StandardOutput=journal
StandardError=journal[Install]
WantedBy=multi-user.target

2. 创建server用户

对于一个特定的服务应该需要配置要给用户,并基于当个文件目录的权限

sudo adduser --system --no-create-home --group fastapi_runtime

创建一个无登录权限的用户,配置用户权限

sudo chown -R fastapi_user:fastapi_user /path/to/your/project
sudo chmod 750 /path/to/your/project

测试用户运行

sudo -u server_user bash -c 'cd /opt/data-center-server/server && /usr/local/bin/gunicorn -w 1 app.main:app --bind 127.0.0.1:8000'

3. 启动服务

启动服务配置开机启动

systemctl daemon-reload
systemctl start your-server.service
systemctl enable your-server.service

通过浏览器应该能访问服务接口

在这里插入图片描述

如果上述失败,检查服务启动日志,看是哪一步的问题。

journalctl -u your-server.service -n 100

总结

以上就是如何通过systemctl挂载和启动服务,后续如果有多个服务,注意端口的重复占用,当然也可以通过Nginx来分配端口的环回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87625.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87625.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/87625.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国产MCU学习Day5——CW32F030C8T6:窗口看门狗功能全解析

每日更新教程,评论区答疑解惑,小白也能变大神!" 目录 一.窗口看门狗(WWDG)简介 二.窗口看门狗寄存器列表 三.窗口看门狗复位案例 一.窗口看门狗(WWDG)简介 CW32F030C8T6 内部集成窗口看…

2025年文件加密软件分享:守护数字世界的核心防线

在数字化时代,数据已成为个人与企业的宝贵资产,文件加密软件通过复杂的算法,确保信息在存储、传输与共享过程中的保密性、完整性与可用性。一、文件加密软件的核心原理文件加密软件算法以其高效性与安全性广泛应用,通过对文件数据…

node.js下载教程

1.项目环境文档 语雀 2.nvm安装教程与nvm常见命令,超详细!-阿里云开发者社区 C:\Windows\System32>nvm -v 1.2.2 C:\Windows\System32>nvm list available Error retrieving "http://npm.taobao.org/mirrors/node/index.json": HTTP Status 404 C:\Window…

(AI如何解决问题)在一个项目,跳转到外部html页面,页面布局

问题描述目前,ERP后台有很多跳转外部链接的地方,会直接打开一个tab显示。因为有些页面是适配手机屏幕显示,放在浏览器会超级大。不美观,因此提出优化。修改前:修改后:思考过程1、先看下代码:log…

网络通信协议与虚拟网络技术相关整理(上)

#作者:程宏斌 文章目录 tcp协议udp协议arp协议icmp协议dhcp协议BGP协议OSPF协议BGP vs OSPF 对比表VLAN(Virtual LAN)VXLAN(Virtual Extensible LAN)IPIP(IP-in-IP)vxlan/vlan/ipip网桥/veth网…

物联网软件层面的核心技术体系

物联网软件层面的核心技术体系 物联网(IoT)软件技术栈是一个多层次的复杂体系,涵盖从设备端到云平台的完整解决方案。以下是物联网软件层面的关键技术分类及详细说明: 一、设备端软件技术 1. 嵌入式操作系统 实时操作系统(RTOS): FreeRTO…

GreatSQL通过伪装从库回放Binlog文件

GreatSQL通过伪装从库回放Binlog文件 一、适用场景说明 1、主库误操作恢复 利用 Binlog 在其他实例解析、回放,根据gtid只回放到指定位点。 2、网络隔离环境同步 备份恢复后可以拉去主库Binlog文件至新实例同步增量数据。 3、备份恢复遇到Binlog文件过大处理 恢复实…

MVC 架构设计模式

在现代软件开发中,架构设计决定了一个项目的可维护性与可扩展性。MVC(Model-View-Controller)作为经典的分层设计模式,广泛应用于 Web 系统、前端应用乃至移动端开发中。本文不仅介绍 MVC 的核心思想和机制,还将结合具…

(18)python+playwright自动化测试鼠标拖拽-上

1.简介 本文主要介绍两个在测试过程中可能会用到的功能:在selenium中介绍了Actions类中的拖拽操作和Actions类中的划取字段操作。例如:需要在一堆log字符中随机划取一段文字,然后右键选择摘取功能。playwright同样可以实现元素的拖拽和释放的…

Android 网络全栈攻略(四)—— TCPIP 协议族与 HTTPS 协议

Android 网络全栈攻略系列文章: Android 网络全栈攻略(一)—— HTTP 协议基础 Android 网络全栈攻略(二)—— 编码、加密、哈希、序列化与字符集 Android 网络全栈攻略(三)—— 登录与授权 Andr…

Python爬虫实战:从零构建完整项目(数据采集+存储+异常处理)

Python爬虫实战:从零构建完整项目(数据采集存储异常处理) 爬虫不是简单的请求解析,而是一个系统工程。本文将带你体验企业级爬虫开发的核心流程。 一、前言:为什么需要完整的爬虫项目? 作为初学者&#xf…

大数据时代UI前端的用户体验设计新思维:以用户为中心的数据可视化

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言:大数据重构用户体验设计的底层逻辑在数据爆炸式增长的今天,用…

FreeRTOS 中任务控制块(Task Control Block,TCB)用于管理和描述任务的核心数据结构

在 FreeRTOS 中,任务控制块(Task Control Block,TCB)是用于管理和描述任务的核心数据结构。每个任务都有一个对应的 TCB,它包含了任务的所有相关信息。 TCB 的主要功能 存储任务状态信息:TCB 中包含了任务…

前端-HTML-day1

目录 1、标签语法 2、HTML基本骨架 3、标签的关系 4、注释 5、标题标签 6、段落标签 7、换行和水平线标签 8、文本格式化标签 9、图像标签-基本使用 10、图像标签-属性 11、相对路径 12、绝对路径 13、超链接 14、音频 15、视频 16、综合案例1--个人简介 17、…

OpenCV篇——项目(二)OCR文档扫描

目录 文档扫描项目说明 前言 文档扫描代码总体演示 OCR文档识别代码总体演示: ​编辑 代码功能详解 1. 预处理阶段 2. 边缘检测 3. 轮廓处理 4. 透视变换 5. 后处理 主要改进说明: 使用建议: 文档扫描项目说明 前言 本项目实现了一个自动…

Java 中导出包含多个 Sheet 的 Excel 文件

在 Java 中导出包含多个 Sheet 的 Excel 文件,可以使用 Apache POI 或 EasyExcel(阿里开源库)。以下是两种方法的详细实现: 方法 1:使用 Apache POI(支持 .xls 和 .xlsx) 1. 添加 Maven 依赖 …

OneCode采用虚拟DOM结构实现服务端渲染的技术实践

一、技术背景与挑战 随着企业级应用复杂度的提升,传统服务端渲染(SSR)面临页面交互性不足的问题,而纯前端SPA架构则存在首屏加载慢和SEO不友好的缺陷。OneCode框架创新性地将虚拟DOM技术引入服务端渲染流程,构建了一套兼顾性能与开发效率的企…

变幻莫测:CoreData 中 Transformable 类型面面俱到(八)

概述 各位似秃似不秃小码农们都知道,在苹果众多开发平台中 CoreData 无疑是那个最简洁、拥有“官方认证”且最具兼容性的数据库框架。使用它可以让我们非常方便的搭建出 App 所需要的持久存储体系。 不过,大家是否知道在 CoreData 中还存在一个 Transfo…

汽车LIN总线通讯:从物理层到协议栈的深度解析

目录一、物理层:单线传输的信号奥秘1.1 电平定义与信号传输1.2 关键硬件组件作用二、数据链路层:帧结构与通信协议2.1 LIN帧的组成与功能2.2 主从式通信机制三、波特率同步:从节点的时钟校准原理四、软件实现:基于S32K144的主节点…

马尔可夫链:随机过程的记忆法则与演化密码

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! 一、核心定义:无记忆的随机演化 马尔可夫链(M…