首页 > 资讯 >

世界看点:宝塔上部署FastAPI的步骤和一些注意点

2023-03-25 16:04:43 来源:博客园

为了运维方便,选择直接用宝塔来管理python fastapi的项目,虽然直接部署可能性能更好更灵活,但是我选择了低层本,每个人的选择可能是不一样的,各有 考虑吧。


(资料图片)

本文的大逻辑是先写一个helloworld的程序,然后再部署到服务器上

步骤一:先本地运行一个基于fastapi的helloWorld例子,方便后面在服务器上验证

1. 编写基于FastApi的Hello World文件main.py

import uvicornfrom fastapi import FastAPIapp = FastAPI()  @app.get("/")def sayHi():    return {"message":"Hello world!"}# 启动uvicorn服务,默认端口8000  uvicorn myapi:api  --reloadif __name__ == "__main__":    uvicorn.run("main:app")

2. 显示本地运行跑通,本地可以使用vscode编译器,并在运行dos命令

pip install fastapi[all]uvicorn main:app  --reload

reload参数是为了修改代码后的热部署,运行没有报错后可以浏览器访问: http://127.0.0.1:8000

如果看到打印信息则说明OK

步骤二:在宝塔上部署python的环境

1. 商店安装插件python进程管理插件

* Python项目管理器:管理应用实例

* 进程守护管理器:实例进程的守护

2. 进入Python项目管理器,首先安装python版本,尽量与本地的一致,避免出现本地好的,服务器上出现问题,特别怕依赖包不一致的问题。本地查看版本的命令是

python --version

3.在本地生成requirements.txt,否则宝塔创建项目会报错。创建命令如下

pip freeze >requirements.txtpip install -r requirements.txt

将代码上传到宝塔的/www/wwwpython/helloworld

4. 在python进程管理插件创建项目,具体参数如下,记得选择gunicon

5. 在配置修改参数,重启。

默认为worker_class = "geventwebsocket.gunicorn.workers.GeventWebSocketWorker"修改为worker_class = "uvicorn.workers.UvicornWorker"

7.这里有一个坑,启动后系统会自动暂停,日志报错如下的话,是2个问题,一是启动文件名为main.py,二是启动文件是app,即在main.py中启动命令是:

uvicorn.run("main:app")具体报错信息如下:Worker failed to boot.
Traceback (most recent call last):  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/arbiter.py", line 586, in spawn_worker    worker.init_process()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/workers/ggevent.py", line 203, in init_process    super(GeventWorker, self).init_process()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/workers/base.py", line 135, in init_process    self.load_wsgi()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi    self.wsgi = self.app.wsgi()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi    self.callable = self.load()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load    return self.load_wsgiapp()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp    return util.import_app(self.app_uri)  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/util.py", line 350, in import_app    __import__(module)  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gevent/builtins.py", line 96, in __import__    result = _import(*args, **kwargs)  File "/www/wwwpython/helloworld/myapi.py", line 9SyntaxError: Non-ASCII character "\xe5" in file /www/wwwpython/helloworld/myapi.py on line 9, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details[2023-03-25 09:26:44 +0000] [7373] [INFO] Worker exiting (pid: 7373)[2023-03-25 09:26:44 +0000] [7368] [INFO] Shutting down: Master[2023-03-25 09:26:44 +0000] [7368] [INFO] Reason: Worker failed to boot.[2023-03-25 09:26:45 +0000] [7385] [INFO] Starting gunicorn 19.10.0[2023-03-25 09:26:45 +0000] [7385] [INFO] Listening at: http://0.0.0.0:12345 (7385)[2023-03-25 09:26:45 +0000] [7385] [INFO] Using worker: geventwebsocket.gunicorn.workers.GeventWebSocketWorker[2023-03-25 09:26:45 +0000] [7394] [INFO] Booting worker with pid: 7394[2023-03-25 09:26:45 +0000] [7394] [ERROR] Exception in worker processTraceback (most recent call last):  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/arbiter.py", line 586, in spawn_worker    worker.init_process()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/workers/ggevent.py", line 203, in init_process    super(GeventWorker, self).init_process()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/workers/base.py", line 135, in init_process    self.load_wsgi()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi    self.wsgi = self.app.wsgi()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi    self.callable = self.load()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load    return self.load_wsgiapp()  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp    return util.import_app(self.app_uri)  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gunicorn/util.py", line 350, in import_app    __import__(module)  File "/www/wwwpython/helloworld/helloworld_venv/lib/python2.7/site-packages/gevent/builtins.py", line 96, in __import__    result = _import(*args, **kwargs)  File "/www/wwwpython/helloworld/myapi.py", line 9SyntaxError: Non-ASCII character "\xe5" in file /www/wwwpython/helloworld/myapi.py on line 9, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details[2023-03-25 09:26:45 +0000] [7394] [INFO] Worker exiting (pid: 7394)[2023-03-25 09:26:45 +0000] [7385] [INFO] Shutting down: Master[2023-03-25 09:26:45 +0000] [7385] [INFO] Reason: Worker failed to boot.

8. 设置映射域名,比如设置了 demo.xxx.com,即系统会自动创建这个域名的网站,并设置了反向代理

通过 http://demo.xxx.com 返回正常即配置完成。

各位,祝好运,顺利完成配置。

标签:

世界看点:宝塔上部署FastAPI的步骤和一些注意点

宝塔配置fastapi的步骤和一些坑,Workerfailedtoboot 报错的处理方式

2023-03-25

全球热推荐:魔域智力竞赛答题库(《魔域》魔域智力答题器玩家心得)

1、魔域智力答题器2、不要钱的 你的想法太天真了,不会有人白给的 最后说下,白给你的全是病...

2023-03-25

天天热门:tplink初始密码是什么

tplink初始密码是admin,没有用户名,一般该登录方式用于迷你路由器。TP-LINK是普联技术有限公司旗下的...

2023-03-25

焦点简讯:试驾2023款极氪001:晚买有折扣!

今天试驾的2023款极氪001将上述三句调侃变成了现实,它携多项全系重磅升级和“限时免费赠送选装”政策而...

2023-03-25

今日关注:吃什么食物对心脏最好的食物_吃什么对心脏好的食物有哪些

今天小编肥嘟来为大家解答以上的问题。吃什么食物对心脏最好的食物,吃什么对心脏好的食物有哪些相信很...

2023-03-25

世界微资讯!北汽股票价格是多少_北汽集团股票代码

1、买股票你可以到这里来看看。2、梨谣碘。本文就为大家分享到这里,希望小伙伴们会喜欢。

2023-03-25

天天头条:广西十大高峰,等你来挑战!

喀斯特地貌为主的广西奇山一片接着一片,数量数不胜数,可谓是奇山多秀水清。这么多山中,肯定有那最高...

2023-03-25

全球微速讯:爱情歌词 爱情歌词是什么

爱情-莫文蔚(KarenMok)词:姚谦 张洪量曲:张洪量若不是因为爱着你怎么会夜深还没睡意每个念头都关于你...

2023-03-24

世界看热讯:2023年CBA全明星周末明日打响 单项火爆,新星闪耀!

2023年CBA全明星周末将于3月24日至26日在厦门奥林匹克体育中心凤凰体育馆打响。23日晚,CBA联赛官方公布了20

2023-03-24

环球速看:慢性胃炎怎么调理才能消除_慢性胃炎怎么调理

1、病情分析:慢性胃炎通常是由胃的消化功能差、胃动力不足、饮食不规律等因素引起的,可伴有腹胀、恶心...

2023-03-24

【环球新视野】3月24日棉纱主力2305合约下跌0.51%

3月24日,棉纱主力2305合约开盘价20700元 吨,结算价20650元 吨。最高报20745元 吨,最低报20555元 ...

2023-03-24

快播:车损险不计免赔是什么_车损险不计免赔是什么意思

1、车损不计免赔指的是;不计免赔险和车损险属于两个险种,其中不计免赔险属于附加险,车损险属于主险。...

2023-03-24

天天热点!贵人鸟抢滩百亿蓝海 拟打造湿地无菌米饭第一品牌

3月23日,贵人鸟(603555)全资子公司金鹤农业宣布于齐齐哈尔市建设黑龙江省首个预制菜产业园。项目拟计划...

2023-03-24

每日看点!亲爱的客栈3播出时间

《亲爱的客栈3》播出时间是2019年10月25日,节目嘉宾有张翰、林心如、马天宇、李兰迪、阚清子、陈翔、吴...

2023-03-24

焦点快报!iphone4s下载软件不兼容怎么办(iphone4s下载软件)

1、与Android不同,苹果的IOS系统是一个封闭的系统,所以苹果的手机下载软件必须通过AppStore下载。在手机的

2023-03-24

环球快报:金朝阳集团2022年收益4.78亿港元 同比下降约16%

观点网讯:3月24日,金朝阳集团有限公司发布了截至2022年12月21日止全年业绩及建议采纳经修订及重列的公...

2023-03-24

环球热推荐:5分钟读懂!丰田第五代智能电混为何这么牛!

5分钟读懂!丰田第五代智能电混为何这么牛!

2023-03-24

焦点快报!西安高新区开展“世界防治结核病”宣传月活动

3月23日上午,西安高新区“世界防治结核病”宣传“进企业”活动在比亚迪草堂工业园举行。本次活动宣传了...

2023-03-24

天天滚动:明朝海军有多厉害?对外300多年从未败仗,后为何被清军打败?

明朝海军有多厉害?对外300多年从未败仗,后为何被清军打败?,明朝海军有多厉害?对外300多年从未败仗,...

2023-03-24

每日消息!梵蒂冈的首都是

梵蒂冈城国(VaticanCityState)简称梵蒂冈或梵蒂冈城,是一个独立的主权国家,由于四面都与意大利接壤...

2023-03-24

环球新资讯:汇通能源:3日累跌超20%,公司生产经营情况正常,终止控制权变更及重大资产出售事项

汇通能源11月3日公告,公司股票于2022年11月1日、2日、3日连续三个交易日内日收盘价格跌幅偏离值累计超过20%,属

2023-03-24

焦点快播:全国12315平台为消费者挽回经济损失超百亿元

23日,记者从国家市场监督管理总局获悉:截至去年底,全国12315平台受理投诉举报咨询7078 94万件,为消...

2023-03-24

当前观点:精神总动员-教育部1939年颁令各级学校积极训练的歌曲

有两位UP主发布歌曲“精神总动员”,得以听到这支歌,谢谢。好友XDJ先生听到“精神总动员”之后,非常感...

2023-03-24

焦点热文:广场舞_gb游戏

1、gameboy,任天堂的著名手掌机,黑白画面,1989年4月6日问世,画面用现在的眼光看当然是很粗糙了,但...

2023-03-23

天天资讯:双眼皮一个月能恢复成什么样?

双眼皮手术后一般一个月能基本恢复,三个月后完全能够变得自然好看。2 埋线双眼皮恢复的相对较快,一般...

2023-03-23

今日观点!鼓励运动员的话

环球速递!外交部:中方将继续坚定捍卫国家主权和安全 维护南海和平稳定

全球今日讯!提供103个优质岗位!海南保亭赴西安揽才

看点:全校表扬!骑车送走失男童回家的仨高中生获奖

世界最新:诺基亚贝尔蔡立羽:云计算和web3.0是支撑元宇宙的两个重要基础

天天即时看!气温“跳水”!冷空气今天到广西,带来暴雨、大风和冰雹!

天天短讯!一篇完整的公众号内容范文(热门7篇)

世界热点!奥地利属于哪个国家

全球消息!ETF期权怎么买用不用另开户?

简讯:石狮:一男子忘记锁车 3瓶茅台不翼而飞

焦点简讯:海口项目建设处处体现节约用水管理理念

环球信息:华硕笔记本电脑进入bios按什么键_华硕笔记本进bios按什么键

今日聚焦!魔塔60层无敌版攻略视频_魔塔60层无敌版筋斗云

每日观点:电脑获取不到IP地址如何解决

焦点!ATP官宣2024赛程:共29国63站 上海大师赛领衔中国赛季

天天消息!金鱼眼睛长白膜怎么治疗_金鱼眼睛长白膜

天天动态:定向改造新天然产物分子,合成生物公司「合生科技」获A轮融资 | 36氪首发

世界观察:王者荣耀 旗袍同人 图,王者荣耀里哪一个女英雄最性感图

热门看点:拜登忘记新上任美国防长名字 现场什么情况具体怎么回事

环球滚动:强化依法治水 携手共护母亲河 --抚州举办“世界水日”“中国水周”主题宣传系列活动

世界最资讯丨星帅尔:目前公司光伏业务国内外市场占比约各半

热消息:她在秋天种玫瑰|温峥嵘谈如何经营婚姻

天天热文:回天新材:锂电池领域产品开始逐步起量

【全球报资讯】LPR维持不变,房贷利率会继续下降吗?存量房贷利率应该下调吗?

环球观察:春分,孩子们“遇见”非遗

Copyright @  2015-2022 东方家电网版权所有  备案号: 沪ICP备2020036824号-8   联系邮箱:562 66 29@qq.com