温馨提示×

Debian上Flutter应用的部署流程是怎样的

小樊
41
2025-12-30 00:17:49
栏目: 智能运维

Debian上Flutter应用的部署流程

一 准备环境

  • 更新系统并安装构建与图形依赖(64位系统):
    • sudo apt update && sudo apt upgrade -y
    • sudo apt install -y wget git cmake unzip libgl1-mesa-dev libgconf-2-4 libxkbcommon-x11-0 libxcursor1 libxdamage1 libxi6 libxtst6 libcups2 libasound2 libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good
  • 安装 Flutter SDK(示例为稳定版,可按需替换为最新版本链接):
    • mkdir -p /flutter
    • wget https://storage.googleapis.com/flutter-release/releases/2.10.4/flutter-linux-amd64-2.10.4.tar.xz
    • tar -xf flutter-linux-amd64-2.10.4.tar.xz -C /flutter
    • echo ‘export PATH=“$PATH:/flutter/bin”’ >> ~/.bashrc && source ~/.bashrc
  • 验证环境:flutter doctor(按需安装缺失组件)。

二 启用Linux桌面支持并构建

  • 创建或进入项目,启用 Linux 桌面支持(确保项目包含 linux 目标):
    • flutter create my_flutter_app && cd my_flutter_app
    • 在 pubspec.yaml 中添加:desktop: [linux]
    • flutter pub get
  • 构建 Linux 发行包(Release):flutter build linux
  • 产物路径:build/linux/x64/release/bundle/,其中包含可执行文件(与项目名同名)及所需资源。

三 打包为Debian安装包 .deb

  • 安装打包插件:flutter pub global activate flutter_build_debian
  • 在项目根目录创建 debian.yaml(示例):
    • flutter_app:
      • command: my_flutter_app
      • arch: amd64
      • parent: /opt/my_flutter_app
      • nonInteractive: false
  • 生成 .deb:flutter pub global run flutter_build_debian
  • 产物路径:build/debian/,如 my_flutter_app_1.0.0_amd64.deb。

四 在目标机器安装与启动

  • 传输安装包:scp build/debian/my_flutter_app_1.0.0_amd64.deb user@server_ip:/tmp
  • 安装与修复依赖:
    • sudo dpkg -i /tmp/my_flutter_app_1.0.0_amd64.deb
    • sudo apt --fix-broken install
  • 启动应用:/opt/my_flutter_app/my_flutter_app
  • 如需系统级自启,可创建 systemd 服务单元(示例):
    • sudo tee /etc/systemd/system/my_flutter_app.service >/dev/null <<‘EOF’ [Unit] Description=My Flutter App After=network.target

      [Service] ExecStart=/opt/my_flutter_app/my_flutter_app Restart=always User=myuser Environment=DISPLAY=:0

      [Install] WantedBy=multi-user.target EOF

    • sudo systemctl daemon-reload

    • sudo systemctl enable --now my_flutter_app。

五 可选方案

  • 容器化构建与运行(统一环境、便于CI/CD):
    • Dockerfile 示例:
      • FROM cirrusci/flutter:stable
      • WORKDIR /app
      • COPY . .
      • RUN flutter pub get
      • RUN flutter build linux
      • CMD [“/app/build/linux/x64/release/bundle/my_flutter_app”]
    • 构建与运行:
      • docker build -t my_flutter_app .
      • docker run -it --rm my_flutter_app
  • 部署为 Web 应用(若项目为 Web 目标):
    • 构建:flutter build web(产物在 build/web)
    • 以 Nginx 为例:
      • sudo apt install nginx
      • 配置 server { listen 80; root /path/to/build/web; index index.html; location / { try_files $uri $uri/ =404; } }
      • 启用站点并重启:sudo ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled && sudo nginx -t && sudo systemctl restart nginx。

0