跳到主要内容

自托管

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

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

设置 Flet 环境

requirements.txt 和 virtualenv

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

flet

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

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

示例 Flet 应用程序

import flet as ft

def main(page: ft.Page):
page.title = "我的 Flet 应用程序"
page.add(ft.Text("Hello, world!"))

if __name__ == "__main__":
ft.app(main)

Flet 应用程序将从根 URL 提供服务,但您可以通过设置 FLET_WEB_APP_PATH 环境变量来在根目录下提供服务,例如 /apps/myapp

默认情况下,Flet web 应用程序将在端口 8000 上运行,但您可以通过设置 FLET_SERVER_PORT 环境变量来更改端口。

完整的环境变量列表 由 web 应用程序支持。

自动启动 Flet 应用程序

创建 systemd 单元文件

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

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

[Unit]
Description=Flet App
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:8000/;
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:8000/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,然后在浏览器中打开您的应用程序。