跳到主要内容

自托管

使用NGINX在自己的服务器上托管Flet应用程序。

目前有许多免费和廉价的云服务器可供选择,比如AWSOracleLinode等。

设置Flet环境

requirements.txt 和 virtualenv

创建 requirements.txt 文件,列出应用程序的依赖项。最少应包含 flet 模块:

flet>=0.2.4

创建一个虚拟环境并安装依赖项:

python -m venv .venv source .venv/bin/activate pip install -r requirements.txt

示例 main.py Flet 应用程序

import flet as ft
import os


# 将Flet路径设置为空字符串以在根URL下提供服务(例如,https://lizards.ai/)
# 或者设置为一个文件夹/路径,位于根URL下(例如,https://lizards.ai/ui/path)
DEFAULT_FLET_PATH = '' # 或者 'ui/path'
DEFAULT_FLET_PORT = 8502


def main(page: ft.Page):
page.title = "You Enjoy Mychatbot"
page.add(ft.Text("Reba put a stopper in the bottom of the tub"))


if __name__ == "__main__":
flet_path = os.getenv("FLET_PATH", DEFAULT_FLET_PATH)
flet_port = int(os.getenv("FLET_PORT", DEFAULT_FLET_PORT))
ft.app(name=flet_path, target=main, view=None, port=flet_port)

自动启动Flet服务器

创建systemd单元文件

使用systemd服务单元文件 flet.service 自动启动Flet服务器。

以下设置假设您的Flet应用程序脚本在 $HOME/flet-app/main.py 中定义。根据您的设置,替换 UserGroupWorkingDirectory 等信息。

[Unit]
Description=Flet Server
After=network.target

[Service]
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/flet-app
Environment="PATH=/home/ubuntu/flet-app/.venv/bin"
ExecStart=/home/ubuntu/flet-app/.venv/bin/python /home/ubuntu/flet-app/main.py

[Install]
WantedBy=multi-user.target

启用Flet服务器

cd /etc/systemd/system
sudo ln -s /home/ubuntu/flet-app/flet.service
sudo systemctl start flet
sudo systemctl enable flet
sudo systemctl status flet

NGINX代理设置

NGINX将代理Flet应用程序和WebSocket。

在您的 /etc/nginx/sites-available/* 配置文件中,根据需要更新路径和端口:

    location / {
proxy_pass http://127.0.0.1:8502/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

location /ws {
proxy_pass http://127.0.0.1:8502/ws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

就是这样!重新启动NGINX,然后在浏览器中打开您的应用程序。