自托管
使用 NGINX 在自己的服务器上托管 Flet 应用程序。
有许多免费和廉价的云服务器层可供选择,例如 AWS、Oracle、Linode 等。
设置 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
。请根据您的设置替换 User
、Group
、WorkingDirectory
等。
[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,然后在浏览器中打开您的应用程序。