在 Debian 上部署 Flutter 的可行路径
- Linux 桌面应用:将 Flutter 应用编译为本地可执行文件,直接在 Debian 上运行或打包分发。
- Android 应用:在 Debian 上构建 APK 用于分发与安装(iOS 构建必须在 macOS 上完成,不在本方案范围)。
- Web 应用:将项目构建为静态站点,用 Nginx 托管在 Debian 服务器上对外服务。
一 环境准备
- 更新系统并安装基础依赖(桌面构建需要图形相关库;命令行构建可精简):
- Debian 11/12 常用依赖:
- 桌面构建:sudo apt-get install -y curl git unzip xz-utils zip libglu1-mesa clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc+±12-dev
- 命令行/CI:sudo apt-get install -y wget git cmake unzip
- 下载并解压 Flutter SDK(推荐放到 /opt/flutter 或 ~/flutter):
- 示例:tar -xf flutter_linux_*.tar.xz -C /opt && echo ‘export PATH=$PATH:/opt/flutter/bin’ >> ~/.bashrc && source ~/.bashrc
- 国内镜像加速(可选,提升 pub 与 SDK 下载速度):
- echo ‘export PUB_HOSTED_URL=https://mirrors.tuna.tsinghua.edu.cn/dart-pub’ >> ~/.bashrc
- echo ‘export FLUTTER_STORAGE_BASE_URL=https://mirrors.tuna.tsinghua.edu.cn/flutter’ >> ~/.bashrc
- 验证环境:flutter doctor(按提示补齐缺失组件)。
二 构建与运行 Linux 桌面应用
- 启用 Linux 桌面支持(首次需要):flutter config --enable-linux-desktop
- 创建或进入项目:flutter create my_app && cd my_app
- 运行与调试:flutter run -d linux
- 构建发行包(产物在 build/linux/x64/release/bundle/):flutter build linux
- 运行发行包:
- 可执行文件:./build/linux/x64/release/bundle/my_app
- 或直接运行脚本:./build/linux/x64/release/bundle/start-my_app.sh
- 无头/服务器场景提示:Flutter 桌面应用默认需要 X11/Wayland 图形环境;纯 CLI 场景建议改为构建 Web 或 Android 产物。
三 构建 Android APK 并部署到设备
- 准备环境:flutter doctor 检查 Android SDK/Platform-Tools 等组件;连接真机或配置模拟器。
- 生成签名密钥(仅首次发布需要):
- keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
- 构建发布 APK:flutter build apk --release
- 安装到设备:flutter install 或 adb install build/app/outputs/flutter-apk/app-release.apk
- 产物路径:build/app/outputs/flutter-apk/app-release.apk。
四 构建 Web 应用并用 Nginx 托管
- 构建 Web 产物:flutter build web --release(产物在 build/web/)
- 使用 Nginx 托管(示例配置片段):
- 将 build/web 内容复制到站点目录(如 /var/www/flutter_web)
- /etc/nginx/sites-available/flutter_web:
- server {
- listen 80;
- server_name your-domain.com;
- root /var/www/flutter_web; index index.html;
- location / { try_files $uri $uri/ /index.html; }
- }
- 启用站点并重启 Nginx:sudo ln -s /etc/nginx/sites-available/flutter_web /etc/nginx/sites-enabled && sudo systemctl reload nginx
- 访问服务器域名/IP 即可打开站点。
五 生产部署建议
- 使用 systemd 托管 Linux 桌面应用(示例 myapp.service):
- [Unit]
- Description=My Flutter Linux App
- After=network.target
- [Service]
- ExecStart=/opt/myapp/start-my_app.sh
- WorkingDirectory=/opt/myapp
- Restart=always
- User=myapp
- [Install]
- WantedBy=multi-user.target
- 启用:sudo systemctl daemon-reload && sudo systemctl enable --now myapp.service
- 使用 Docker 容器化(便于一致性与回滚):
- 桌面应用:将构建产物与启动脚本打入镜像,容器以 X11/Wayland 转发或 headless 方式运行(需宿主机图形环境或虚拟帧缓冲)。
- Web 应用:多阶段构建,Nginx 基础镜像 + 拷贝 build/web,暴露 80/443。
- 持续交付:在 GitHub Actions/GitLab CI 中执行 flutter build,产物推送到制品库或服务器,结合 Nginx/证书自动化 完成发布。