如何快速高效地将CentOS上的Flutter项目部署上线?
- 内容介绍
- 文章标签
- 相关推荐
如果你正为在 CentOS 上让 Flutter 项目快速上线而头疼,别急!老实说,下面给你一份从基础开始、一步步直达生产环境的操作参考。让你省时省力,
先决条件 & 使用者痛点
常见痛点这方面,
- 不确定 CentOS 程序如何安装 Docker 与 Flutter SDK。
- 担心建立产物无法直接跑起来得手动配置 Nginx 或 systemd。按理说,
- 害怕出现依赖缺失、权限错误导致部署失败。
- 想一次性完成部署,避免后期频繁改动。
下面按顺序解决上述问题,让你一次性搞定。按理说,
1️⃣ 安装 Docker CE
Docker 是容器化部署最简捷方式。先把它装好:
# 添加官方仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker 包
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
常见问题:
-
"docker: command not found": 确认已执行
systemctl start docker并重启 shell。 -
"Failed to connect to bus": 确保程序已安装
yum-utils并更新至最新版。
2️⃣ 安装 Flutter SDK
Pain point: 不少人不知道从哪里下载稳定版 SDK。话说回来,以下步骤直接下载最新稳定版并解压到 /opt:
# 下载并解压
wget https://storage.googleapis.com/flutter/flutter_linux_3.19_stable.tar.xz -O /tmp/flutter.tar.xz
sudo tar xf /tmp/flutter.tar.xz -C /opt
# 添加到 PATH
echo 'export PATH=$PATH:/opt/flutter/bin' | sudo tee -a /etc/profile.d/flutter.sh
source /etc/profile.d/flutter.sh
# 验证安装
flutter doctor -v
Troubleshooting:
- "No matching release found": 检查 URL 是否正确;若国内网络慢,可用镜像站下载。
- "Permission denied": 确认解压目录权限正确。
3️⃣ 建立 Flutter Web
⚠️ 请先在本地完成所有依赖与测试,再推送到服务器;按理说,服务器只做建立与发布。
- 准备工作:确保项目已开启 Web 支持
# 在项目根目录开启 Web 支持
flutter config --enable-web
# 更新依赖项
flutter pub get
# 切换到项目根目录后执行:
flutter build web --release
# 产物位于 build/web/
# 如果要做桌面客户端:
flutter build linux --release
# 产物位于 build/linux/x64/release/
- ⚠️ 如果你只想跑 Web,一般不需要 Linux 建立步骤。按理说,这里仅供桌面版需求参考。
-
Tip: 使用 FVM 管理多版本 Flutter 时只需把命令前缀改成
fvm flutter ….
4️⃣ 部署静态文件至 Nginx
Tip: 如果你已有 Nginx,可以直接把 /var/www/flutter_web/ 设置为站点根目录; 如果没有,请先安装 Nginx:
# 安装 Nginx
sudo dnf install nginx -y # 或 sudo yum install nginx -y 对于旧版 CentOS
sudo systemctl start nginx
sudo systemctl enable nginx
上传产物 & 权限设置
bash
mkdir -p /var/www/flutter_web
rsync -avz ./build/web/ /var/www/flutter_web/
sudo chown -R nginx:nginx /var/www/flutter_web
sudo chmod -R 755 /var/www/flutter_web/
配置 Nginx 虚拟主机
bash
cat root /var/www/flutter_web;index index.html;location / {
try_files $uri $uri/ =404;add_header Cache-Control no-cache;}
# 若后台 API 在同一服务器但不同端口,可添加代理:
# location /api/ {
# proxy_pass http://127.0.0.1:8080;# }
} EOF
sudo nginx -t && sudo systemctl reload nginx
常见错误
| 错误 | 原因 | 修复 |
|---|---|---|
403 Forbidden |
权限不足 | chown + chmod |
502 Bad Gateway |
没有配置 proxy_pass 或目标服务未启动 | 检查 upstream 配置 |
404 Not Found |
根目录指向错误或文件不存在 | 确认 方法 |
5️⃣ 可选:创建 Systemd 服务
当你想让一个后端服务随程序启动时自动启动,可以用 systemd 来管理。示例以 Flask 为例,但也适用于任何 Node、Go 等后端框架。
Description=My Flask App – Demo Backend Service
After=network.target
User=nginx # 或你的普通使用者名 WorkingDirectory=/home/ubuntuuser/myflask_app ExecStart=/usr/bin/python3 app.py # 替换为实际启动命令 Restart=on-failure
WantedBy=multi-user.target
保存为 /etc/systemd/system/flask-demo.service接下来:
bash
sudo systemctl daemon-reload
sudo systemctl enable flask-demo.service
sudo systemctl start flask-demo.service
再看检查状态。
bash
systemctl status flask-demo.service
journalctl -u flask-demo.service --follow
提示如果是运行 Flutter 的本地服务器,一样可以用上面模板,只需修改 ExecStart。按理说,
6️⃣ 常见问题与排查技巧
-
Pain point: “建立成功但页面空白”——可能是 JS/CSS 方法错了。确认
正确,而且没有跨域限制。
systemctl enable SERVICE_NAME 是否成功,还有是否有依赖冲突。
/var/log/nginx/*log 或设置 logrotate。
python from flask_cors import CORS
app = Flask
CORS or use Nginx add_header Access-Control-Allow-Origin *.
💡 小结:一步到位的快速上线流程 🎉
- ✅ 安装 Docker → ✅ 安装 Flutter SDK → ✅ 建立 Release → ✅ 上传至 Nginx → ✅ 可选 Systemd 后台服务 → ✅ 验证访问 ✔️
如果你正为在 CentOS 上让 Flutter 项目快速上线而头疼,别急!老实说,下面给你一份从基础开始、一步步直达生产环境的操作参考。让你省时省力,
先决条件 & 使用者痛点
常见痛点这方面,
- 不确定 CentOS 程序如何安装 Docker 与 Flutter SDK。
- 担心建立产物无法直接跑起来得手动配置 Nginx 或 systemd。按理说,
- 害怕出现依赖缺失、权限错误导致部署失败。
- 想一次性完成部署,避免后期频繁改动。
下面按顺序解决上述问题,让你一次性搞定。按理说,
1️⃣ 安装 Docker CE
Docker 是容器化部署最简捷方式。先把它装好:
# 添加官方仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker 包
sudo yum install -y docker-ce docker-ce-cli containerd.io
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
常见问题:
-
"docker: command not found": 确认已执行
systemctl start docker并重启 shell。 -
"Failed to connect to bus": 确保程序已安装
yum-utils并更新至最新版。
2️⃣ 安装 Flutter SDK
Pain point: 不少人不知道从哪里下载稳定版 SDK。话说回来,以下步骤直接下载最新稳定版并解压到 /opt:
# 下载并解压
wget https://storage.googleapis.com/flutter/flutter_linux_3.19_stable.tar.xz -O /tmp/flutter.tar.xz
sudo tar xf /tmp/flutter.tar.xz -C /opt
# 添加到 PATH
echo 'export PATH=$PATH:/opt/flutter/bin' | sudo tee -a /etc/profile.d/flutter.sh
source /etc/profile.d/flutter.sh
# 验证安装
flutter doctor -v
Troubleshooting:
- "No matching release found": 检查 URL 是否正确;若国内网络慢,可用镜像站下载。
- "Permission denied": 确认解压目录权限正确。
3️⃣ 建立 Flutter Web
⚠️ 请先在本地完成所有依赖与测试,再推送到服务器;按理说,服务器只做建立与发布。
- 准备工作:确保项目已开启 Web 支持
# 在项目根目录开启 Web 支持
flutter config --enable-web
# 更新依赖项
flutter pub get
# 切换到项目根目录后执行:
flutter build web --release
# 产物位于 build/web/
# 如果要做桌面客户端:
flutter build linux --release
# 产物位于 build/linux/x64/release/
- ⚠️ 如果你只想跑 Web,一般不需要 Linux 建立步骤。按理说,这里仅供桌面版需求参考。
-
Tip: 使用 FVM 管理多版本 Flutter 时只需把命令前缀改成
fvm flutter ….
4️⃣ 部署静态文件至 Nginx
Tip: 如果你已有 Nginx,可以直接把 /var/www/flutter_web/ 设置为站点根目录; 如果没有,请先安装 Nginx:
# 安装 Nginx
sudo dnf install nginx -y # 或 sudo yum install nginx -y 对于旧版 CentOS
sudo systemctl start nginx
sudo systemctl enable nginx
上传产物 & 权限设置
bash
mkdir -p /var/www/flutter_web
rsync -avz ./build/web/ /var/www/flutter_web/
sudo chown -R nginx:nginx /var/www/flutter_web
sudo chmod -R 755 /var/www/flutter_web/
配置 Nginx 虚拟主机
bash
cat root /var/www/flutter_web;index index.html;location / {
try_files $uri $uri/ =404;add_header Cache-Control no-cache;}
# 若后台 API 在同一服务器但不同端口,可添加代理:
# location /api/ {
# proxy_pass http://127.0.0.1:8080;# }
} EOF
sudo nginx -t && sudo systemctl reload nginx
常见错误
| 错误 | 原因 | 修复 |
|---|---|---|
403 Forbidden |
权限不足 | chown + chmod |
502 Bad Gateway |
没有配置 proxy_pass 或目标服务未启动 | 检查 upstream 配置 |
404 Not Found |
根目录指向错误或文件不存在 | 确认 方法 |
5️⃣ 可选:创建 Systemd 服务
当你想让一个后端服务随程序启动时自动启动,可以用 systemd 来管理。示例以 Flask 为例,但也适用于任何 Node、Go 等后端框架。
Description=My Flask App – Demo Backend Service
After=network.target
User=nginx # 或你的普通使用者名 WorkingDirectory=/home/ubuntuuser/myflask_app ExecStart=/usr/bin/python3 app.py # 替换为实际启动命令 Restart=on-failure
WantedBy=multi-user.target
保存为 /etc/systemd/system/flask-demo.service接下来:
bash
sudo systemctl daemon-reload
sudo systemctl enable flask-demo.service
sudo systemctl start flask-demo.service
再看检查状态。
bash
systemctl status flask-demo.service
journalctl -u flask-demo.service --follow
提示如果是运行 Flutter 的本地服务器,一样可以用上面模板,只需修改 ExecStart。按理说,
6️⃣ 常见问题与排查技巧
-
Pain point: “建立成功但页面空白”——可能是 JS/CSS 方法错了。确认
正确,而且没有跨域限制。
systemctl enable SERVICE_NAME 是否成功,还有是否有依赖冲突。
/var/log/nginx/*log 或设置 logrotate。
python from flask_cors import CORS
app = Flask
CORS or use Nginx add_header Access-Control-Allow-Origin *.
💡 小结:一步到位的快速上线流程 🎉
- ✅ 安装 Docker → ✅ 安装 Flutter SDK → ✅ 建立 Release → ✅ 上传至 Nginx → ✅ 可选 Systemd 后台服务 → ✅ 验证访问 ✔️

