国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

FastAPI + NGINX + Gunicorn:一步一步教你部署一個(gè)高性能的Python網(wǎng)頁應(yīng)用

這篇具有很好參考價(jià)值的文章主要介紹了FastAPI + NGINX + Gunicorn:一步一步教你部署一個(gè)高性能的Python網(wǎng)頁應(yīng)用。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、前言

部署一個(gè) FastAPI 應(yīng)用到你的服務(wù)器是一項(xiàng)復(fù)雜的任務(wù)。如果你對NGINX、GunicornUvicorn 這些技術(shù)不熟悉,可能會(huì)浪費(fèi)大量的時(shí)間。如果你是剛接觸 Python 語言不久或者希望利用 Python 構(gòu)建自己的Web應(yīng)用程序,本文的內(nèi)容可能會(huì)讓你第一次部署時(shí)更節(jié)省時(shí)間。

FastAPI 是用于開發(fā)API應(yīng)用最受歡迎的Python庫之一,用于開發(fā)API。它以其出色的性能和易用性而聞名。如果你在網(wǎng)頁應(yīng)用中使用機(jī)器學(xué)習(xí)模型,那么它很可能是你首選的工具。

NGINX、Gunicorn 和 Uvicorn 都是經(jīng)過實(shí)踐驗(yàn)證的技術(shù),常被用作反向代理和ASGI服務(wù)器來部署Python網(wǎng)頁應(yīng)用。如果你熟悉 Django 或 Flask,你可能之前聽說過它們中的一些。

fastapi gunicorn,Python開發(fā)實(shí)戰(zhàn),AI編程實(shí)戰(zhàn),Linux基礎(chǔ)指南,fastapi,nginx,gunicorn

接下來,我將展示如何結(jié)合這些工具來部署一個(gè) FastAPI 網(wǎng)頁應(yīng)用。以下是主要內(nèi)容:

  • 介紹FastAPI、NGINX、Gunicorn和Uvicorn的基礎(chǔ)知識(shí)。

  • 配置Gunicorn + Uvicorn作為ASGI服務(wù)器。

  • 設(shè)置NGINX作為反向代理服務(wù)器。

  • 使用Let's Encrypt生成免費(fèi)SSL證書。

二、技術(shù)框架介紹

2.1、FastAPI

FastAPI 是一個(gè)現(xiàn)代的、高性能的 Web 框架,用于使用 Python 構(gòu)建 API,并基于標(biāo)準(zhǔn)類型提示。

fastapi gunicorn,Python開發(fā)實(shí)戰(zhàn),AI編程實(shí)戰(zhàn),Linux基礎(chǔ)指南,fastapi,nginx,gunicorn

它具有以下主要特點(diǎn):

  • 高效運(yùn)行:借助 Starlette 和 pydantic,F(xiàn)astAPI 提供了與 NodeJS 和 Go 類似的出色性能。FastAPI比Flask快得多,它實(shí)際上是Python最快的Web框架之一。唯一比 FastAPI 更快的框架是 Starlette(FastAPI 實(shí)際上是基于 Starlette 構(gòu)建的)。

  • 快速開發(fā):它可以顯著提高開發(fā)速度。

  • 減少錯(cuò)誤:減少了人為錯(cuò)誤的可能性。

  • 直觀易用:支持強(qiáng)大的編輯器功能、自動(dòng)補(bǔ)全和更少的調(diào)試時(shí)間。

  • 簡單易學(xué):設(shè)計(jì)簡單明了,您可以花更少時(shí)間閱讀文檔。

  • 減少重復(fù)代碼量:最大限度地減少了代碼重復(fù)。

  • 健壯可靠:提供生產(chǎn)就緒的代碼和自動(dòng)生成交互式文檔功能。

  • 基于標(biāo)準(zhǔn)化:遵循 API、OpenAPI 和 JSON 模式等開放標(biāo)準(zhǔn)。

該框架旨在優(yōu)化開發(fā)人員體驗(yàn),使您能夠以簡潔的代碼構(gòu)建具備最佳實(shí)踐且適合生產(chǎn)環(huán)境使用的 API。

2.2、Gunicorn

Gunicorn是用于Python應(yīng)用程序的WSGI服務(wù)器的一種實(shí)現(xiàn)。

Gunicorn是一個(gè)符合WSGI標(biāo)準(zhǔn)的Web服務(wù)器,用于Python應(yīng)用程序,它接收從客戶端發(fā)送到Web服務(wù)器的請求,并將其轉(zhuǎn)發(fā)到Python應(yīng)用程序或Web框架(如Flask或Django)上,以便為請求運(yùn)行適當(dāng)?shù)?strong>應(yīng)用程序代碼。

fastapi gunicorn,Python開發(fā)實(shí)戰(zhàn),AI編程實(shí)戰(zhàn),Linux基礎(chǔ)指南,fastapi,nginx,gunicorn

2.3、Uvicorn

與Flask框架不同,F(xiàn)astAPI不包含任何內(nèi)置的開發(fā)服務(wù)器。因此,我們需要Uvicorn。它實(shí)施ASGI標(biāo)準(zhǔn),速度快如閃電。ASGI 代表 異步服務(wù)器網(wǎng)關(guān)接口。

  • Uvicorn是Python的ASGI Web服務(wù)器實(shí)現(xiàn)。

  • Uvicorn目前支持HTTP / 1.1和WebSockets。

2.4、Nginx

Nginx 是一個(gè)異步框架的 Web 服務(wù)器,也可以用作反向代理,負(fù)載平衡器 和 HTTP 緩存。該軟件由 Igor Sysoev 創(chuàng)建,并于2004年首次公開發(fā)布。同名公司成立于2011年,以提供支持。Nginx 是一款免費(fèi)的開源軟件,根據(jù)類 BSD 許可證的條款發(fā)布。一大部分Web服務(wù)器使用 Nginx ,通常作為負(fù)載均衡器。

fastapi gunicorn,Python開發(fā)實(shí)戰(zhàn),AI編程實(shí)戰(zhàn),Linux基礎(chǔ)指南,fastapi,nginx,gunicorn

Nginx 具備以下特點(diǎn):

  • 更快:單次請求會(huì)得到更快的響應(yīng);在高并發(fā)環(huán)境下,Nginx 比其他 WEB 服務(wù)器有更快的響應(yīng)。

  • 高擴(kuò)展性:Nginx 是基于模塊化設(shè)計(jì),由多個(gè)耦合度極低的模塊組成,因此具有很高的擴(kuò)展性。許多高流量的網(wǎng)站都傾向于開發(fā)符合自己業(yè)務(wù)特性的定制模塊。

  • 高可靠性:Nginx 的可靠性來自于其核心框架代碼的優(yōu)秀設(shè)計(jì),模塊設(shè)計(jì)的簡單性。另外,官方提供的常用模塊都非常穩(wěn)定,每個(gè) worker 進(jìn)程相對獨(dú)立,master 進(jìn)程在一個(gè) worker 進(jìn)程出錯(cuò)時(shí)可以快速拉起新的 worker 子進(jìn)程提供服務(wù)。

  • 低內(nèi)存消耗:一般情況下,10000個(gè)非活躍的 HTTP Keep-Alive 連接在 Nginx 中僅消耗 2.5MB 的內(nèi)存,這是 Nginx 支持高并發(fā)連接的基礎(chǔ);單機(jī)支持10萬以上的并發(fā)連接:理論上,Nginx 支持的并發(fā)連接上限取決于內(nèi)存,10萬遠(yuǎn)未封頂。

  • 熱部署:master 進(jìn)程與 worker 進(jìn)程的分離設(shè)計(jì),使得 Nginx 能夠提供熱部署功能,即在 7x24 小時(shí)不間斷服務(wù)的前提下,升級(jí) Nginx 的可執(zhí)行文件。當(dāng)然,它也支持不停止服務(wù)就更新配置項(xiàng),更換日志文件等功能。

  • 最自由的 BSD 許可協(xié)議:這是 Nginx 可以快速發(fā)展的強(qiáng)大動(dòng)力。BSD 許可協(xié)議不只是允許用戶免費(fèi)使用 Nginx ,它還允許用戶在自己的項(xiàng)目中直接使用或修改 Nginx 源碼,然后發(fā)布。

三、服務(wù)器安全設(shè)置

如果你的應(yīng)用部署在局域網(wǎng),你可能暫時(shí)不需要關(guān)注這塊,但如果你的應(yīng)用是部署在云服務(wù)器或者VPS,為了保障你的應(yīng)用安全性,建議還是需要對服務(wù)器做一些必要性的安全設(shè)置,避免被攻擊。

3.1、啟用自動(dòng)更新

首先,確保您的服務(wù)器擁有最新的軟件:

sudo apt update && sudo apt upgrade -y

以下是在使用基于Debian的服務(wù)器時(shí)會(huì)看到的常見命令:

  1. 使用命令sudo apt update來更新系統(tǒng)上的軟件包列表索引。

  2. 使用命令sudo apt upgrade -y將已安裝的軟件包升級(jí)到最新版本。使用-y標(biāo)志可以跳過確認(rèn)步驟,直接進(jìn)行安裝。

接下來,設(shè)置自動(dòng)安全更新,這樣就不必手動(dòng)執(zhí)行更新。為此,您需要安裝并啟用unnattended-upgrades

sudo apt install unattended-upgrades

安裝完成后,編輯文件 /etc/apt/apt.conf.d/20auto-upgrades 并按照以下配置進(jìn)行設(shè)置:

APT::Periodic::Update-Package-Lists "1";  # 每天自動(dòng)更新軟件包列表
APT::Periodic::Unattended-Upgrade "1";    # 系統(tǒng)將自動(dòng)升級(jí)到最新版本的軟件包
APT::Periodic::AutocleanInterval "7";     # 每周運(yùn)行一次自動(dòng)清理操作,刪除舊的和不必要的包文件

最后,在文件 /etc/apt/apt.conf.d/50unattended-upgrades 中進(jìn)行編輯,以確保系統(tǒng)在需要內(nèi)核更新時(shí)自動(dòng)重新啟動(dòng):

Unattended-Upgrade::Automatic-Reboot "true";

完成以上步驟后,您的系統(tǒng)將自動(dòng)執(zhí)行安全更新,并在需要時(shí)重新啟動(dòng)以應(yīng)用內(nèi)核更新。

3.2、創(chuàng)建非root用戶

為了減少黑客攻擊造成的損害,創(chuàng)建非root用戶是必要的。以下是一些命令來創(chuàng)建非root用戶和設(shè)置SSH密鑰登錄:

  • 創(chuàng)建一個(gè)新的非root用戶:
sudo adduser fastapi-user # 將fastapi-user替換為您喜歡的用戶名
  • 將該用戶添加到sudo組以獲得管理員權(quán)限:
sudo usermod -aG sudo fastapi-user # 將fastapi-user替換為您創(chuàng)建的用戶名
  • 使用新創(chuàng)建的用戶登錄服務(wù)器:
su - fastapi-user # 使用新用戶登錄,將fastapi-user替換為您創(chuàng)建的用戶名
  1. 設(shè)置使用SSH密鑰進(jìn)行身份驗(yàn)證:

如果您還沒有SSH密鑰,請?jiān)诒镜赜?jì)算機(jī)上打開終端并運(yùn)行以下命令(請注意將your-email-replace-with-your-email替換為您的實(shí)際電子郵件):

ssh-keygen -t ed25519 -C "your-email-replace-with-your-email"

這將生成一對SSH密鑰。

復(fù)制公共SSH密鑰并將其粘貼到遠(yuǎn)程服務(wù)器上(請注意將your-public-key-replace-with-your-public-key替換為實(shí)際公共密鑰):

echo "your-public-key-replace-with-your-public-key" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
  • 禁用root登錄和密碼身份驗(yàn)證:

使用sudo權(quán)限編輯/etc/ssh/sshd_config文件(例如使用sudo vim /etc/ssh/sshd_config命令)。

將以下行的值更改為所示:

PermitRootLogin no
PasswordAuthentication no

這將禁止root用戶登錄和使用密碼進(jìn)行SSH身份驗(yàn)證。

  • 保存并關(guān)閉文件后,重新啟動(dòng)SSH服務(wù)以使更改生效:
sudo service ssh restart

一旦完成上述步驟,請使用新創(chuàng)建的非root用戶和SSH密鑰進(jìn)行登錄,并確保禁用了root登錄和密碼身份驗(yàn)證。

3.3、其他安全措施

大多數(shù)云提供商都提供防火墻服務(wù)。如果您的云提供商不提供防火墻服務(wù),您可以手動(dòng)配置防火墻來限制傳入流量只能到達(dá)必要的端口,例如8044322端口。

另外,您還可以安裝并配置fail2ban來預(yù)防暴力身份驗(yàn)證攻擊。Fail2ban是一個(gè)用于保護(hù)Linux服務(wù)器免受惡意登錄嘗試的工具。它監(jiān)視系統(tǒng)日志文件,并根據(jù)設(shè)定的規(guī)則自動(dòng)禁止源IP地址。

如果您想了解更多關(guān)于保護(hù)Linux服務(wù)器的最佳實(shí)踐,請查看Linode提供的相關(guān)指南。這些指南將為您提供有關(guān)如何設(shè)置和增強(qiáng)服務(wù)器安全性的詳細(xì)信息。

四、安裝軟件工具

為了安裝必要的軟件工具,請按照以下步驟執(zhí)行:

4.1、安裝Python:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.11 python3.11-venv -y

4.2、安裝Supervisor和NGINX:

sudo apt install supervisor nginx -y

Supervisor 是一個(gè)用于類Unix操作系統(tǒng)(包括Linux)的進(jìn)程控制系統(tǒng),它用于監(jiān)視和管理程序的進(jìn)程。NGINX是一種常用的多功能軟件,通常用作反向代理來部署Web應(yīng)用程序。

4.3、啟用并啟動(dòng)Supervisor:

sudo systemctl enable supervisor
sudo systemctl start supervisor

使用enable命令將確保 Supervisor 在啟動(dòng)時(shí)自動(dòng)啟動(dòng),并使用start命令立即啟動(dòng) Supervisor 服務(wù)。

完成上述步驟后,您已成功安裝 Python、Supervisor 和 NGINX,并已啟用并啟動(dòng)了 Supervisor 服務(wù)。

五、設(shè)置 FastAPI 應(yīng)用程序

首先,將示例應(yīng)用程序克隆到/home/fastapi-user目錄下:

git clone https://github.com/dylanjcastillo/fastapi-nginx-gunicorn

這將從公共存儲(chǔ)庫克隆代碼。如果您要部署私有GitHub存儲(chǔ)庫中的應(yīng)用程序,請?jiān)O(shè)置GitHub部署密鑰并使用該密鑰克隆存儲(chǔ)庫。

接下來,創(chuàng)建一個(gè)虛擬環(huán)境并激活它:

cd /home/fastapi-user/fastapi-nginx-gunicorn
python3.11 -m venv .venv
source .venv/bin/activate

這些命令將使您進(jìn)入項(xiàng)目目錄,并在其中創(chuàng)建一個(gè)虛擬環(huán)境并激活它。一旦成功激活,您的命令行提示符前面應(yīng)顯示.venv。

現(xiàn)在,使用 requirements.txt 文件中指定的依賴項(xiàng)安裝所需的軟件包:

pip install -r requirements.txt

這將在當(dāng)前虛擬環(huán)境中安裝fastapi、gunicornuvicorn等軟件包。

為了驗(yàn)證一切是否順利,運(yùn)行應(yīng)用程序:

uvicorn main:app

運(yùn)行此命令時(shí)不應(yīng)出現(xiàn)任何錯(cuò)誤。您還可以打開新終端窗口,并連接到服務(wù)器,然后使用以下命令發(fā)出請求來驗(yàn)證它是否正常工作:

curl http://localhost:8000

您應(yīng)該會(huì)收到以下響應(yīng):

{"message":"It's working!"}

現(xiàn)在您已經(jīng)成功運(yùn)行了FastAPI應(yīng)用程序,接下來將配置Gunicorn作為WSGI服務(wù)器。

六、配置Gunicorn

配置Gunicorn有兩個(gè)步驟。首先,明確指定 Gunicorn 的配置要求。其次,設(shè)置Supervisor程序來運(yùn)行Gunicorn。

6.1 設(shè)置Gunicorn

首先,在項(xiàng)目目錄中創(chuàng)建一個(gè)名為 gunicorn_start 的文件:

vim gunicorn_start

然后,將以下內(nèi)容添加到文件中:

#!/bin/bash

NAME=fastapi-app
DIR=/home/fastapi-user/fastapi-nginx-gunicorn
USER=fastapi-user
GROUP=fastapi-user
WORKERS=3
WORKER_CLASS=uvicorn.workers.UvicornWorker
VENV=$DIR/.venv/bin/activate
BIND=unix:$DIR/run/gunicorn.sock
LOG_LEVEL=error

cd $DIR
source $VENV

exec gunicorn main:app \
  --name $NAME \
  --workers $WORKERS \
  --worker-class $WORKER_CLASS \
  --user=$USER \
  --group=$GROUP \
  --bind=$BIND \
  --log-level=$LOG_LEVEL \
  --log-file=-

這是您的設(shè)定解釋:

  • 第1行表示此腳本將由bash shell執(zhí)行。

  • 第3行至第11行指定您將傳遞給Gunicorn的配置選項(xiàng)。大多數(shù)參數(shù)都是直觀的,除了 WORKERSWORKER_CLASSBIND

  • WORKERS:定義要使用的工作進(jìn)程數(shù)量,通常建議使用CPU核心數(shù)+1。

  • WORKER_CLASS:指定要使用的工作進(jìn)程類型。在此示例中,您指定Uvicorn Worker作為ASGI服務(wù)器。

  • BIND:指定Gunicorn綁定到的 server socket

  • 第13行和第14行將當(dāng)前位置更改為項(xiàng)目目錄并激活虛擬環(huán)境。

  • 第16行至第24行使用指定的參數(shù)運(yùn)行Gunicorn。

保存并關(guān)閉文件。然后,通過運(yùn)行以下命令使其可執(zhí)行:

chmod u+x gunicorn_start

最后,在項(xiàng)目目錄中創(chuàng)建一個(gè)文件夾 run ,用于存儲(chǔ)您在參數(shù)中定義的Unix套接字文件BIND:

mkdir run

6.2 配置Supervisor

首先,在項(xiàng)目目錄中創(chuàng)建一個(gè)名為 logs 的目錄,用于存儲(chǔ)應(yīng)用程序的錯(cuò)誤日志:

mkdir logs

接下來,通過運(yùn)行以下命令創(chuàng)建Supervisor的配置文件:

sudo vim /etc/supervisor/conf.d/fastapi-app.conf

復(fù)制并粘貼以下內(nèi)容到文件中:

[program:fastapi-app]
command=/home/fastapi-user/fastapi-nginx-gunicorn/gunicorn_start
user=fastapi-user
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/fastapi-user/fastapi-nginx-gunicorn/logs/gunicorn-error.log

此配置文件指定了之前創(chuàng)建的 gunicorn_start 腳本,并設(shè)置了 fastapi-user 作為用戶。Supervisor 將在服務(wù)器啟動(dòng)時(shí)啟動(dòng)應(yīng)用程序,并在應(yīng)用程序失敗時(shí)重新啟動(dòng)它。錯(cuò)誤日志將記錄在項(xiàng)目目錄下 logs/gunicorn-error.log 文件中。

重新加載Supervisor配置并重啟服務(wù),通過運(yùn)行以下命令:

sudo supervisorctl reread
sudo supervisorctl update

最后,您可以通過運(yùn)行以下命令檢查程序的狀態(tài):

sudo supervisorctl status fastapi-app

如果一切順利,fastapi-app 服務(wù)的狀態(tài)應(yīng)顯示為 RUNNING

您還可以通過打開新的終端窗口,連接到服務(wù)器,并使用以下命令發(fā)出GET請求來測試它:

curl --unix-socket /home/fastapi-user/fastapi-nginx-gunicorn/run/gunicorn.sock localhost

您應(yīng)該會(huì)看到以下輸出:

{"message":"It's working!"

最后,如果您對代碼進(jìn)行了更改,可以通過運(yùn)行以下命令重新啟動(dòng)服務(wù)以應(yīng)用更改:

sudo supervisorctl restart fastapi-app

現(xiàn)在您已經(jīng)擁有一個(gè)使用Gunicorn和Uvicorn作為ASGI服務(wù)器的應(yīng)用程序。接下來,您將使用NGINX設(shè)置反向代理服務(wù)器。

七、配置NGINX

為您的項(xiàng)目創(chuàng)建一個(gè)新的 NGINX 配置文件:

sudo vim /etc/nginx/sites-available/fastapi-app

打開NGINX配置文件并粘貼以下內(nèi)容:

upstream app_server {
    server unix:/home/fastapi-user/fastapi-nginx-gunicorn/run/gunicorn.sock fail_timeout=0;
}

server {
    listen 80;

    # add here the ip address of your server
    # or a domain pointing to that ip (like example.com or www.example.com)
    server_name XXXX;

    keepalive_timeout 5;
    client_max_body_size 4G;

    access_log /home/fastapi-user/fastapi-nginx-gunicorn/logs/nginx-access.log;
    error_log /home/fastapi-user/fastapi-nginx-gunicorn/logs/nginx-error.log;

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        if (!-f $request_filename) {
            proxy_pass http://app_server;
            break;
        }
        }
}

這是 NGINX 配置文件。它的工作原理如下:

  • 第 1 行到第 3 行app_server定義了一個(gè)稱為NGINX 將代理請求的服務(wù)器集群。請求被重定向到位于 的 Unix socket file /home/fastapi-user/fastapi-nginx-gunicorn/run/gunicorn.sock。設(shè)置fail_timeout=0告訴 NGINX 不要將服務(wù)器視為失敗,即使它沒有響應(yīng)。

  • 第 1 行到第 5 行定義了 NGINX 將用于處理請求的虛擬服務(wù)器的配置。在本例中,它偵聽端口 80。將 XXXX 替換為 IP 或站點(diǎn)名稱。

  • 第 12 行和第 13 行指定keepalive_timeout設(shè)置客戶端可以保持持久連接打開的最長時(shí)間,并client_max_body_size設(shè)置 NGINX 允許的客戶端請求正文的大小限制。

  • 第 15 行和第 16 行指定 NGINX 將寫入其訪問和錯(cuò)誤日志的位置。

  • 第 18 至 27 行定義了 NGINX 將如何處理對根目錄的請求/。您提供一些規(guī)范來處理標(biāo)頭,并設(shè)置一個(gè)指令來將請求代理到您app_server之前定義的。

通過運(yùn)行以下命令從文件創(chuàng)建符號(hào)鏈接來啟用站點(diǎn)配置sites-availablesites-enabled

sudo ln -s /etc/nginx/sites-available/fastapi-app /etc/nginx/sites-enabled/

測試配置文件是否正常并重啟NGINX:

sudo nginx -tsudo systemctl restart nginx

如果一切順利,現(xiàn)在您應(yīng)該能夠從瀏覽器或使用curl. 您應(yīng)該再次看到以下輸出:

{"message":"It's working!"}

您現(xiàn)在應(yīng)該已經(jīng)運(yùn)行了 FastAPI 應(yīng)用程序,并且 Gunicorn+Uvicorn 作為 ASGI 服務(wù)器,NGINX 在它們前面作為反向代理。

7.1、權(quán)限錯(cuò)誤

如果出現(xiàn)權(quán)限錯(cuò)誤,表示NGINX無法訪問Unix socket,您可以將用戶 www-data(通常是NGINX進(jìn)程運(yùn)行的用戶)添加到fastapi-user組中。您可以使用以下命令:

sudo usermod -aG fastapi-user www-data

如果您還沒有為API應(yīng)用購買域名,則不需要往下閱讀了。如果您已經(jīng)有域名,請繼續(xù)執(zhí)行下一步以獲取SSL證書并啟用HTTPS。

八、使用 Certbot 獲取免費(fèi) SSL 證書

這僅適用于您希望為其獲取SSL證書的域名。如果您使用的是Ubuntu,則可以跳過此步驟。否則,您首先需要安裝snapd

sudo apt install snapd

接下來,確保您擁有最新可用版本:

sudo snap install core; sudo snap refresh core

安裝Certbot并確保certbot命令可執(zhí)行:

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

接下來,通過以交互方式運(yùn)行以下命令為您的域名生成證書:

sudo certbot --nginx

最后,Certbot將自動(dòng)處理您證書的續(xù)訂。要測試它是否有效,請運(yùn)行以下命令:

sudo certbot renew --dry-run

如果一切順利,您應(yīng)該會(huì)看到 Congratulations, all simulated renewals succeeded… 消息。

現(xiàn)在,您應(yīng)該能夠通過HTTPS成功發(fā)送請求。

九、結(jié)論

本篇文章介紹了如何使用 NGINXGunicornUvicorn 來部署 FastAPI 應(yīng)用程序。FastAPI 是最流行的 Python Web 框架之一。它已成為部署機(jī)器學(xué)習(xí)驅(qū)動(dòng)的 Web 應(yīng)用程序的首選,因此你希望持續(xù)關(guān)注AI領(lǐng)域,并希望能做一定的應(yīng)用開發(fā)實(shí)踐,熟悉它還是挺有幫助的。

在這篇文章中您了解到:

  • 為什么以及何時(shí)應(yīng)該使用 FastAPI、NGINX、Gunicorn 和 Uvicorn。

  • 如何設(shè)置 Gunicorn+Uvicorn 作為 ASGI 服務(wù)器。

  • 如何使用Supervisor來運(yùn)行Gunicorn。

  • 如何使用 certbot 配置 NGINX 并生成免費(fèi)的 SSL 證書。

如果你對這篇文章感興趣,而且你想要了解更多關(guān)于AI領(lǐng)域的實(shí)戰(zhàn)技巧,可以關(guān)注「技術(shù)狂潮AI」公眾號(hào)。在這里,你可以看到最新最熱的AIGC領(lǐng)域的干貨文章和案例實(shí)戰(zhàn)教程。文章來源地址http://www.zghlxwxcb.cn/news/detail-745061.html

到了這里,關(guān)于FastAPI + NGINX + Gunicorn:一步一步教你部署一個(gè)高性能的Python網(wǎng)頁應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python 一步一步教你用pyglet制作漢諾塔游戲(續(xù))

    Python 一步一步教你用pyglet制作漢諾塔游戲(續(xù))

    目錄 漢諾塔游戲 7. 漢諾塔類 8. 移動(dòng)圓盤 9. 移動(dòng)演示 10. 遞歸問題 11. 任意展示 12. 鼠標(biāo)操作 漢諾塔(Tower of Hanoi),是一個(gè)源于印度古老傳說的益智玩具。這個(gè)傳說講述了大梵天創(chuàng)造世界的時(shí)候,他做了三根金剛石柱子,并在其中一根柱子上從下往上按照大小順序摞著64片黃

    2024年03月13日
    瀏覽(30)
  • Midjourney:一步一步教你如何使用 AI 繪畫 MJ

    Midjourney:一步一步教你如何使用 AI 繪畫 MJ

    一步一步如何使用 Midjourney 教程:教學(xué)怎么用 MJ? 原文:如何使用 Midjourney 教程 https://bysocket.com/saas-digital-marketing-channel/ Midjourney是一款使用文字描述來生成高質(zhì)量圖像的AI繪畫工具。這篇文章主要介紹了Midjourney及其用途,并針對Midjourney的使用提供了一些指南。該工具可以幫

    2023年04月21日
    瀏覽(25)
  • 文本轉(zhuǎn)語音-微軟Azure-一步一步教你從注冊到使用

    文本轉(zhuǎn)語音-微軟Azure-一步一步教你從注冊到使用

    牙叔教程 簡單易懂 他們的中文也許還行, 但是英文我試了都不滿意, 我再網(wǎng)上搜到的我認(rèn)為最好的是 但是丫真貴 Best Free Text To Speech Voice Reader | Speechify 現(xiàn)在的匯率是 139 × 6.91 = 960.49 一年一千塊, 好像還行哈, 但是沒卡呀, 擦, 比來比去, 還是微軟Azure性價(jià)比最高, 沒有微軟Azure的

    2024年02月07日
    瀏覽(27)
  • Python 一步一步教你用pyglet制作“彩色方塊連連看”游戲

    Python 一步一步教你用pyglet制作“彩色方塊連連看”游戲

    目錄 彩色方塊連連看 第一步 第二步 第三步 第四步 第五步 第六步 第七步 動(dòng)態(tài)效果展示 小結(jié) 本篇除了介紹怎樣用pyglet制作連連看游戲,還將介紹如果使用自定義庫colorlib,用它來描繪游戲中多種顏色的彩色方塊。自定義庫colorlib的由來,另請閱讀《python 教你如何創(chuàng)建一個(gè)自

    2024年04月08日
    瀏覽(55)
  • Python 一步一步教你用pyglet仿制鴻蒙系統(tǒng)里的時(shí)鐘

    Python 一步一步教你用pyglet仿制鴻蒙系統(tǒng)里的時(shí)鐘

    目錄 鴻蒙時(shí)鐘 1. 繪制圓盤 2. 創(chuàng)建表類 3. 繪制刻度 4. 刻度數(shù)值 5. 添加指針 6. 轉(zhuǎn)動(dòng)指針 7. 聯(lián)動(dòng)時(shí)間 8. 時(shí)鐘走動(dòng) 本篇將用python pyglet庫復(fù)刻華為手機(jī)鴻蒙系統(tǒng)鬧鐘程序的時(shí)鐘,先在上圖中抓取出時(shí)分秒針及刻度、表盤的顏色RGB值: bHour = (42, 43, 48, 255) bMinute = (70, 71, 75, 255) rSe

    2024年03月12日
    瀏覽(30)
  • Python 一步一步教你用pyglet制作“彩色方塊連連看”游戲(續(xù))

    Python 一步一步教你用pyglet制作“彩色方塊連連看”游戲(續(xù))

    上期講到相同的色塊連接,鏈接見:?Python 一步一步教你用pyglet制作“彩色方塊連連看”游戲-CSDN博客 續(xù)上期,接下來要實(shí)現(xiàn)相鄰方塊的連線: 首先來進(jìn)一步擴(kuò)展 行列的類: class RC: ? ? def __init__(self, r=0, c=0): ? ? ? ? self.r, self.c = r, c ? ? def __repr__(self): ? ? ? ? return f\\\'Rc

    2024年04月08日
    瀏覽(25)
  • Python 一步一步教你用pyglet制作可播放音樂的揚(yáng)聲器類

    Python 一步一步教你用pyglet制作可播放音樂的揚(yáng)聲器類

    目錄 揚(yáng)聲器類 1. 繪制喇叭 2. 揚(yáng)聲器類 3. 禁音狀態(tài)? 4. 設(shè)置狀態(tài) 5. 切換狀態(tài) 6. 播放音樂 本篇將教你用pyglet畫一個(gè)小喇叭,如上圖。這里要用到pyglety庫shapes模塊中的圓弧Arc和多邊形Pylygon畫出這個(gè)揚(yáng)聲器的圖片: Arc(x, y, radius, segments=None, angle=6.283185307179586, start_angle=0, closed=

    2024年03月10日
    瀏覽(36)
  • 一步一步教你如何使用 Visual Studio Code 編譯一段 C# 代碼

    一步一步教你如何使用 Visual Studio Code 編譯一段 C# 代碼

    以下是一步一步教你如何使用 Visual Studio Code 編寫使用 C# 語言輸出當(dāng)前日期和時(shí)間的代碼: 1、下載并安裝 .NET SDK。您可以從 Microsoft 官網(wǎng)下載并安裝它。 2、打開 Visual Studio Code,并安裝 C# 擴(kuò)展。您可以在 Visual Studio Code 中通過擴(kuò)展菜單安裝它。 3、打開 Visual Studio Code 中的文

    2024年02月11日
    瀏覽(34)
  • 【沐風(fēng)老師】一步一步教你在3dMax中進(jìn)行UVW貼圖和展開UVW的方法

    【沐風(fēng)老師】一步一步教你在3dMax中進(jìn)行UVW貼圖和展開UVW的方法

    將簡單或程序材質(zhì)應(yīng)用于對象并不難。但是當(dāng)表面需要在其上顯示某種紋理時(shí),它會(huì)變得更加復(fù)雜。任何紋理貼圖都放在材質(zhì)的 Diffuse 插槽中,但渲染的結(jié)果可能無法預(yù)測。這就是為什么我們需要了解 3DMAX 如何將紋理應(yīng)用于 3D 對象,什么是 UVW 貼圖,以及為什么要“展開”它

    2024年02月04日
    瀏覽(23)
  • 一步一步教你如何白嫖谷歌云Google Cloud服務(wù)器$300美金羊毛

    一步一步教你如何白嫖谷歌云Google Cloud服務(wù)器$300美金羊毛

    我們都知道,Depay(現(xiàn)在改名為Dupay了)卡平??梢杂糜谖⑿?,支付寶,美團(tuán)消費(fèi),直接用USDT做日常小額消費(fèi),還免收手續(xù)費(fèi),小額的話,這點(diǎn)還是很舒服的。 但其實(shí),Depay卡的用途遠(yuǎn)不止此,平常可以多挖掘挖掘。今天教大家如何用Depay卡白嫖谷歌云服務(wù)器。申請成功后隨即可

    2024年02月04日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包