温馨提示×

centos上flutter项目如何部署上线

小樊
37
2025-12-29 08:46:29
栏目: 智能运维

CentOS 上部署 Flutter 项目的实用方案

一、方案总览

  • CentOS 上,Flutter 项目常见上线形态有两类:部署 Web 静态站点(最简便、通用)与部署 Linux 桌面可执行程序(适合内网或受控终端)。前者通过 Nginx 托管静态文件即可对外服务;后者需准备运行环境、进程守护与反向代理。若需要移动端安装包,可在本地构建 APK/IPA 后分发,服务器侧不负责移动端打包。

二、方案一 Web 部署(推荐)

  • 构建产物
    • 在项目根目录执行:flutter build web,产物位于 build/web。如启用 Flutter Web,需先执行:flutter config --enable-web。
  • 服务器安装与配置 Nginx
    • 安装:sudo yum install -y nginx
    • 配置站点(/etc/nginx/conf.d/flutter_app.conf):
      server {
          listen 80;
          server_name your_domain_or_IP;
          root /path/to/build/web;
          index index.html;
      
          location / {
              try_files $uri $uri/ /index.html; # 支持前端路由
          }
      }
      
    • 启动与开机自启:sudo systemctl start nginx && sudo systemctl enable nginx
  • 防火墙放行
    • sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --reload
  • 访问验证
    • 浏览器访问:http://your_domain_or_IP
  • 可选 Docker 方式
    • Dockerfile(示例):
      FROM cirrusci/flutter:stable
      WORKDIR /app
      COPY . .
      RUN flutter pub get
      RUN flutter build web
      EXPOSE 8080
      CMD ["flutter", "run", "--release", "--web-port=8080", "--web-hostname=0.0.0.0"]
      
    • 构建与运行:docker build -t flutter_web_app . && docker run -d -p 8080:8080 flutter_web_app。

三、方案二 Linux 桌面可执行程序部署

  • 构建产物
    • 在项目根目录执行:flutter build linux,产物位于 build/linux
  • 运行与守护
    • 建议将可执行文件与资源放入统一目录(如 /opt/flutter_app),通过 systemd 管理:
      # /etc/systemd/system/flutter_app.service
      [Unit]
      Description=Flutter Linux App
      After=network.target
      
      [Service]
      Type=simple
      ExecStart=/opt/flutter_app/your_app
      WorkingDirectory=/opt/flutter_app
      Restart=always
      User=nobody
      Environment=DISPLAY=:0
      
      [Install]
      WantedBy=multi-user.target
      
    • 启用:sudo systemctl daemon-reload && sudo systemctl enable --now flutter_app
  • 反向代理与端口
    • 若应用内嵌 HTTP 服务(如 8080),可用 Nginx 反向代理:
      server {
          listen 80;
          server_name your_domain_or_IP;
          location / {
              proxy_pass http://127.0.0.1:8080;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
          }
      }
      
  • 依赖与兼容性
    • 如构建或运行报缺依赖,安装常见 GUI 依赖:sudo yum install -y gtk3-devel(Flutter Linux 渲染需要)。

四、移动端包构建与分发(服务器不涉及)

  • Android:在本地或 CI 环境执行 flutter build apk,得到 APK 后上传商店或内部分发。
  • iOS:必须在 macOS 上执行 flutter build ipa,服务器侧无法完成 iOS 打包。

五、常见问题与排查

  • 构建或运行报错缺少依赖:执行 flutter doctor 按提示补齐;Linux 桌面构建可安装 gtk3-devel 等依赖。
  • Nginx 访问不了:检查防火墙是否放行 80 端口(firewall-cmd --permanent --add-service=http && firewall-cmd --reload),并确认站点根目录指向 build/web
  • 前端路由刷新 404:Nginx 配置中加入 try_files $uri $uri/ /index.html;。
  • 容器方式无法启动:查看容器日志 docker logs <container_id>,确认端口映射与构建是否成功。

0