本文面向需要自行搭建API接口服務器讀者,過程操作比較簡單
使用SpringBoot 等框架用戶可以考慮是否忽略,
引子
需要做API接口有很多原因
- 前端開發使用api接口,依賴后端,假數據使用Mock或者本地json之類,不夠靈活
- 自己Demo或者程序,需要提供接口調用
- 等
原則上,部署完畢,后期可以做很接口開發,主要為APP提供接口使用,
至於安全和負載是后期的事情了,本文連日志和數據庫都沒來得及加....
另:自己搭建API服務器,成本和步驟是復雜度可以自行對比商業雲服務后台
效果
瀏覽器/PostMan 可以請求到服務器部署的 get返回結果 ,后續業務處理未完待續
是的,就是這么簡單的需求
准備材料
-
服務器 [白P的甲骨文主機],具體步驟請自行搜索 關鍵字 "甲骨文"“免費服務器”
注:免費服務器申請有失敗概率,如沒有成功,可以考慮其他平台雲服務器
-
SSH 工具,示例使用Xshell
步驟
-
申請 服務器,創建示例,上傳SSH密鑰 打開端口 8080 ,
建議創建Ubuntu主機,我選CentOS ,結果遇到很多問題,
需要自行安裝很多依賴,pip iptable等,后期部署完畢,發現8080端口沒開
-
SSH連接到,目標主機,
如果使用Oracle主機,ubuntu默認密碼是ubuntu ,CentOS默認密碼opc
開始安裝
$ pip install uvicorn $ pip install uvicorn
安裝完畢,按照Demo示例,寫個main.py
from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "FastAPI"}
通過xshell上傳到服務器
這里使用xshell直接拖到命令行就可以,如果提示,需要安裝 lrzsz
yum install lrzsz
啟動 uvicorn服務
uvicorn main:app --host '0.0.0.0' --port 8080 --reload
參數說明
main: 指定主程序文件main.py文件,
如果main.py文件改成test.py 則命令也需要改為uvicorn test:appapp:
在main.py中使用app = FastAPI()創建的對象
--host:遠程主機ip,如果是本地則可以不要這個參數
--host:端口號--reload:在修改源代碼后程序會自動重新加載不用退出重新啟動
運行成功后,會看到日志:
[root@bang-20210926-1658 ~]# uvicorn main:app --host '0.0.0.0' --port 8080 --reload
INFO: Will watch for changes in these directories: ['/root']
INFO: Uvicorn running on [http://0.0.0.0:8080](http://0.0.0.0:8080/) (Press CTRL+C to quit)
INFO: Started reloader process [36821] using statreload
INFO: Started server process [36823]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: 45.117.99.101:3662 - "GET / HTTP/1.1" 200 OK
接下來在瀏覽器或者使用Postman訪問 ,就可以看到返回結果了
http://xxx.xxx.xxx.xxx:8080/
過程中遇到的問題
- centos 缺少各種依賴庫,pip iptables,
- 端口未開放
本文參考:[排名部分現后,感謝作者]
1.FastAPI官方
2..FastAPI簡單操作
https://www.jianshu.com/p/3d391d022239
3.FastApi環境安裝+服務器部署
https://blog.csdn.net/suyancc/article/details/106588589
4.uvicorn|更改fastapi服務器運行host和port
https://blog.csdn.net/qq_31989047/article/details/105838679
5.檢測服務器端口是否被封(牆)
https://blog.csdn.net/willingtolove/article/details/104242802
6.Centos查看端口占用情況和開啟端口命令
https://cloud.tencent.com/developer/article/1473377
https://www.cnblogs.com/xqzt/p/4919191.html
7.CentOS7出現Unit iptables.service could not be found
https://blog.csdn.net/good_luck_l/article/details/94468915
8.WEB框架對比——Django、Flask、FastAPI
https://www.cnblogs.com/zhuminghui/p/14741536.html
9.Xshell實現Windows上傳文件到Linux主機
https://blog.csdn.net/shenjianxz/article/details/56686449
10.Xshell官網下載